You ever notice how your level of enthusiasm can vary quite widely during various times of software development? It seems that I go through a number of phases that can vary quite drastically which also have a drastic effect on the quality and quantity of what I get done.
Here are some of my enthusiasm levels.
Inspired and Wired
This is that rare state when I have some bright eyed idea and I sit down think over the concept, kick out a design and start heads down coding to implement the code. For me this can be a fun project or some new idea how to solve an old problem more elegantly or more efficiently. When in this state I get totally immersed - I'm 'in the zone' and very little (short of going windsurfing maybe <g>) can get me out of it and even when something does I'm right back into it shortly after - distractions barely register. This state takes me over and while working I sometimes marvel in retrospect how I managed to get as much done as I did in a relatively short time span.
Everything else often becomes side lined or at least minimized to the bare essentials. Just get the 'obstructions' out of the way and then on with the wired task at hand. It can become highly addictive and I often barely notice that I've spent 12 hours plus at the keyboard.
This is the state everyone would love to be in in terms of creativity and just for the plain productivity it can afford. Living in the Now where that happens to be some abstract code project I'm working on. I write my best code here by a long shot and it usually comes out right the first time (which is not usually the case <g>).
But unfortunately - for me at least - this highly inspirational state happens only rarely. It usually occurs after some downtime or having been away from just heads down work for a while or when I'm in a "I've had enough of the day to day crap" mood. And off it goes.
By far the most common common state of enthusiasm for me is what I call the Rat Race. That sounds bad, but it really isn't. This a typical day where you deal with your day to coding tasks where you get a few new things done, but mostly deal with maintenance and refactoring tasks that are for the most part mundane. This typically involves dealing with support requests and fixing various bugs, and in the process cleaning up incidental code here and there plus possibly re-testing related scenarios.
This state sounds mundane - and it is - but it's clearly a necessary evil. This is what keeps everything moving smoothly and allows products to grow, keep customers happy. A lot gets done here too, but the growth and level of change is relatively slow and more predictable. The inspiration level is much lower, but this state can be maintained much more consistently and longer than the Inspired and Wired level.
I'm sure most of you can identify with the Pressure Cooker. You have several deadlines looming and you're constantly thinking about how the hell you're going to get all the shit you're supposed to be getting done finished. I suppose I'm lucky in that I don't end up here very often and often when I do it's due to my own procrastination and putting things off until the last minute and then having to cram loooong days with work that isn't necessarily enjoyable.
Bad as all that sounds, the pressure cooker can often be conducive to getting a lot of work done. Unlike when you're inspired though the work is often forced and so the quality frequently - for me - is not as high. For code this often means several additional paths through to clean up code, refactor etc. But nevertheless, under pressure I can be pretty productive, and certainly more productive than under Rat Race conditions. Pressure tends to focus the mind and I don't end up wasting time on often unessential side project related tasks.
So in a way I'm more and more forcing myself into this situation on purpose with procrastination. How's that for an excuse? For certain things it actually pays to be under time pressure or doing things at the last minute. For example, for conference related stuff it's actually best to do things as closely before conferences as possible so it's fresh in my mind when time comes to present topics.
From an emotional level though the Pressure Cooker takes its toll in restlessness, difficulty of turning off and going to sleep and a few other stress related symptoms. Not good for the physical body for sure, but yet I end up here more frequently than I have to. I'm working on normalizing between Rat Race and Pressure Cooker.
In a Rut
If there's been a prolonged time in the Pressure Cooker or there's been too much uninspired time continuously in the Rat Race I tend to get listless and end up having a hard time focusing on anything beyond the absolute necessary work in front of me. For coding this means I do almost only maintenance/refactoring work and if I do anything else it tends to be mechanical and often uninspired.
This by far my least productive state when I feel like I'm just going through the motions.
This state is often dangerous in that it can become very complacent for me. Since I work independently and often without any sort of deadlines it's easy to get stuck here and keep working on stuff that's not that important or worse yet get distracted while doing administrative work (email, looking up stuff, paying bills etc.) and getting off on a completely different tangent.
This is where I subliminally try to do anything to distract myself from work or get away from it. Take a lunch break for 2 hours, sit down and read a book instead of work, read an email click a Web link and research to the finest detail that CostCo ad that just arrived. You probably know it - complete distraction and no motivation at all to get back to work. The joy of it is gone.
For me this feeling comes on often when I have too many things to do and can't get excited about any of them. I end up working a little bit on everything, leaving the really difficult tasks for later and as a result getting very little done in the process.
Thankfully I don't end up in this state very often, but when it hits it's often not easy to get out of this rut.
Every once in a while it's really necessary to take a step back and put on the brakes. Software development and coding are inspirational as much as they are technical and to me at least it has many characteristics of art. I don't think I'd be doing what I do if it wasn't to some degree of this aspect. I also play music and one thing I've long ago learned is to never play when I'm not in the right frame of mind. If I'm distracted and play it's frustrating and nothing good comes out (literally). To a large degree this is also true of coding.
When my inspirational level is down and I'm 'just going through the motions' I get very little done and while some of it is necessary and gets me by with what I have to do, it's inefficient in terms of time and effort. So it really pays to refresh the mental state and come back to a more active inspirational level where there's some excitement or at least enjoyment in the job at hand.
I tend to reach the burnout stage every two years or so I think and I tend to take a few months "off" and get away. Since I am independent that doesn't mean no work at all hiding at a mountain top in meditation (although that sounds like fun!), since I still have to take care of business. But it does mean cutting back on commitments and reducing the amount of have to do work explicitly.
I'm there right now - I've taken off the summer so to speak and am hanging out in Europe in part to get away from house and hearth. While I'm gone the work environment is such that it's not conducive to work which makes for more of an incentive NOT to work. And that's the idea. It's not necessarily to turn off completely, but to remove the stress and drive for a while to have time to shut down the mind and NOT think about code and architecture all the time. For me it's mostly about clearing the mind and getting away from thinking about code or architectual problems all the time and instead allow the mind to go off in different directions for a while.
Heck I shouldn't be here writing this I suppose <g>...
For me the effects of down time - or rather the time after down time - can be quite remarkable. I tend to get back to work refreshed, full of enthusiasm and more importantly fresh ideas. All of this translates into better quality of work and job satisfaction and generally it'll last another two years until the next total meltdown occurs that requires another down time.
What about you?
So where do you fit? Can you identify your levels of excitement for the work you do? Do you have a chance to get away and 'take a break' mentally even if it just means a lighter or different work load and more importantly does it help you?