If you’ve ever been to a teambuilding workshop, studied organisational psychology, or attended a leadership programme, you might’ve heard about Tuckman’s stages of group development. These are forming, storming, norming, performing, in that order.
Reflecting on my experience delving into other languages I found that Tuckman’s four stages quite accurately describe my journeys thusfar into new programming language.
Here’s my interpretation:
Forming - Becoming familiar with the syntax, design patterns, and build steps. Things look good on paper and you are excited by the new features and opportunities the language brings to the table. As the Wikipedia page on Tuckman’s stages says, “this is a comfortable stage to be in, but the avoidance of conflict and threat means that not much actually gets done”.
Storming - You’ve started writing code. Not just HelloWorld examples, but something useful. Things are progressing reasonably well, then you hit a wall. You have to implement a piece of critical business logic but the implementation of this newfangled language makes you queasy and uncomfortable. If it is perceived as a dealbreaker, there is a huge temptation to give up and go back to the language you’re comfortable with. Again from Wikipedia, “the maturity of some team members usually determines whether the team will ever move out of this stage.” In this case, it’s your determination to accept new paradigms and let go of old ones that will determine whether you pass through this stage. As unpleasant as it is, “the storming stage is necessary to the growth of the team”, and to your mastery of the new language.
Norming - This is where the pin drops. Things start to click, and the design patterns that hitherto felt so foreign and even insulting to your old ways start to feel natural and productive. “In this stage, all team members take the responsibility and have the ambition to work for the success of the team’s goals.”
Performing - You own the language, patterns flow from your fingertips naturally and without resistance. This is the stage of competency and productivity. “The team members are now competent, autonomous and able to handle the decision-making process without supervision”
So, what’s the conclusion here? I suppose simply that everything happens in stages. No matter how unfamiliar or strange something appears at first, you can have confidence that it is a natural predisposition towards something new and that there are building blocks, steps, to go through in order to reach mastery. Of course these steps could be applied to virtually anything, not just languages.
I felt encouraged by drawing the association, so I thought I should share it.