The software development life cycle is riddled with inefficiencies. As with any manufacturing process, these inefficiencies hamper productivity and ultimately erode an organization’s competitive advantage. We need to reassess the life cycle with the mindset that everything we do as a development team either adds value to the customer or creates waste. Our goal should be to optimize productivity: 100% waste-free production.
Improving software development productivity really boils down to the following four concepts (and this can lead to astonishing increases in productivity):
• Having a clear, actionable plan of attack
• Increasing code knowledge
• Reducing rework
• Reducing debugging
In our experience, we have found that applying the following concepts leads to astonishing increases in productivity.
Have a clear, actionable plan of attack
The more time a developer spends wondering which requirement or task to tackle next and how to address it, the less time he or she is actually performing productive, rewarding work—creative tasks that help the organization achieve its goals.
To keep developers focused on performing productive work, define tasks properly, have a system for distributing tasks, and assign tasks properly.
In software development, tasks are often quite nebulous: They are vaguely defined, and it is difficult for developers to determine where to start tackling them and how to proceed. To overcome this challenge, it’s essential to have someone (e.g., an architect or manager) with a good conceptual grasp of the application being developed. This person can take high-level requirements and translate them into more granular tasks that a developer can quickly understand and then implement.
When developers are assigned to work on smaller tasks (for example, work tasks that are scoped to be no greater than one day), as opposed to being assigned to participate in one large nebulous task, experience has shown that they become much more productive. Since the developers understand exactly where to start and what to do, they become much more efficient: Their tasks are attainable and progress is immediately recognized.