Someone told me that easiest way to 'destroy' a programmer is to prevent them from programming for a month or so. Is that correct? What should I do to make sure I stay in practice if I'm not in a position to program as part of my job?
I think the person you refer to may have mixed two different levels of knowledge/ability.
The first is general problem solving ability. This is not going to fade away, as others have explained with good examples. I myself had two breaks in my career as a software developer, once for a year, and the other was close to a year, during which I did practically no programming. I could come back to the profession without major problems after each of these.
However, as Chris put it, my knowledge of specific language/API features became "rusty". That is the other level, which is more short term knowledge, and it can indeed fade away fairly quickly (although IMHO not in a month - you would need several months to notice the difference).
Note though that these things often have a shorter half-life anyway - APIs change, preferred language idioms get obsolete and new ways come along, etc. Let's say you have several years of experience in language A, but nowadays you are programming exclusively in language B. Your skills in language A will inevitably get rusty over time. However, you will be able to dust them off fairly quickly.
As for the best way to "destroy" a programmer, I am sad to say there are well known, proven and (unfortunately to our industry) widely practiced methods:
- always push him/her to deliver results to unrealistic schedules
- demand regular unpaid overtime
- burden him/her with bureaucracy, e.g. demand that (s)he get approval from your boss' boss' boss for, and/or fill out lengthy documents before/after each code change
- reject any process/quality improvement idea of him/her with whatever excuse you can find (e.g. "if it ain't broken, don't fix it", or "this is just the latest fad, no need to take notice")
- initiate a personal bonus system within the team, overtly stating that the team has a fixed amount of total bonus allotted, so team members must compete against each other for it
- micromanage him/her, retaining the right to make every technical decision yourself by authority
- give him/her inadequate tools for the job (old PC, small monitor)
- cram him/her into tiny and noisy open office spaces, preferably together with totally unrelated but noisy people (e.g. sales/marketing)
If practiced consistently, in a few year's time these are almost guaranteed to make your developer(s) burn out, killing any desire and enthusiasm in them towards programming.
These are some that come to my mind - unfortunately there are more :-(((
You wouldn't completely forget how to program that quickly, but as with a lot of things in life - playing guitar, speaking a foreign language - if you don't practice on a daily (or weekly) basis you will become "rusty". How rusty will depend on a lot of factors - how long you'd been programming before, what type of person you are, what you were doing in the period where you weren't programming etc.
It will take you longer to recall things etc. and so you will be slower and less productive.
However, all is not lost. Getting back into practice will soon allow you to recall the skills you need.
Speaking from personal experience, no. From a combination of personal factors and professional assignments, I basically did not write a line of code from March 2008 through June 2009. It really is kind of like riding a bike -- first ride might not be great, kind of like the little apps I wrote that June -- but you will get back to where you were. And perhaps even become a better developer for taking the time off.
Unless you're relatively inexperienced you are still going to have the wiring that allows you to program. If I dropped out of programming for a month or so then I would be back to 100% in under a day. A year? Might take a week to get back into the "swing" or learn anything new.
Like Chris said, you can get "rusty" at things, and you might forget certain language particulars or patterns. However, relearning these will be much faster then if you had never used them before.
Regarding the interesting point of what is the best way to "destroy" a programmer, I would say that the simplest method is not allow them any growth or change. If I was basically writing the same thing all day for a year, without any diversity, it might make me want to join a road crew – just because it would be something different. That's why I contract a lot, it's a way to avoid monotony.
Yes, you can forget how to program a computer. I doubt you can ever forget the general problem solving skills that lie at the heart of computer programming, but you can forget the technical details of translating those skills into computer instructions.
This becomes readily apparent even in active programmers who've for whatever reason not used a language or toolset for a prolonged period. They'll have lost proficiency in using that language or toolset to the point where they're effectively no better at using it than a rank beginner. They might (depending on how long it's been, what they've been doing in the meantime, and personal factors like long term memory retention which differs between persons) be able to recover some or all of that knowledge in less time than someone would need to learn it from scratch, but they'll be initially as useless as someone who's never used that tool/language at all.
For example I've not used a Tandem terminal for 15 years now, and wouldn't be able to find my way around one if my life depended on it, let alone program NonStop/Cobol on it. But give me a user manual, some source code, and a language reference, and I'll probably be up to steam again in a few days, a week at most, where someone who's never used one before may need a month at least.
Speaking from experience, a programmer is not destroyed through lack of programming. You get incredibly rusty, morale decreases, and it takes time to get back in the groove, but a programmer is not destroyed in this manner. In fact, I would say it makes you stronger because you never ever want to be in that situation again.
In my particular scenario, I went a little over a year with minimal development work and it took a month or so to get back up to speed.
There is a very real danger of getting stuck in that scenario however. It's hard to explain in interviews that you haven't been programming recently.
A month or so? In no way.
I regularly used to take one month - 6 weeks breaks whilst I was contracting and noticed no negative effect - the ramp up time on new projects was the usual in the next contract - that being a couple of days and mostly settling into the team, finding the coffee machine, getting logins etc.
In fact it was probably entirely positive as it allowed me to recharge, read a book or three, take a holiday, and completely switch off for a while.
Sure if you take a year or two out, or get promoted into managerial roles, then yes, of course you'll start to lose the technical edge.
Agree with the various statements broadly, but disagree in terms of degree. I've stopped programming for a few years before (to travel around the world; try to be a writer) and the amount of decay was substantial. Yes, you get back to where you were, but the word 'rusty' doesn't really cover what happens. The best way to recover, I've found, is to build a hobby project, soup to nuts: nobody sees you taking your baby steps, and you have to refresh all your skills in the course of doing it.
I like the comment by @ok about destroying a programmer by not letting her grow or change, and would add only that this implies that the pressure comes from outside. I've seen much greater destruction completely self-generated: learn a skill set that gets you some job, then just sort of cruise along, working your tiny niche. (Easy to do this in defense.) When layoffs come these people often don't fare well when they're back in the scrum of it.
It may drive them a little nuts if they're compulsive. Losing your job would suck.
Reminds me of the wive's tale about muscle turning to fat after you quit lifting weights (Unfortunately there are easier ways to get fat.).
It would take some time to get back up to speed, but would probably surpass a novice very quickly. They did this study for a weightlifting machine where a subject put on 40 pounds of muscle in a few months. They didn't mention the person was a professional bodybuilder who had been in an automobile accident and atrophied considerably. Throw in some secret workouts and choice chemicals and you're back to your old self in no time.
How knows, they may end up well rested. Stewart Copeland gave up the drums for 10 years and then went back on tour with the Police.
I've been reading through this thread and I realize I was suffering the same problem as many programmers does? I'm sure, the one who puts this topic is also facing this problem, however he would not ask this question if he's not, :)
Well in my case, I'm working as a corporate information person in our company, my work here is not related to my field which is software development such as Java SE,Visual Basic, Mysql, IReport etc.. I almost stop programming for almost 2 years.. then I came to realize that i want to go back to developing software because its my passion, it's what I've worked so hard during my college days.
Suddenly, I can manage to create the program. But! not as good as I was before, maybe because I lack practice, programs that are simple to me before were complicated to me now, so I'm planning on getting back to basics. Just as before to familiarize things and practice my rusty skills and get back to business.
How long will it takes for me? well I don't know,? maybe? If I put pressure on myself to speed up my career I may get back to where I was in software development just like the old times or even better. All we need is an opportunity to get back. To all those facing the same scenario as mine,
don't lose hope.
in our profession. We know to ourselves how good are we before or now, and no one can take that away from us. "Once a Programmer, Always a Programmer"