Driving Development Velocity

Driving Development Velocity

Velocity is key. Whether racing your competitors to market (in commercial environments) or trying to outpace the threat (in defense), delivering high-quality software at speed is critical. There are three key areas to optimize when tuning your team for velocity.

Clearly Defining the Objective

The first task that must be accomplished when optimizing a team for velocity, is to create a culture where goals and priorities are clearly defined, articulated, and documented. Irrespective of the development style (Agile, Scrum, Kanban, SAFe, etc.) there must be a clear goal. The goal must be conveyed concisely, in a manner that everyone on the team can articulate. The objective of a MVP or new feature must be so clear, that it will be easy to identify feature-creep. The most junior developers must be able to discern if the work they are performing moves the team closer to the goal or is ancillary to the goal.

Take time to plan. What is often overlooked is considering the second and third-order consequences of approaching an objective. It is fine to state what an MVP should do, but there must be thought put into understanding what work that implies. To understand the impact of the defined objective is to understand the work it will take to achieve it. This exercise will often uncover unintended work, features, or breaking changes that magnify the scope of the proposed work.

Designing the Right Team

When goals are clearly defined, the skills required to achieve the goals will have also been made clear. Design a team, just as one would engineer a machine, to achieve the goal. Use the mix of talents and personalities that best suits the problem at hand. Be willing to break old teams apart and put them back together, being careful to avoid biases. For instance, bring in the right mix of cybersecurity, operations, and developers that best understand the features that need to be implemented vs. relying on functionally aligned teams to cross-manage priorities and communication. This type of highly malleable management structure will improve quality, communications, and the speed at which you can execute.

Balancing Technical Debt and Technical Capital

In “Frequently Forgotten Fundamental Facts about Software Engineering,” author Robert L. Glass notes:

Maintenance typically consumes about 40% to 80% (60% average) of software costs. Therefore, it is probably the most important life cycle phase. Enhancement is responsible for roughly 60% of software maintenance costs. Error correction is roughly 17%. So, software maintenance is largely about adding new capability to old software, not about fixing it. Most software development tasks and software maintenance tasks are the same—except for the additional maintenance task of “understanding the existing product."

That said, it is acceptable to cash in some technical capital when a high-priority, short-turn task may demand it (such as fixing a zero-day flaw). But even then, the team must document a follow-on task to pay off that debt.

Conclusion

Developing relevant, high-quality software is about achieving velocity without sacrificing quality by a cross-functional team focused on the same goal.



John Far​rier
AUTHOR

John Far​rier

Chief Executive Officer

CEO, Hellebore Consulting Group. John has over 20 years of experience in building software for DoD organizations, leading organizational change, and building strong cultures.

Like what you hear?

Join forces with Hellebore today!

Contact Us