The CEO’s 15-Step Guide to Custom Software Development
Around a quarter of our clients approach us because they don’t know how to effectively kick off a custom software project, or they’re having problems managing a current project.
We get it. These situations can become money pits and a huge waste of time. They can also be a source of great anxiety — we’re often struck by just how exhausting software development can become for CEOs of mid-market businesses.
If It’s So Tough, Why Bother?
Custom software allows you to create something unique and thus to create real value. It offers the opportunity to build genuine competitive advantage — to raise efficiency, lower costs, increase performance and sharpen customer service.
If you want to outperform your competitors, or interact with customers, partners or suppliers on the web in ways that outperform your competitors, then off-the-shelf software is unlikely to hit the mark.
Furthermore, custom software can allow you to create products that you then license to your own customers, creating entirely new revenue streams. All this can radically reposition a business and substantially change its valuation for the better.
Where They Usually Go Wrong
We typically see software that’s become slow, troublesome and unreliable. The question, of course, is how to fix it, but there’s a communication gap: perhaps there are issues with internal developers or a difficult relationship with an external company.
Often the plan makes sense to the developers, but it doesn’t make sense to the Exec, and it isn’t rooted in the business strategy. It just seems like there isn’t anyone to have a straightforward conversation with about the bottom line. Sometimes there are legal and contractual issues as well.
We meet CEOs concerned by the possibility of software issues causing major commercial damage and it may not be clear how to even start sorting the mess out.
So the question is how to avoid these situations, and how to deal with them when they arise?
- Clarify the business objectives. Get everyone clear on the vision for the business opportunity and business objectives. In business terms, why is this software worth having? That’s not the same question as what functionality — it’s asking, Why do we want this software at all? How is it going to help us make money?
- Establish what the software needs to do to accomplish the business objectives. What are the non-functional requirements?
- Identify everything needed other than the software to fulfill the business objectives. Some examples may include, process improvements, organizational changes, training, marketing strategies, and launch plans. (And make sure each of these has someone in charge.)
- Get an expert Chief Technology Officer (CTO) — someone who understands your needs, the options, upsides and downsides. Someone with the expertise to push through solutions and navigate compromises.
- Get an expert day-to-day manager. Your IT leader will be too busy with larger issues to manage the crucial things like programming, testing, documentation, and tracking. But your project won’t succeed without someone who can manage them.
- Choose standard products and tools. You need to be able to find developers and support companies for years to come — stick with mainstream products and approaches.
- Consider outsourcing. It’s a great way to contain cost and risk, move quickly, benefit from offshore rates, and remove the burden of recruitment. However…
- Insource if you want to bring creativity and talent into your business, build up your own development capabilities, and innovate as you go.
- Get the legal stuff sorted. Are you paying fixed price? Do you own the software, or are you just licensed to use it? Are the tools and frameworks licensed? Is it clear who owns data and other know-how?
- Have a simple, clear management approach and make sure everybody understands it. If you want to get something live quickly, you trust the developers, and you’re happy to engage and explore, then you can be more agile. If you want to minimize your risk before you start, you’ll probably favor a waterfall approach. Either way, if you’re consistent, your team will be happier.
- Focus on the “minimum viable product.” Software only has value when it’s live and delivering business benefits. So focus on getting it working quickly, and then considering alternatives and improvements.
- But make time for testing. When developers test, it never reflects real-world use. So you’ll have to organize detailed and systematic testing before the software is ready to go-live.
- After go-live, ensure you have rapid access to developers who can understand and fix problems properly, rather than just paper over cracks. Don’t rush the fixes: it will always come back to haunt you.
- Make sure that the documentation is adequate. Creating documentation can be time-consuming and feel like it has no real value. But having basic documentation in place is critical for the long-term viability of your software.
- Don’t expect it to be easy. If it were easy everyone would be doing it!