A brief tale of software developer burnout:
Brandon sits down at his two year old HP workstation and scribbles his mouse across the plastic-laminate desktop. The twin monitors snap to attention and he logs in without thinking about it; finger memory taking over long ago. Visual Studio is already open, it’s been for the last month, because the project continues onward like warships of a 1984 Orwellian nightmare.
He’s worked at the same project for the last 11 months and management tells him the end is in sight. His inbox describes an alternate view:
Defect #234 -New- Wrong font color in IE 6
Defect #188 – Reopened- Pricing is incorrect
Brandon’s usually up beat, but he has seen nothing but build reports and defects for months. His stake-holders haven’t even been reviewing key features – they’re waiting for the magic release where all feature are included and everything works according to a document that some managers have signed.
Starting QA after 10 moths didn’t feel like a success. Nor does closing 30 defects in two weeks. And now, as the winter starts, he can only look forward to shipping the 50,000 line project on a cold weekend. It will feel good. Right? To be done with it. Right? Wash his hands. Move on. To the next…project…
This isn’t an unusual case. Even with supposed agile practices catching on, organizations like to hold scrums for the development team but the stake-holders choose to wait until it’s complete. Even with the idea of software being complete an oddity and undefinable end point. Yet, they’ll wait.
This outlook on software development has caused the most pain for the Brandon’s of the industry because there is a lack of incremental satisfaction.
Nassim Nicholas Taleb sites the idea of hedonic happiness in his book, the Black Swan, to examine the idea of hope in light of big singular rewards. Meaning, many small rewards have a much greater effect on our overall happiness then one or two big ones very far apart. This is called positive affect. Taleb’s example is financially driven, but excellent. Simply, a person will be happier making $100,000 a year as opposed to making $1,000,000 every ten years. The amount of tension and angst for those ten long years can not be recouped with the big payout – especially if it might be another ten years until it happens again. As humans, we’re simply not wired up like that.
This fits perfectly into the not so modern realm of software development that 90% of organizations participate in. Remember Brandon waited 11 months before a release. He waited 10 months until someone would even begin verifying his work. Therefore, there were 10 months of effort without any reward. If positive affect is indeed a true nature of humanity, then long development cycles are like a 30 story ledge that developers stand on crying week to week while looking at the cars below.
The Orwellian similitude’s carry on. The ruling “Party” of 1984 used doublespeek as a way to control the masses; simultaneously accepting as true two mutually contradictory beliefs. I’ve see this in places I’ve worked – and I’m sure I’m not alone. For example, the requirement is to be agile and to release all features at once. To do incremental work, but not test until all increments are complete. To look at iteration plans but not really care unless a feature might not make it at release day.
Are these contradictory? Indeed. Are they agile. Of course not. We don’t have to wait for a solution. It’s already been invented and bigger organizations can take advantage of it – if they will invest in a mindset change that iterations of the product and each one should be complete. It’s going to take more training and experience for a stakeholder to really understand that an iteration is planned to be a deployable piece of work and not the subgrouping of tasks on a Gantt chart.
I won’t belabor the incremental, agile, continuous integration points. The amount of literature and case studies is staggering. However, I’ll continue to make a case for the Brandon’s of the world. Give Brandon some wins. Schedule QA of the first iteration (even two iterations) of the project so that it’s in a deployable state. Then, and this is acrimonious to some, release it. Actually, physically release it. Then start the next set of features. Help our Brandon’s feel the little frequent successes that nature makes us crave and then watch the productivity of a motivated software team soar. Use positive affect to the advantage.
George Orwell’s 1984:
“To tell deliberate lies while genuinely believing in them, to forget any fact that has become inconvenient, and then, when it becomes necessary again, to draw it back from oblivion for just so long as it is needed, to deny the existence of objective reality and all the while to take account of the reality which one denies”