Agility in an individual represents strength, speed, and flexibility. Whether you’re thinking of software development, product research, or project management, these attributes are crucial for teams that want to create the highest-quality output possible with limited available resources in short time frames.
As you know, the philosophy of Agile Development is to produce working software as quickly as possible. Agile begins to fall apart as an individual developer or team starts to redefine and cheapen the definition of “working software.” You can always ask the question “does this software make any part of our business work more efficiently and effectively in this iteration?” If it does, then you have working software. Here are four critical lean tactics for agile teams to keep in mind as they work to create software that works for their business:
1. Focus on value
Your product should be providing well understood values to your business. Your entire team should understand these traits. If you are designing an application that makes quoting business faster, your first iteration must address at least one aspect of why your current business is too slow. If the value is found in more accurate quotes, then make sure each iteration is improving accuracy. Losing the focus on why your company decided to build new software is the fastest way to iterations that make no real progress.
2. Don’t accept bottlenecks, ever
If you understand the value of the application, then you will more likely prioritize and communicate better which will avoid long iterations that have become bottlenecks for other team members. Break your dependencies by focusing on the components your customer cares about the most. Commit to sophisticated wire frames if the GUI is where the value is. If improved integration is a core value, then there is no reason not to stub your API calls to start showing working system integrations immediately.
3. Pay attention to the domain experts
In the classic Lean manufacturing environment of a Toyota assembly line, any member of the team can stop the production line if he or she notices a problem. In a collaborative development environment, it is easy developers to gravitate to “vacuum mode” where their work plan and execution is done in a vacuum of communication, meaning there is none. Get your domain experts invested and give weight to their voices. The domain experts will keep your project on the right value track and save you from those iterations that are a complete waste of time.
4. Strive for perfection even when the process allows for mistakes
In Lean manufacturing, companies focus on eliminating mistakes. Mistakes waste resources. Agile on the surface appears to work against this tenet because work is divided into smaller chunks as failures are expected and smaller work loads allows for quicker adjustments. Agile does not mean that you can fail quickly to simply turn around and fail again just as quickly. Agile requires that each failure is analyzed and dissected and ultimately fixed. Each iteration should be treated as your teams best effort with all mistakes of prior iterations managed to improve the iteration you are working on now. Don’t accept anything less than your team’s best every single sprint. In manufacturing you reevaluate the design, revisit the requirements, and reengineer the machinery if necessary. Agile software development must address all of these with each failure as well, and in some cases, you may need to replace team members to avoid failing again.
Agile Development and Lean Manufacturing are complementary development strategies and similar in more ways than they are different. These lean principles have been in action for over 50 years in the automotive industry and can be used to improve the effectiveness of your agile teams starting today.
Author: John Davenport