The recent white paper Seven Steps to Quickly Develop Software that Delivers Customer Value suggests seven field-tested steps that can help organizations make the required changes to speed software to market.
Software changes must also be delivered continuously, with new features delivered as minimum viable products (MVPs), and fine-tuned over time.
Here's a summary of Brian Roche's thoughts on software development.
- Pair programming. Pair programming involves two developers working together at one machine, with one programmer (the “driver”) writing code while the other reviews it and considers its strategic architectural implications. The benefits are several: more solutions to a problem, more productive teams, and improved understanding of the overall context at the teams rotate.
- Continuous integration and delivery. The traditional approach of delivering and integrating code every 12 to 18 months just doesn’t work anymore. Continuous delivery and test-driven development enable developers to work in small batch sizes and deliver changes immediately to obtain fast customer feedback.
- Test-driven development. Testing processes need to occur earlier in the software development lifecycle and be executed more frequently. Instead, organizations should adopt a test-driven development approach, which involves first writing the test code that describes the expected behavior of the implementation, and then running that test.
- Balanced teams. A balanced team is a self-contained DevOps group that is interconnected with but independent of other groups in the organization. Its members, who rotate among various roles, use their different but complementary skills and perspectives to help each other reach a shared goal.
- Feedback. A culture of teamwork and a shared sense of empathy among team members are critical components of a DevOps team. Errors shouldn’t be just one person’s fault but everyone’s responsibility.
- Build-measure-learn with MVPs. This process involves building a minimum viable product, measuring its acceptance and use, and enhancing or adapting it as needed. This approach allows developers to build code in relatively small increments based on a hypothesis of the customer or user need.
- Eliminate waste. Cost is another reason that businesses need to use their development team’s time wisely. Limit developers’ meetings, let them switch tasks if they get stuck, and encourage face-to-face communication.