Ensure Custom Software Project Success with These 6 Guidelines
Building and maintaining high-performing software is difficult. But a clear vision of what to expect during the development process—along with closer collaboration with your development team—will ensure your custom software project is primed for success.
In this white paper, you’ll learn:
- How to adapt to evolving user needs
- Why you should consider value, not just costs
- What to expect with software maintenance costs
- How to promote cross-functional collaboration
- How to determine whether you’re scope- or cost-driven
- Why continuous delivery is crucial for building the right product
Download The PDF
Read the full white paper:
Why Collaboration and Unobstructed Vision are the Keys to Success
Building and maintaining high-performance software is difficult. Between finding the right teams, organizing them in the right way, engaging stakeholders, managing technology changes and setting release schedules, the list seems endless. But of all items to consider, there are two success factors that are critical in guiding software development:
- Establishing an unobstructed vision of what to expect
- Collaborating with your development team
We’ve seen the importance of these two themes time and time again, in hundreds of successful custom software projects over the years—and each one plays a crucial role in building world-class software that accelerates business performance.
Keeping these two themes in mind, how should you think about development costs and their relationship to maintenance costs? How rigid should you be in defining the end solution early on? How should you evaluate trade-offs of cost, scope and time? What is the right approach to delivery cycles?
Let’s Explore 6 Simple Guidelines to Make Your Software Development Project Successful:
Section 1: Be Adaptive to Evolving User Needs
Section 2: Consider Value, Not Just Costs
Section 3: Understand Your Software Maintenance Costs
Section 4: Focus Heavily on Cross-Functional Collaboration
Section 5: Determine Your Drive: Scope vs. Cost
Section 6: Recognize the importance of Continuous Delivery
1: Be Adaptive to Evolving User Needs
This speaks to the very heart of agile software development.
To thrive in an increasingly competitive and dynamic market, businesses and people must be adaptive and embrace change—and your software development process should be no different. Keep in mind that the 10 features you envision today may not be the exact features you deliver, simply because business and user demands evolve over time. But, with an agile approach, your end product will be better suited for your users’ needs.
The best software today is not spec’d out in tedious detail on the front end of a project; that’s not only a costly process, but also a waste of time and effort. Instead, the best software morphs and evolves over the course of development with feedback from stakeholders, like end users and product managers.
Consider this example: About 10 years ago—and prior to working with us—one of our clients firmly defined the specifications of a custom software project based solely on their understanding of the market. In working with them, we learned that the client did not engage their customers and was unwilling to waver from their predetermined requirements. Because they failed to include user feedback loops and embrace change, their initiative was unsuccessful—and a $300,000 investment only generated $350 in monthly revenue.
Conversely, in a collaborative software development process, we’ve seen much greater success when working directly with subject matter experts (SMEs) from our clients—very often the same individuals that use the final products. By testing and using the product at every stage of development, these SMEs help us continuously refine the solution before it is done. As a result, these SME-driven, collaborative cases almost always exceed expectations.
2: Consider Value, Not Just Costs
Custom-built software is heavily weighted towards upfront cost, so it’s important to understand value, useful life, and the relationship between upfront costs and total cost of ownership when making an investment.
The old value equation—Value = (Quality + Outcomes) ÷ Cost—should always apply here: What value are you going to create at various levels of investment? Many companies don’t think about value this way.
Clients often ask us, “How much is this going to cost?” This is an important question, but without the other half of the equation, the answer is meaningless. A better question might be, “How much is this going to cost, and what value will it provide our stakeholders?” In this sense, a million dollar project may or may not be expensive, depending on the value you get for that investment.
We can demonstrate value realization in two simple examples: One that focuses on revenue gains and another that focuses on cost reduction. In our first example, one of our multi-billion-dollar enterprise clients sought our help with a custom software development project that cost nearly $500,000. This client had done their due diligence—including thorough demand analysis, planning their go-to-market strategy and building a unique value proposition for their product—and they welcomed feedback loops as part of their collaborative development process. They understood the value being created, and therefore, were comfortable making the investment. As a result, the software solution generated $6 million in net new revenue in the first 12 months after launch.
Years earlier, a different client was approached by a regulatory authority that threatened to enact a $1 million monthly fine if they did not come into compliance with a new regulation within a 6-month timeframe. Because the cost to ensure compliance—which came in at $800,000 and 6 months development time—was less than the monthly fine, the value was clear and it was an easy investment decision for the client to make.
Beyond macro value, there are also upfront costs that do not appear to be directly related to the software itself but are critical to owning working software. One notable example is the opportunity cost associated with DevOps, which is generally defined as the practices and tools that increase your ability to deliver applications and services quickly, reliably and frequently. While investing in DevOps increases your upfront expense, it reduces your total cost of ownership by eliminating incremental spending every time you release an updated version of your software; so, despite the upfront trade-off, it’s the long-term value that is worth considering.
3: Understand Your Software Maintenance Costs
Custom software, like commercial enterprise software, comes with additional costs over time. It’s like buying a car: You incur much of the cost when you drive it off the lot. But you also need to put fuel in it, change the oil, rotate the tires and occasionally give it a wash to keep the car in working order—and all of this comes at a cost.
If you are developing software with any substance, you should expect to get many years of use out of it. You might graph your investment over the useful period, say seven years, which is in the range of a normal lifespan for enterprise software. You’re going to have upfront costs, and perhaps a six-month development cycle, then possibly a few big revisions based on changes to your business or your marketplace—then you’ll have ongoing maintenance.
Some estimates suggest that annual maintenance costs can run 40-90% of the initial cost to develop the software. However, these numbers can vary wildly depending on the type of software, the quality of the code and how many years you maintain the software. In our experience, we’ve found that a $500,000 custom software project that takes six months to develop may require between 10-25% of that initial cost to maintain on an annual basis. Overall, this is in line with what enterprises pay to maintain commercial off-the-shelf software.
Although there is a correlation between maintenance costs and quality of the original software, it’s not always immediately intuitive. Inferior-quality software can result in higher costs due to bug fixing, technical debt, modifications, upgrades and additional upkeep. We have also seen more than one case where poorly constructed, inferior software is simply abandoned due to poor user acceptance, which eliminates these costly maintenance expenses but then requires a new investment to start over.
When you create high-quality working software, you should expect your maintenance costs to be material because your software is being utilized, it is evolving, and your company is realizing the expected benefits.
4: Focus Heavily on Cross-Functional Collaboration
You can’t simply hire a couple of software developers and expect impressive results. Reasonably-sized software products have significant complexities, and overcoming those complexities requires a variety of skills. To be successful, software teams require people who are not only skilled in certain tools and practices, but also skilled in cross-team collaboration.
For example, building a quality user interface requires many different areas of expertise. First, you need someone on the team who understands user intent and how to design an interface that users can easily interact with. As for development, if you have a system that is part of a highly-regulated business process, software developers alone will not be able to cover all of the different test cases—you’ll need more senior subject matter experts to cover the knowledge gaps. And if you are operating databases of large scale, you will need some expertise in that area, too.
In addition to hard technical skills, there are many nontechnical skills that are essential to creating great software.
You’ll need somebody who can run a facilitation workshop to help define the vision of the product and an expert with an eye for edge-case tests. You will need someone skilled in driving test automation tools, as well as a data expert who knows how data integration works. And you’ll need DevOps expertise, a skill that is intrinsic to modern development best practices.
When building your team, don’t forget softer team member attributes like personalities, organizational skills and communication styles. Cross-functional collaboration is as important in software development as it is in football—you have to make sure you have all the right team members in the huddle (or Scrum) to succeed.
5: Determine Your Drive: Scope vs. Cost
We’re all familiar with the Iron Triangle, or Project Management Triangle, that balances the constraints of time, cost and scope. But in custom software development, there’s a fourth dimension to consider—quality. At some point in the process, you will need to make a decision: Do you care more about the cost of the software? Or do you care more about the value you’re going to get by having a certain set of features?
We often talk to our clients about whether they are scope driven or cost driven. If you’re scope driven, you may be in a scenario where you are required—perhaps by law—to have certain features, and your scope must accommodate these requirements. If you’re cost driven, you may be in a situation where you have a finite budget and you need to maximize the number of features you can get for that level of investment. What’s your trade-off?
Let’s say you have a feature list and you want to know how much it will cost to build: Your development team estimates they can deliver all 10 features for $400,000, or deliver features one through eight for $300,000.
But shortly into the project, the team realizes that features six, seven and eight are far more complicated than initially thought. Now, you must decide which combination of features will keep you within budget while delivering the highest value. Do you skip feature six in lieu of feature seven? Or do you adjust your budget? This is a typical conversation we have had with many clients over the years.
While understanding the value equation discussed earlier can help guide your decision, you must rely on collaboration, transparency and flexibility to maximize your investment.
6: Recognize the importance of Continuous Delivery
To be successful in software development projects today, you need to be able to redeploy your solution early, often, quickly and reliably. There are numerous reasons for this, but one of the most important reasons is that it facilitates faster feedback loops.
This is part of a principle called, “I’ll know it when I see it.” Most people cannot envision the possibilities until they see working software. They must see, touch, and use software to understand how it works—not read about its features in a status report.
Your development team should be able to write code, deploy that code, sit down and discuss how that code changed your working software—and then, as a team, decide whether it’s effective or not. Are there additional tweaks that need to be made, or is it ready to ship? Without continuous delivery, these questions—or feedback loops—would remain unanswered and you could miss critical changes.
Continuous delivery deployments can happen daily or even multiple times per day in conjunction with backlog grooming. During grooming, a development team will work with the primary stakeholders and provide “over-the-shoulder” demonstrations to prioritize a list of work, ensuring items on the backlog are ready for delivery. Regular grooming may include removing user stories that are no longer relevant, creating new user stories from newly discovered needs, and reassessing priorities. And with the help of automated tests, your solution can be confidently and continuously re-deployed to a demo site for other stakeholders to use.
In addition to shorter time to value, continuous delivery ensures that you will know exactly what you’re getting— and so will all of your stakeholders. By collaborating and implementing feedback from users, customers, employees, and clients, you can be certain that you’re getting the right solution for your business needs.