Building Software at a Sustainable Pace
Darryl Snow
Digital product leader helping software teams deliver value sooner ☆ Facilitator ☆ Coach ☆ Speaker
This post was originally published on the VMware Tanzu Blog on 12 July, 2023. I'm republishing an edited version here for preservation now that VMware has been acquired by Broadcom. I should disclose that at the time of writing, I was in a sales role in Tanzu Labs (formerly Pivotal Labs) and the article went through an editing process managed by Tanzu marketing, although I continue to hold the opinions and support the points laid out in the article.
In software development, maintaining a sustainable pace is crucial for success. It enables teams with the ability to continuously deliver value without stopping, and in regards to future predictability, we can accurately estimate when that value can be delivered. In this post, I'll explore why a sustainable pace is desirable, the factors that can impact development speed, and the proven practices to keep the rhythm going.
Why a Sustainable Pace Matters
Software development is often an expensive endeavor. Sponsors and investors want to know when the software will be "finished" and what return they can expect on their investment. Other stakeholders—marketing, customer relations, people working on downstream systems—may also be impacted by release dates, and therefore might put pressure on a delivery team to commit to timelines and deadlines. However, estimating delivery dates based on some assumption about the pace of development is challenging due to the unpredictable nature of building software. Each application is unique, possibly involving unknown integrations and supporting new business processes. What’s more, each team building those applications is unique, composed of different individuals with their own skills and characteristics. The pace of development can therefore vary significantly. On top of all that, we humans are generally bad at predicting how long something will take to do.
Then there’s the factor of human cost—people under delivery pressure risk burnout as they try to accelerate the pace of delivery when approaching deadlines. This may impact motivation and productivity, and often results in a deceleration following the deadline. It may even lead to team attrition which can further increase volatility.
Factors Impacting Development Pace
The individuals involved in software development introduce complexity that can disrupt the pace. People work and learn at different speeds and have different working habits and communication styles. Additionally, personal factors such as vacations, stress, and motivation can affect productivity.
Building great software involves a great deal of communication and decision-making between individuals. Decisions about what and how to build, in what order, how to validate/test/release, etc. Communication and decision-making processes can also slow down or cause volatility in the pace of development, due to delays and misunderstandings. The following are some issues that affect development efficiency:
领英推荐
Practices that I've Seen Work in Achieving a Sustainable Pace
I was lucky to benefit from the 40+ years of global experience at Pivotal Labs, which learned and established proven practices to create a sustainable delivery pace. Those practices focus on collaboration, communication, and efficient decision-making. For example:
A Real Example
In Singapore, Labs worked with an enterprise customer who consistently faced delays in their software delivery and missed deadlines, leading to anxiety and ultimately mistrust between delivery teams and stakeholders. When a team working on a critical application had failed to deliver a new product in 18 months, the customer engaged us for a period of 4 months with a specific goal to increase the delivery cadence and predictability. By applying each of the practices mentioned above, we were able to release our first MVP to production within 8 weeks of starting development, and were consistently pushing new features to production multiple times per week for the remainder of the engagement, reducing overall lead time for new features to around 30 days. We were able to estimate deliveries for major releases for the product over the subsequent months that were accurate within days! And best of all, throughout this journey our delivery team members left work at the same time each day and each was energized and motivated to continue.
In Conclusion
Maintaining a sustainable pace of development is essential for successful software delivery. By identifying factors that impact delivery volatility, reflecting on team performance, and adopting proven practices, teams can optimize their workflow and achieve a predictable rhythm. This reflection could be in the form of a retrospective or value stream map to identify potential issues, prioritize them, and ideate mitigating actions for the team to take.