How to Achieve More Predictable Software Delivery Outcomes
Software development is a major economic driver for most tech companies. Yet disconnects between software engineering and other parts of an organization are commonplace. The engineering team’s work can be opaque, while the business side of an organization can be in the dark about the challenges and needs of the engineering team. When organizations are siloed like this, it’s no surprise that as many as 57 percent of software initiatives are completed late, and 47 percent come in over budget according to a 2017 PMI Pulse of the Profession research study. When a software project doesn’t meet expectations, it is a recipe for bad feelings and unhelpful finger-pointing that can derail a whole organization.
The key to overcoming these odds is to have open and clear communication among teams to ensure everyone is on the same page, resulting in the predictability of software initiatives so that they meet the expectations of all stakeholders.
Predictability Is a Social Contract
Predictability is a social contract between the business side of an organization and the engineering team. This social contract represents the quality of the relationship between the two teams. The engineering team respects the commitments made to deliver value to customers while the business side respects the focus needed to deliver the product and this allows the organization to be able to reliably plan around each other and trust each other. Maintaining this kind of social contract takes constant effort and clear communication. Predictability is always a work in progress—a garden that needs tending to bear fruit.
Predicting Outcomes: The Forecasting Equation
To try to maintain predictability, we use a software forecasting equation to determine possible outcomes:
While this is an oversimplification of the process, it does illustrate exactly how technology organizations work together to deliver outcomes.
“Product” in this context represents all of the planned initiatives that drive value. Often, organizations will have a deep backlog of valuable things to work on, and the rate at which they are delivered represents how much value you can deliver in a set amount of time.
If “Product” represents the work to be done, “Engineering” represents the rate at which you’re able to deliver that value. Engineering effort often takes two main forms: Delivering new features and maintaining existing ones. Both need to be done to maintain the value delivery to customers.
“Risk” is a weighting factor that affects how you’re able to deliver that value. The risk could stem from your ability to ship a new feature, or it could stem from poorly defined requirements. Both types of risk can really impact your customers. Identifying and understanding risk is one of the main parts of the development process that’s missed. It’s a continuous process of evaluating what’s being defined and created and course correcting. This constant tending is key to building a predictable process.
Tend Your Predictability Garden
Engineering leaders need to constantly assess where their team is at to establish and maintain predictability across the organization. Alignment is a good place to start. For example, are the engineering team’s goals aligned with customer value? Do key performance indicators (KPIs) track to value delivery? Do engineering team KPIs map to KPIs for the overall business? By working to maintain alignment across the organization, engineering leaders can enable predictable outcomes.
A key factor in good outcomes is making sure your team is set up to succeed. Engineering team members require space to execute and need leadership that can build an atmosphere that prevents employee burnout. Leaders also need to aggressively triage demands on the team’s time to limit disruptions, and they need to over-communicate project status and constantly set expectations for product delivery.
Another key strategy for maintaining predictability is to manage expectations with data. The engineering team’s progress can be hard for those outside the company to comprehend. By using data and consistently communicating it, engineering team leaders can help educate others in the organization and build understanding and empathy. Data can be used to illustrate progress toward outcomes or identify root causes of persistent challenges and remedy them. Frequent communication using engineering team data removes the surprise of unforeseen changes in the delivery schedule or product features. Eliminating surprises sets realistic expectations and opens the door for dialogue to problem-solve for the best outcomes.
Engineering Has the Tools to Lead an Organization to Success
By cultivating predictability within the engineering team and using data to set expectations across the organization, engineering managers can establish themselves as leaders and play a bigger role in strategic decision-making. By investing in predictability and honoring the social contract between teams, organizations produce better outcomes and achieve greater success.