In a recent HBR article (What Really Motivates Workers) it was revealed that workers are motivated less by the usual suspects (incentives, recognition, …) than we thought and that in fact progress in their work is the key driver of daily satisfaction. How can we take advantage of this in software development to crank up real and perceived progress, and keep workers happier on a daily basis?
First, it seems we’re an industry uniquely situated to take advantage of creating perceived progress. I don’t mean false progress, but with the real time metrics available such as compile errors, bug databases, unit tests passed or test runtime, we have the tools to demonstrate progress in several ways depending on the project. The trick may be to identify the ones that are most valuable to your product, and to keep some perspective on how much you emphasize them. If you keep cheering up your team by pointing to the diminishing bug list, you’ll have a hard time rallying them when a large dump of bugs comes in from new testing. Keep it focused on customer satisfaction and percent of code under testing.
Second, there are methodologies and tools for software engineering that support constant progress and prevent the kind of backslide that kills morale and motivation. Specifically, I’m thinking of agile methods that cut out time spent on exhaustive planning and requirement specifications that doesn’t feel like progress to the person writing it, and creates the opportunity for big negative progress when it turns out they’re misguided. Then tack on test driven development to allow constant, incremental additions while locking out the possibility of backsliding again, and continuous integration and deployment to keep your work rolling forward instead of halting and going back.
These are very pragmatic, and well tested methods that, used together, will hugely increase the number of days your team can go without a big backslide, adding incremental improvement or capability day in and day out. And, according to the article, this is a key driver of motivation. So in addition to the benefits we already knew about (faster results, less wasted time, better tested code, no ‘ocean boiling’ integration and release cycle) we can now say that agile methods keep your team happy and motivated.
What other techniques support constant progress?