Here’s how to get a long-term view of the entire software development lifecycle to plan for a profitable journey with your custom software.
6 minute read
Custom-developed software can make the difference between falling behind or racing ahead of the competition. For any software initiative to meet business objectives, however, it must fit the budget—which means you need to understand the total cost of ownership for software projects before diving in.
Getting a full view of costs can be challenging as companies tend to overestimate initial development expenses and underestimate those that come later down the line only after the software is being used by customers. The software development cycle falls into six phases: planning, design, coding, testing, deploying, and operation and maintenance. It seems to many that the first five phases will be the costliest, but in reality, operating and maintaining must take place for the duration of the software’s lifespan. Iterations, revisions, fine-tune adjustments, customer support, and other maintenance costs that accrue after deployment account for as much as 70-90% of the total cost of ownership for software.
It can be a sobering statistic to learn that an estimated 90% of features built into software products don't generate the results they were intended, and many make problems worse. To deal with this, teams have to constantly iterate on features until they generate the results intended. So when a feature is delivered to production, that's just the beginning of that feature's lifecycle.
Why is it so difficult for companies to wrap their heads around these future costs? Some of it comes down to simple human nature. Long-term planning is hard for everyone and takes real discipline to develop and master. With so many little fires to put out in day-to-day operations alone, it’s easy to lose sight of the bigger picture and what it could look like months or years from now.
This is especially true for something as complex as custom software, the demand for which often comes from some painful challenges employees or customers are experiencing on the ground while juggling competing needs from other areas of the business to build new features and innovate. With such acute needs, long-term outcomes after a feature has been "delivered" become harder for management to focus on.
It’s important to consider the continuous nature of the software development lifecycle that lives on far beyond the initial deployment of the code to production. If you’re too focused on the short-term software development costs, you’re more likely to skimp, cut corners, or simply neglect to identify projects that could be more strategic to the business. The results of which can create amplified problems down the line: cumbersome processes with lengthy workarounds the company is forced to live with, low-quality codebases that cause customer frustration and support costs, rampant technical debt that slows down IT agility—all of which will hinder the profitability of your software in the long term.
The post-deployment process of monitoring feature usage, receiving feedback, further testing improvements, and refining updates to features based on learning are also key elements of the SDLC that reflect the continuous nature of software.
In fact, the post-deployment stage of iterating on features until they achieve what businesses need is the key to profitable software. Too often, companies think of software as a cost center and constantly look for ways to make development projects cheaper and faster. In reality, software is a profit center for your business when it’s done right. This means not just optimizing for one facet of development such as cost, but rather considering both cost and value the teams are able to deliver to the business to ensure teams are working smarter for the business needs.
Thankfully, there’s some common practices that top-performing software companies (including our clients) put into play that any company can learn from and adopt better principals for improved business impact from their software development investments.
So how can you avoid a shortsighted view to plan effectively for a long, profitable road ahead? These tried-and-true tactics practiced by our software teams through to the world’s most successful software companies can help:
1. Bring technical expertise to the highest levels of leadership early and often. The best way to ensure businesses make sound software development decisions is to bring competent technical leadership to the strategy table. Chief technical or product officers should work with other executive team members to make the best-informed tradeoffs with both short-term and long-term goals in mind. They also act as champions and experts in agile methods for software development, which is how teams are able to operate profitably in highly ambiguous environments. Technical experts are uniquely able to think in this way, that's what they're hired to do, and companies should leverage their expertise whenever possible. (If there's a gap in your organization here, consider working with a qualified consultancy such as Synapse Studios to help in this area.)
2. Commit to continuous technical debt management. It might be necessary to cut corners when you’re trying to meet short-term goals, but making small decisions made during the course of development along the way can accumulate into bottlenecks or other inefficiencies down the line for your value-driving software delivery team. Just like complicated customer support workarounds add time and inefficiencies, the same is true for development operations. And this type of accumulation technical bottlenecks can prevent companies from scaling operations all while being largely invisible to upper management.
This accumulation is known as technical debt. It’s never completely unavoidable because making compromises is necessary for the software development process, but managing it responsibly is key. Keep track of how much you’re taking on and design a strategy for addressing it regularly. A common rule of thumb is to allocate at least 20% of your development team’s time entirely to debt reduction efforts. This way, you can keep debt from building up and hindering your business from progressing to the next growth stage due to increasingly higher costs for both maintaining the codebase and continuing to deliver value.
3. Skip lengthy specification docs to predict costs and instead lead with goals, objectives and monitor performance indicators. It's a total misnomer to think spending large amounts of upfront planning time to estimate and detail out every facet of a set of features to predict development costs up front will result in better investment decisions. While prioritizing the right work for the development team to take on is a non-negotiable, the process of prioritizing projects should be lightweight, fast, and based on what the team estimates will have the greatest impact on their profitability and efficiency metrics for the least amount of effort. The reality is, companies will never know the total cost of a software project until it "ends." When does the ability to login ever end? It's continuous and requires teams to minimize investments in planning since it has to happen all the time to maximize the team's ability to stay nimble and agile in their daily activities.
The best way to enable teams to operate in this way is to employ a decision-making framework that allows teams to follow a strategy for reaching business objectives in their day-to-day activities. You can use well-documented and proven strategic frameworks such as OKR (objectives and key results) or DIBBs (data, insights, beliefs, and bets) to guide you.
Your strategy should align the business and technical teams on the ground toward future customer outcomes at speed. Business objectives should center on operational efficiencies, happy customers, and excellent user experiences—rather than what gets the software out the door on deadline or to original specification despite learning early customer feedback was poor. Focusing on overall objectives rather than features and deadlines gives developers more flexibility to deviate from one set path and make necessary adjustments as they go based on market or customer feedback on the ground. This type of a framework provides leaders with early indicators of how their software project investments are performing in a more predictable manner, allowing for more accurate projections and better business agility.
By aligning business and technology around strategic objectives, working technical debt management into the framework, and allowing for flexibility to respond to changing needs, you can budget realistically for every phase of the software development lifecycle and turn a profit well into the future.