Eager to drive digital transformation, many companies today jump into software development without proper preparation, resulting in low-quality products and wasted time and money. They can increase successful software development with three key steps
5 minute read
Originally published January 27th, 2022
in Spiceworks
Today, many companies bank on successful software development for momentum, especially for enterprises embarking on extensive digital transformation journeys. But too often, they jump into building software without evidence that it’s likely to be successful. The result is a low-quality product that does more harm than good.
Unsuccessful software development is more than inconvenient — it is a massive drain on the industry. Software development costs associated with unsuccessful development projects have been estimated at $260 billion, 46% higher than in 2018. Similarly, the failure rate lies around 19%. Leaders know they must reduce software development costs but struggle to understand how.
What is behind this disconnect? The traditional answer is that software quality and development speed are mutually exclusive, an idea summed up with the adage, “Fast, cheap, good — pick any two.”
In my experience, however, that’s not the real culprit. It is a failure to examine ideas before development thoroughly. The lack of vetting proposed features results in the software development scope inflating massively with questionable ideas that should have been discarded earlier.
Much of the problem can be traced back to subpar DevOps adoption. Many organizations hold an erroneous notion of what DevOps is and how it should work, adopting the practice in name only. Leaders might simply rename old operations teams as DevOps teams or create new “DevOps” teams and make them responsible for infrastructure and deployment automation.
However, authentic (and valuable) DevOps addresses organizational silos and misaligned incentives around deploying software to production. It’s a practical philosophy and collection of supporting management and technical practices. It’s also intended to eliminate siloing and inefficient handoffs between development and operations teams. The philosophy stems from lean management theory, focusing on the end-to-end workflow, minimizing waste, and continuous improvement.
When companies understand and implement the proper DevOps function, they can quickly focus their energy on what matters most: How do we add value to customers’ lives? What things are we doing that add less value than we thought? How do we develop a system to learn what our customers need in the most economical way possible to not spend time on things that will not succeed?
Start with these steps to improve DevOps practices, lower costs, and increase successful software development:
The first step is simple yet often overlooked: Make sure you build the right software. When companies skip this step, they set DevOps up for failure from the get-go. In general, software is the most expensive way to solve any given problem. If you are building custom software without a high degree of confidence that it will solve the issue at hand, you’re likely to be part of the failure rate.
Software needs to solve the actual problem for the business or the customer, or it doesn’t justify the cost. If you develop a culture of building products that don’t drive value, it doesn’t matter if the software is high-quality or technically sound — it still won’t benefit anyone. Instead, develop a product culture to create validated ideas before you’re ready and willing to invest in building value-driving software. Marty Cagan’s book, “Inspired: How to Create Tech Products Customers Love,” is an excellent product guide. It outlines how to build strong teams, determine the right products, develop effective processes, and create the culture you need to drive successful products.
The next step is to ensure your culture allows for autonomy and trust between development teams and management. Suppose the developers have to go through the bureaucratic approval process typical to enterprise software development every time they want to fix something. In that case, they’ll never reach the level of continuous improvement that’s central to the DevOps function.
Moreover, developers can’t build things competently with a heavy cognitive load or constant context switching. As enterprises prioritize digital transformation to stay competitive, they demand more from limited and overused resources. Piling on more work than developers can effectively manage halts productivity, causes missed deadlines and pushes developers closer and closer to burnout.
We need to give developers the space to think through solutions and innovation without disruption. Foster an engineering-led culture by optimizing internal processes to reduce context switching and nurturing an environment in which innovation thrives. Strive for efficiency and noise reduction in your communication. And, whenever possible, use asynchronous communication to free individual project contributors from being tied to calendars full of planned disruptions. Instead, allow for deep focus and effective time management. Additionally, try to limit individuals’ project commitments to as few as possible, typically only a single project at a time.
You can also promote a culture of continuous improvement and innovation by focusing on employee development. Upskilling opportunities keep your developers updated and improve recruiting and retention processes. An August 2021 survey by Amdocs of 1,000 American workers showed roughly two-thirds of employees would leave their jobs when denied such learning opportunities. And retention boosts software success rates as companies maintain institutional knowledge about projects and customers over the long term.
It might seem counterintuitive, but if you want to become quick at developing great software, you need to start slowly. It’s like the adage about the tree chopping contest — the winner spent most of their time just sharpening their ax. You must create a mistake-proof system even if the starting cost is high. It will take substantial time and money to build, and it will require continual maintenance and alignment with the best practices and tools.
The metrics companies must track to ensure their systems stay strong enough are the DORA metrics: change-fail rate, lead time for changes, time to restore service, and deployment frequency. Essentially, you need to see how many changes you’ve made to the systems versus how many changes fail. If you determine many of your changes aren’t successful, you want to do something about it.
Consider whether your organization 1) doesn’t know that it should be tracking that data, 2) doesn’t know how to track it, or 3) doesn’t do anything about that information. In these cases, software management and delivery will trend toward worsened quality over time as costs trend upward with each cycle of change-failure-change-failure that is not informed by data-driven insights.
It is necessary to maintain the system’s quality by tracking and responding to the data. That is what DevOps is about: automating testing and deployment, doing deployment frequently, and continually observing performance.
There is no reason to delay getting your DevOps ducks in a row right away. It’s just a question of commitment and vision. With trust in people, good ideas, innovative culture, and mistake-proof systems, you’ll enable your teams to build successful projects, reduce software development costs, and reap the benefits for years to come.