In part one, I approached the question backwards by describing seven motivational anti-patterns.
Now I’ll focus on the positive and list some of the things that I find most motivating as a developer.
In no particular order…
- Time in the Zone – This is like crack cocaine for me and I don’t get to experience it nearly enough. It is when I am so absorbed in my work that time flies by and I suddenly realize that 4 hours have gone by when it only felt like 10 minutes. It usually occurs when I feel totally engaged in a problem with highly challenging tasks that require skills that I feel very competent in.
- Solving the Mystery – Debugging is one of my favorite activities. When I get a really tricky problem to sink my teeth into, I tend to anthropomorphize it into a living foe and then start taunting and swearing at it under my breath. I’ve even been known to do a little touch down dance after emerging victorious from particularly long debugging session.
- Finding Creative Alternatives – I love being confronted with ‘impossible’ technical or logistical problems because they are almost always surmountable by taking several steps back and brainstorming completely different approaches to the problem. There have been a few times where I’ve felt like a zen master for having side stepped a massively difficult technical problem by simply rearranging the workflow on the screen or by eliminating the need for the feature altogether and satisfying the underlying requirements in other ways instead.
- Eliminating Tediousness - I have no patience for tedious manual processes myself, so I find it very rewarding whenever I have been able to eliminate tedium from other people’s work days through the software I help create.
- Simplifying the Complex – For some reason I find it really satisfying to reduce the number of lines of code in a project by rigorously applying the DRY principle and then making it infinitely more readable through refactoring and using thoughtful naming conventions. I also love reducing the number of clicks that a user is required to make in the user interface.
- Uniting in Purpose – It is way too common in the industry to either work in virtual isolation (even when on a team) or actually work against each other. Nothing kills productivity faster than wasting time playing the blame game or falling into the ‘its not my problem’ trap. There have been a few times (usually spurred by crazy deadlines) when I’ve felt like I bonded with a group because we all truly shared a common goal and we all felt collective ownership of the end product. It’s difficult to reproduce all the ingredients that led to this group dynamic, but I can tell you that it was a true pleasure to experience and very highly motivating.
- Receiving the Occasional Spousal Peace-Making Gift – I’ll throw in at least one superficial motivator to round off the list. Sometimes the spousal unit gets really pissed off when I have to work late or when work commitments override personal commitments. Those are the times when a simple gift certificate from the boss for a fancy dinner and night out on the town really come in handy. It’s flat out bribery, but highly effective. Afterall, when the wife is happy, then everyone is happy.
Oh…and I also find it very motivating whenever I get a $100 worth of free programming books (hint…hint).