How to avoid common, and costly, causes of project failure when outsourcing your software development.
Find yourself needing some software? Perhaps a new business opportunity presents itself, your legacy tools are on their last legs, or you just want to invest in your infrastructure.
Your business doesn’t have a development team, or they are occupied with day-to-day operations. You need an external development team, but there are hundreds of companies each with different skill sets, approaches, and abilities. They will all work in different ways, and there are even more ways you could work with them.
The scope for expensive mistakes is massive. This guide contains some simple tips for avoiding the many pitfalls you face, all from the perspective of a software developer.
1. Choose the Right Partner
Software development businesses are a dime a dozen. Ranging from single developers working from home, to multi-national corporations with thousands of programmers on staff - there is no shortage of people willing to build your software.
Not all of these will fit your business, your budget, or your project. Not all of them will build you a system you can be proud of or do so in a reasonable timeframe. How do you find the right supplier?
A Partner, not a Supplier
Some development companies will build software that only satisfies the bare minimum of your requirements. That might sound perfectly reasonable - but in reality the bare minimum only works if you fully understand, communicate, and manage every tiny detail of your project.
Instead look for a team that will collaborate with you and use their experience to improve your project. You want a team that will tell you if there is a more cost effective option, a more robust technical approach, or a more user-friendly UI design. A team who will do everything they can to make your project, and your business, be successful.
This is especially critical if this is your first experience of software development. A company that genuinely cares about your success will guide you through the process, rather than leave you in the dark.
A Proven Track Record
Look for companies that have a clear history of building and delivering software - especially software similar to yours - and ask for case studies or references. If they are a very young company or only have a handful of employees they may not have the experience to ensure your project is successful. Meanwhile, if they’re a global company who specialise in something other than what you’re looking for, they might not be the programmers for you.
A Focus on Quality
You will easily find developers offering to build your software at a bargain price, but as with many things you get what you pay for. Low cost offshore teams might seem appealing when you’re on a tight budget, but your time and money will typcially be better spent elsewhere.
Software built to a low standard will not last, will not be secure, and may not even do the job you intended it for. Businesses often approach Avco after having poor experiences with cheap offshore developers building software that is not fit for purpose. It is not uncommon for such projects to be unsalvageable and require rebuilding from the ground up.
Look for companies that are clear about their approach to coding standards, testing practices, and security experience. Do they value robustness, longevity, and maintainability? Do they have accreditations to backup their claims?
A Transparent Pricing Model
There are two main pricing models when buying bespoke software:
- Time & Materials: You are charged per developer per day it takes to complete the work. If the project is completed ahead of schedule you’ll pay less. If it overruns you will pay more.
- Fixed Price: A price is determined based on the initial requirements specification. That is the price you pay regardless of time taken to complete the work or the number of developers required to do so.
In most cases I would recommend the fixed price model. Estimating the cost and timescale of software development is difficult and tasks can easily overrun. When you are paying a fixed price you don’t have to worry about this impacting your budget.
Just make sure to ask how flexible the developer will be when implementing requirements. Look for developers who will allow for adaptability within the fixed price, and not charge extra for every tiny change request. Ask them what happens if you don’t like how a feature is implemented and would like it changed.
Time & materials does have it’s place. It provides complete and total flexibility to change direction beyond what was discussed above. If you don’t have a clear idea of what the system should look like when it is complete, and don’t have a constrained budget, then time & materials may be a solid option.
2. Be Clear with Expectations
As a developer at Avco I have personally worked with more than a dozen clients. All businesses have different expectations in terms of process, governance and documentation. Some like to have daily status updates, others expect hundreds of pages of intricate functional documentation, and others prefer to be as hands-off as possible. Some have a very clear vision of what they need, whereas others just have a problem and are looking for a partner to help them find a solution.
Every development company will have a standard process that they feel is the best approach to building software, but should be more than happy to accomodate your needs. Be upfront with what you require and the development is likely to go a lot smoother. Don’t assume that your expectations match their expectations.
Likewise, ask what expectations the development team has of you. What resources do they need from your business? How often do they need feedback? What turnaround time do they expect on queries?
3. Understand the Process
There are tons of methodologies for creating software and every team will have their own specific flavour that works best for them. More often than not this will be a variation of an agile/iterative process known as SCRUM, but older and less-flexible models such as Waterfall are still in use.
Discuss with the team which process will be used. Understand what it means for your project.
- When are requirements defined and to what detail?
- How is the completion timeframe determined and tracked?
- What documentation will be provided and when?
- How often will releases occur and what state will they be in?
- What is the “definition of done”?
4. Engage Often & Be Involved
Nobody knows your business needs as well as you do. External development companies don’t know the intricacies of your business and your vision, and documentation only goes so far in transferring this knowledge.
In my experience having the active engagement, participation, and availability of product owners is absolutely key to delivering software that perfectly fits the need. A hands-off development is viable and sometimes required, but if you are able to lend your time to the process the end result will benefit immensely.
With that in mind:
- Be open, clear, and thorough when explaining your business objectives, the business domain, etc. The more in-the-know the development team, the better they can match your expectations.
- Put your Subject Matter Experts (SMEs) in direct contact with the development team. This will improve the turnaround time of queries, reduce the likelihood of miscommunication, and decrease the amount of assumptions the development team must make.
- Attend sprint planning meetings, review staging/UAT releases, share your thoughts and opinions. The software is yours so don’t be afraid of making clear what you want, but try to do so as early and often as possible.
5. Ask Questions
- Will the work be outsourced or subcontracted to other organisations?
- Who will own the source code and IP produced?
- What programming languages/technologies will be used and why?
- How is the software going to be tested?
- What considerations will be made for data protection and security?
- How will data be migrated from the existing system (if applicable)?
- Who will host the system? Where and how?
- What happens if bugs are found after completion?
External development teams can add massive value to your business. The right partner will lend their experience and strengths to your project and your business. Engage in a positive, collaborative, and communicative development process and external development projects will be extraordinarily successful.