Once you have established that you can’t license or otherwise buy in ready-made or “off the shelf” software for your operational requirements or new venture, you will realise the way forward is to build the software from scratch and build bespoke software.
You now have two choices – hire your own team or outsource to another company.
Hiring your own team/insourcing
Whilst on the face of it hiring individuals appears to be cheaper (if comparing salaries or contractor rates with outsourced company fees), appreciate that you’ll need a lot of different people and skills to build your software. Unless you are building a very large system, you will find many individuals won’t have enough work to do, and you’ll be wasting money. For example, a project with two full time developers would not need full time UX, QA, project managers, solution architects/product owners or technical architects.
And if it’s a small project and you are tempted to hire just one person, you are treading a dangerous path. What if this person becomes demotivated and leaves? Where does this leave you? Have you got the time to deal with the fallout?
The second challenge is that you must know how to run a software team. Do you know what you’re doing? Can you motivate and manage your team, their workload and priorities effectively and efficiently? How disruptive would it be if one of the core team left the business? Would you be able to quickly hire a new person, train them up to the same level and carry on where you left off?
If hiring your own team sounds daunting you may choose to delegate the challenge to a professional outfit.
The benefit of outsourcing means you don’t have to hire your own team. If you make that decision, that’s your first problem solved.
But how do you choose when there are quite literally thousands of companies across the world all offering apparently the same service, all with different price points and in different countries?
It all comes down to credibility, capability and reliability. Ultimately your software requirement will either be something to help your business operational processes, or it’s a new product or venture, be it for a start–up or established business. When the software’s built and “live” what happens next? You need a reliable, stable and credible partner for the long term to help run, fine tune and develop your software. One that doesn’t rely on a single person or small team that might change.
When it comes to outsourcing there are some very well–trodden paths, that being Offshoring, Nearshoring or Onshoring.
Offshoring means instead of a local company to you, you find a company in a faraway geography where the people involved have a lower cost of living, thereby you expect the fees you are charged to be lower.
In Uganda, that means using a firm based in India or the Philippines, by way of example. This also applies to the US and other European companies looking to outsource.
It sounds sensible. But does it work?
The main problem is communication and quality. Whilst you will undoubtedly attain lower “day rates” does this mean the overall cost will be lower? Possibly. But is that the only important thing? Definitely not. The downsides are that you are not in the same room as these people. You cannot insist and negotiate on quality. When things are going wrong, you’ll need to be working in the middle of the night on phone or internet-calls trying to make the relationship work with people you have never met in person. Nor can you be sure the company is financially sound, hires the “best of the best” and even worse, subcontracting the work further afield.
Have you checked the offshore company’s financial resilience? Is it even possible to check this? What if the company disappears overnight? What happens to your money, your code and your software product?
You simply cannot know, and you thereby take a risk that the project will be a failure, with money wasted and delays for your project.
Another seemingly sensible approach is to use another country’s resources but not “quite so” far afield. That means lower day rates again, but only slightly.
The problems there is that you still have the same risks as offshoring. How do you insist on quality? How do you know the development team is performing and how do you measure success? How do you know the work still isn’t being farmed out to another offshore outfit?
By far the safest and most reliable route is to find a local company – i.e. in your home country, or a country where it is possible to verify the company’s financial resilience. So then how do you choose a good one when there are hundreds of contenders in the market?
a. Reviews and social proof
The web gives us something that didn’t exist until recently – the ability to crowd source social proof that a company can deliver.
A website called Clutch ranks websites in order based on client reviews, quality, recognition and pricing. Clutch is the best known and most prominent.
You must be sure the company you choose won’t let you down. A good review will tell you how the software product was planned, designed and built and the resulting quality to boot.
Reviews are a good place to start. It will help you quickly find companies that are proud of their work, and have made an effort to engage their customers. It will help you make a shortlist, and you can go from there. When you have a final list and are seriously considering one of these companies to work with, you might want to revisit some of the reviews in much more detail.
b. Size and ability to deliver
Size is important when it comes to software development firms. How big is big enough? A company that has less than 10 developers is unlikely to be able to cope with any fluctuations in requirements or cope with internal changes such as staff members leaving. They are unlikely to have robust processes and you are taking a gamble that the individuals perform. This is a fragile situation, and lead to failed project delivery. You must ask the question: can this small company really deliver as your business grows? How disruptive could it be to be forced to change software provider?
A company with 50 or more people is likely to have the resources to deliver but how fragile is their firm? At this size the overheads run into millions of pounds/dollars and any major project failures or staff walkouts could bring it to its knees. Most companies that have grown beyond 50 will attest that this is one of the most challenging times of a company’s growth. It’s worth asking the question – what is their growth plans? What is the financial performance of the business – year on year growth, flat or declining? Is the business profitable? How do they look after, incentivise and otherwise motivate their staff? You should ask for copies of financial accounts so you can see for yourself – don’t be embarrassed to ask as good companies won’t need to hide anything. Also, look at Glassdoor and their profile page. Glassdoor can be a treasure trove of inside information about a company’s operations and it is very hard for any company to influence what is written, good or bad. A bad or average score on glassdoor should set your alarm bells ringing.
A company with 80 or more people, with a good growth rate, financial stability, and proven track record is going to be a good bet, not just for the initial software build, but in the long term too.
Look at the company’s portfolio. There’s likely to be a page on their website or perhaps something external on the web with details. Alternatively the firm might be able to send you some written case studies by email.
How much of a portfolio do they have? Just a few case studies? Dozens or more? A solid and detailed set of case studies is an indication to how seriously a company takes in delivering software well, so it can build upon its successes. A lack of case studies is a red flag when it comes to credibility.
Also you have to ask yourself the question – does it matter if the company has built something similar to what you want before? The answer is that it might help, but it’s unlikely to be a great benefit and occasionally a hindrance.
Why? If a software company built something identical to your software, then how can they build the same for you without creating a conflict of interest with their original client? Maybe they plan to license the software to you. That might be appealing, but you won’t own it (see below). If they’ve done something similar to what you need, that could be really useful – they might have what we call “domain knowledge” – knowledge of your business sector.
A good software company doesn’t actually need domain knowledge. They need to have a process to collect requirements, understand them, translate them into a feasible software solution, play back the design to you, then they can go onto build it. No software developer can claim to have every piece of knowledge about your industry; you as the buyer are the expert and a good software development company will be able to extract that knowledge from you.
How long has your chosen software company been in business? A year or more? 5 years? 10 years? More than that? It does matter, because a large company with a very short lifespan could be risky when it comes to stability. You don’t want your company going bust and you lose your software code and money. Perhaps the company has been around for decades but only has a handful of people. What does that tell you? Perhaps they have no growth aspirations which could be a red flag.
The ideal company will have been in existence for 10 or more years, and have a long, proven track record of successful project delivery.
e. Capability & Process
So how do you know the software is going to be a success? It’s likely that a large (50+ person), established (10+ year old) software company is going to have a bunch of processes to ensure each project runs smoothly and consistently. Typically, software projects run using an established process such as Waterfall or Agile (for which there are several variants). There are a lot of pros and cons for both, but on balance Agile is going to deliver a better result, whilst Waterfall is only suitable for much smaller projects (budgets less than about £20K/$30K).
But you must choose a company that has established a process for delivering over and above Agile. Agile is great, but it can be exploited to the benefit of the software company. It can be an excuse to charge the client for time and pass all the blame to the client for changing mind or shirking responsibility for quality. Agile projects must be very carefully managed by the software supplier.
So, a good software development company takes responsibility for the process and will drive it. For example, do they do a lot of up-front planning before taking on a large project? If they claim not to need to do this, alarm bells should ring. You should expect a period of “discovery” time before the project begins. This usually culminates in a specification of sorts – either visual, or a “product backlog” (which is an Agile term). If none of these are being offered, you will have a problem because the software scope will not be defined, the project budget will undoubtedly overrun, and you may never have the software you envisioned for the budget you have available.
When it comes to delivering Agile projects, you must ensure the company is going to report the success of sprints. A sprint is a period of time (usually 2 weeks) whereby the developers work on a set of agreed features (known as the “sprint commitment”). You must ensure the developers are meeting those commitments, or very close to (there is never a guarantee in Agile that the commitment is met). Will you be involved in sprint planning – i.e. choosing the priority and level of work that will be completed in the next sprint? Will you receive a demonstration at the end of every sprint – and will this be “face to face” so you can discuss, prioritise, scrutinise and bond with the people responsible for delivering your critical business solution? Will you be receiving reports as every sprint completes? Will you be kept abreast of the budget as it changes? Will you have the right to dispute paying for “bugs”? If the answer to any of these are no, then the software company does not run a tight ship, and only you will lose out.
f. Developer quality
How good are the developers and architects in your chosen company? How do you know if they are good, or they are just picked off the street?
You need to question your supplier whether their developers have the skills and experience, and what sort of process have they been through to win the job at the software company. A good software development company will have a robust recruitment process. They will reject candidates that do not pass strict quality control tests. They will not recruit people out of desperation. Ask the questions and see how they respond. A good software development company will shout about its robust recruitment processes.
g. Quality Assurance
Good developers will produce good software. But there will be bugs. That is 100% guaranteed. Do you want to have to find and report those bugs? Should you have to pay for excessive bug fixing time? The answer to both those questions is no. A good software company will have a QA department to check the developers’ work, and testing is not just about finding bugs. It is about assuring quality through functional, load, stress and security testing. Make sure the company shouts about how it tests its software and how it delivers the best quality work. You’ll also find evidence of this in the client reviews and testimonials you read. But there will always be bugs.
h. Hidden problems & Intellectual Property (IP) ownership
Does your software supplier claim to have some sort of magic code library that will “speed up” development? If yes, be wary. You have to ask two very important questions: 1) Will I own 100% of the source code (the answer has to be yes, or walk away) and 2) Is it possible that your “magic” code is embedded in my software, therefore partly belongs to the software supplier? If the answer is yes (so basically the software is not 100% owned by you) you have a problem. In simple terms, you are tied to the software company. Forever.
Any software company that claims to be able to accelerate development can only do so with a scaffolding approach – that means any code acceleration is done through code generation in a way that means there is no reliance on that tool once it is built, and the software can be maintained freely and unhindered without the original code generation tools. This is a classic gotcha and one you must look out for.
In general IP ownership, amongst other things, will be covered in your contract or terms of business/terms and conditions. Your software company will often want you to agree to their contract, and a good software development company will be willing to negotiate on that. But pay attention to the terms of business and have a good lawyer scrutinise it.
i. Ongoing support & maintenance
How does the software development company propose to support you for the long term? What procedures and processes do they have in place to ensure you will be supported, and will they be available when you need them for urgent fixes or changes to the software product?
Understand how you will be charged and what you get for your money. A good software development company takes support and maintenance as seriously as the initial software build, putting aside time to regularly review the project, keep it working properly, be attentive to bugs and issues under a robust Service Level agreement and will be there when you need them for new feature development, at short notice.
Everybody likes a “repeat customer” but many software companies fail to pay attention to their customers when they are not paying the initially bulky fees for the core software project build.
j. Take up references
Don’t be shy to ask for at least 3 references. A good software development company will have dozens of referees available and willing to talk to you. Ask to have references from the published case studies. When you speak to the reference company, ask all the questions in this article. Spend time on this – the likelihood is the referee will be friendly and willing to share all the good bits and bad bits. If there are too many bad bits, go back to your shortlist or back to the drawing board. It is such an important decision to make.
We discussed earlier about how costs can be saved by going offshore or nearshore, but there are very large risks associated with that.
This is the last section, and for good reason.
In your locality you will find lots of companies willing to write software for you. Once you’ve whittled down the choices based on all the factors above, you will have found a shortlist of companies that can deliver in terms of team size, reliability, capability, process, portfolio & reviews and hidden gotchas. Now it’s time to look at the price. If you can truly find companies that tick all the boxes, then it must come down to price, right? Be careful.
How is the software development company proposing to work with you? There are ultimately two options. One is “time & materials” and the other “fixed price”. Sometimes it might be a combination.
It is instinctive in business to prefer a fixed price arrangement. You have a budget, you have a willingness to spend money to get a great end result. Why would you want to spend a (potentially) unknown amount of money?
The problem with fixing prices in software development projects is twofold. Firstly, it requires a far greater level of depth at the start to ensure no stone is left unturned. This takes a lot of time. That’s not necessarily a bad thing, and any good software development company will spend a reasonable amount of time firming up the scope. The second problem is that, once the scope is agreed, it requires that both parties stick to that for the duration of the project. Sometimes, that causes a difficult relationship because all software projects will have an element of scope creep – things change – and that means excessive time is spent arguing over the details.
Agile development is less supportive of a fixed price arrangement, although it is possible to achieve it under certain circumstances. A credible software company is unlikely to accept an Agile software project working in a fixed price arrangement. Why? Put simply, it’s down to risk of feature creep. Good software development companies accept a level of risk when it comes to quality control (i.e. taking it on the chin when it comes to delivering bug fixes for free) but no company will want to deliver features without being paid to do so.
So it comes back to process and project control. A good company will advise you well when it comes to budget. They will consider all the costs when it comes to software developers, QA people, UX designers, project managers or product owners, solution architects and technical architects. If they are realistic about the costs, you will see this in their proposal. Expect a good, detailed proposal. It should not leave anything to assumption. It should show a detailed understanding of the project and a detailed breakdown of the likely costs against the features that match with your requirements. How engaged has the software development company’s sales team been? If they are not spending time to understand your business and software requirements that’s another red flag. Expect to spend several hours with your shortlisted software company going through details and do not expect to pay for it (although do not expect them to spend several days or weeks at their own cost – that tends to come in the planning stages of the project).
When you receive your proposal you can make a decision based on all the factors. The likelihood is that a good software development company will be more expensive than a bad software company. Look carefully at the day rates, and the amount of time estimated to complete the project. If company A says it will take 100 days at £500 per day, and company B says it will take 50 days at £750 per day, the latter will be cheaper but perhaps they have underestimated the requirement. How do you know if one company has overstated and the other understated? The answer is that the company that has overstated but with a lower day rate is your best bet because they will ultimately charge less on a Time and Materials contract. Yes, it’s true, sometimes software does come in “cheaper” than expected. In truth, it gives you more time to add “nice to have” features. Don’t be misled by the “final price” at the bottom of the breakdown of charges. Pay attention to the day rates and estimated time, and make a pragmatic decision.
If you’ve read this article you will be very well informed about the process of selecting a reliable, credible and capable software development company that will work with you for the long term. Choose wisely, it could make or break your business or venture. Good luck!