The Technology Cliff: How Time Off From Programming Affects Your Chops

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]

Start Small, Get Big
Growth Secrets for Self-Funded Startups. It'll Change Your Life.
What you get for signing up:
  • A 170-page ebook collecting my best startup articles from the past 5 years
  • Previously unpublished startup-related screencasts
  • Exclusive revenue-growing techniques I don't publish on this blog
"The ideas and information Rob provides should be required reading for anyone that wants to create a successful business on the web." ~ Jeff Lewis
Startups for the Rest of Us...
If you're trying to grow your startup you've come to the right place. I'm a serial web entrepreneur here to share what I've learned in my 11 years as a self-funded startup founder. Luckily several thousand people have decided to stick around and join the conversation.

For more on why you should read this blog, go here.


#1 MattyJ on 05.15.08 at 9:30 pm

“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.”

I know VB6 programmers who did *not* take 4 years off and still can’t [redacted. People know where I live.] Ha ha.

I’m a technical, non-programmer guy that lives and dies by my knowledge of tools and just taking a year off from administering, say, a source control tool can kill someone in this line of work.

I find that you retain all the crazy workarounds to bugs and mis-placed menu items and it takes a while to work those out of your system when such things have been changed or fixed.

Either because I’m awesome or because I’m an idiot, I routinely download demo versions of tools I have no intention of ever using or supporting, because you just never know when you’ll be called upon to have some ‘expert’ knowledge on something.

#2 neil on 05.15.08 at 10:20 pm

Interesting that after 2yrs off you “only” took 6mths to get back up to speed. I’d like to know how many hours you were putting in though to get there? Were you coding .Net all day? So say 8hrs a day 5 days a week, or were there more hours in the evening and weekend?

For myself I find that I’m working on lots of small tasks/projects that can be across versions, plus having to do analysis / managment / client talking. So this slows me down (considerably) as my day (life!) is very disjointed.

Be interesting to hear your ‘routine’ and the hours involved.

#3 Rob on 05.15.08 at 10:25 pm

@Neil – When I returned to coding I hit it with a vengeance. I was in research and prototype mode 2 days a week so that allowed me to explore the new technologies in-depth, and then I was coding hard on a real project a solid 8 per day for the other 3 days.

It amounted to about 35 hours per week of solid coding – very few meetings or distractions. The fact that I had those research days in addition to building the project really helped out.

#4 Matt on 05.15.08 at 10:35 pm

I’ve noticed this even when I’m still actively coding if I switch platforms or stacks and then try to switch back after a while. I did server software for 2 years and then came back to web apps and *so effing much* had happened in that two years that I had tech whiplash.

#5 neil on 05.15.08 at 11:17 pm

Wow, that’s great news! – thanks. I was expecting 60 to 80 hr weeks there, with no other life left. I like the part of 2 days research and then hit the code hard for 3 x 8.

It’d be hard to do that in an office environment with a team I’d think though. But it does show how if you get your head down to a task and focus what you can acheive in a normal working week.

#6 Raju on 05.16.08 at 8:31 am

Good article, and I wholeheartedly agree. I find myself struggling even after 2-3 weeks of gaps, let alone 2 years. Though I think you can take this a bit further, and apply this to a technology as well. For ex. if you were doing .Net (C#) development, and stepped away to pursue Ruby for a while, getting your feet wet with C# would take some time.

#7 Jon Limjap on 05.16.08 at 11:01 am

I guess this is a reminder for devs to, for when they move to management roles, they remain updated in new technology, even just toy-coding with new stuff at least a few hours a week. Otherwise the rust just builds.

#8 JeanHuguesRobert on 05.16.08 at 8:31 pm

Programming is about knowledge, modelization and coding.

I believe that the lack of practice affects coding mostly.

Because experience tells you that you need to put more energy in modelization, and that is a lesson that you do not forget, whereas lack of practice of programming will always reduce your coding agility.

To a large extend the increased experience about modelization compensate the lack of coding agility, but a little practice is a must.

To put it differently: Experience is about your potential, whereas Practice is about your current ability.

The Knowledge aspect, about new fashionable technology, is the one that suffer most when you don’t practice at all, but with a lot of Experience you discover that the same concepts reappears with different names.

I believe that over the last 20 years the two significant programming “news” were 1/ Object Oriented Programming and 2/ Cloud computing.

Not so much to master, isn’t it?

#9 old fart on 05.18.08 at 5:30 am

Ha! That’s you you get for subscribing to flavor of the week programming. Go work with some real languages that have actually stood the test of time and don’t need a market-based forced obsolencene every 4 years.

#10 Rob on 05.19.08 at 8:48 am

@O.F. – I definitely don’t want to get into a discussion about what constitutes a “real language.” But realize just because something doesn’t change doesn’t mean it’s reached perfection. It may just mean that people have lost interest.

#11 Response to ‘Two Flaws With “Time Off From Programming”‘ | Software by Rob on 05.24.08 at 3:53 pm

[…] Giles Bowkett published a post titled Two Flaws With “Time Off From Programming” that disputes some of the thoughts in my recent article The Technology Cliff: How Time Off From Programming Affects Your Chops. […]

#12 Devjargon on 06.12.08 at 12:53 pm

After an extended hiatus, the best way for me to get back into the programming mindset is just to code. Hard to believe isn’t it. It isn’t exactly like getting back on a bike though, things don’t just come rushing back to you.

After a long break from programming it generally takes me between 1 week and 3 weeks to get fully immersed in programming practices and back to my usual coding ways.

#13 fred on 01.12.09 at 2:10 pm

I took 6 years off. Some things it was hard to get back, others were no problem. Since I’ve been back, I’ve picked up one new language – PHP. The ability to Google any problem you encounter definitely makes it easier. There were still a lot of little problems in the environment that interfered with my productivity for awhile. I think that the “cliff” is also a sign that there is something wrong your programming environment. Things are more complicated than they need to be.
Certainly, coming back has made me question the need to write in a lower-level language like java. There are just way more ‘gotchas’ in a language like that and just to get started requires a huge amount of knowledge. OTOH, databases haven’t really changed much, Javascript is pretty much the same, and PHP is pretty easy to be productive in.