I received an email the other day asking how long it took to get my coding chops back when I moved from management back to development. The author asked:
Once you adopted your â€˜Write Code’ mantra, how difficult was it to reverse the â€˜management lobotomy’ (an excuse a prior manager had when he no longer could provide detailed technical value). Did you find yourself struggling to get back into â€˜for loops’, â€˜if statements’, â€˜datasets’, and the like?
Allow me to answer this simple question with a story only moderately related to software development.
I’ve played the guitar since college. I’ve played in several bands, written a few dozen songs, and performed in front of tens of people (not a typo). I haven’t played seriously in almost 4 years, but I can still pick up a guitar and sound pretty good. That’s the thing with the guitar – it’s easy to play; it’s hard to be good (sounds a bit like writing software).
If you compare my proficiency today with the “me” of 5 years ago, we are worlds apart. Five years ago I played at least an hour a day, and often practiced with other musicians. Playing the guitar every day has an amazing effect: the scent of the wood becomes tantalizing, the tone of your playing becomes warmer, strumming and picking becomes effortless, and your muscle memory allows you to play difficult pieces with no conscious thought. You begin to feel tied to your instrument, as if it’s an extension of your body instead of a big piece of wood and strings. It’s almost as if the guitar plays itself.
But these days it’s a struggle. My fingers and wrist hurt after about 5 minutes, my strumming is stiff, and my fret-hand feels like it has arthritis. But even as far as I’ve fallen, I could get back to my glory days with about 8 weeks of daily playing.
The similarities between guitar playing and coding are obvious so I’m not going to discuss them here. It’s one of the differences that I think is important: not playing the guitar for 4 years means you lose muscle memory and a few songs, but leaving programming for 4 years is like a death sentence to your technical knowledge. Not because you’ll forget what an if statement is, but because programming languages move so quickly that 4 years could include 2 or 3 new versions of your language. Think of a VB6 developer who took 4 years off between 2001 and 2005 and tried to pick up .NET 2.0 based on his existing VB6 knowledge. We still put DLLs in System32, right?
Returning to the guitar after 4 years is a lot like going back to programming after 4 months…all you’ve lost is muscle memory. But return to programming from management after 4 years and you’ve lost something else: first-hand knowledge of the new technology that’s released (seemingly) every few months. There’s a point around 12-18 months where returning to coding becomes exponentially more difficult.
This is good to know if you’re approaching the point where your technical skills are about to fall a full version behind. Realize you’re falling off a technology cliff that you will have to scale if you ever decide to code again.
The Real Answer
Back to the original question: the first time I returned to development was after a 7-month management hiatus, and it took 3-4 weeks to get back to full speed.
The second time was noticeably worse; I was a non-coding technical lead for nearly 2 years. When I emerged from my cave I was almost two .NET Framework releases behind, and not only did I face getting up to speed with new language features like Generics and LINQ, I ‘d missed out on a slew of new ASP.NET Controls, and concepts like ORM and MVC had started their rapid move to the forefront of the .NET development community.
As expected, I got back to full-speed coding within 6 weeks, but it was at least 6 months before I climbed back up the cliff.
[tags]programming, management, guitar[/tags]