Many companies see the need to improve their business or gain a competitive advantage through the use of IT systems. Some of these same companies realise the need to custom develop or customise systems in order to differentiate them from their competitors. Since these companies are generally not IT companies and have no software development experience they are left with a difficult decision as to how to get software developed.
There are lots of options, it is a difficult decision and I have seen so many companies make mistakes in their choices. There are many options but here are the ones we see most often :-
- Grow your own IT department
- Hire contractors
- Outsource to One Man and His Dog
- Offshoring
- Outsource to an OnShore Software Development Partner
Let me explore each of these options in a little bit of detail. Obviously the options chosen depend on the type and size of your company.
Option 1 : Grow Your Own IT Department
This can seem like a logical step to many people. The argument goes like this… We need to develop software for our website or whatever so let’s hire a software developer. The developer can develop the system, they’ll be here every day, they’ll be cheaper than outsourcing the work (potentially) and because they work with the company every day they’ll get to know what we do and as a result be able to deliver a better system.
This can all work out great if you get the right person but you, the hiring company, are not a software developer so issues can arise in terms of recruiting and managing the right person. You probably don’t have procedures for documenting and testing the software so you can end up with a developer who develops in their own way using technology they are comfortable with. If you end up with just one developer then what happens when that person goes on holiday and the system they have written falls over. So you then perhaps need two developers for cover. This is how small and medium sized companies whose business is not IT end up with a costly IT department which just seems to grow.
Another issue is staff retention. Good developers generally are clever people who get bored easily. Being alone or part of a small team in a single vertical market does not give them room to grow. They can get bored, they can leave and all that experience leaves with them and if you are unlucky then you may be left with a system with no-one to support it and no documentation.
Option 2 : Hire Contractors
Another solution to developing your own software is to hire short term contractors. This is more expensive, on a daily rate, than hiring full time staff but remember a full time member of staff is for the long term so delivering a project with a contractor may actually be cheaper as they can just ‘code and go’!
Contractors are generally paid on an hourly rate. There is no guarantee of delivery. You tell them what to do and they do it. If you take them on a 6 month contract and they don’t finish the project then you extend them and keep paying them until they finish.
Once they have finished the project and have left then you, as a company, have to think about how you will handle maintenance and changes to the system. The contactor will have moved onto their next contract which could be at the other end of the country. Supporting previous work will not be their top priority. Like a full time member of staff their experience would generally leave with them.
Option 3 : Outsource to One Man and His Dog
This generally applies to smaller companies but we have seen this situation in medium companies too. Someone has a friend who develops software in their spare time or from their spare room as a small business. They are the classic one man and their dog though unfortunately the dog doesn’t code. The cost may be around the same as a contractor but you hope that you can perhaps get them to switch on and off their costs as and when required. This seems like a good scenario. This seems like having all the benefits of a contractor with additional support at a reasonable cost.
However if you know nothing about software development it can be very difficult to tell the difference between a good developer and a bad developer. We have had some experience of one man companies providing services to clients. One situation arose when we got an emergency call from a company whose IT system was down and they were losing £50K per day. We asked who supported their system and it turns out they had a guy who wrote the software in his spare time and provided support on his mobile during the day. Unfortunately this gentleman was on his honeymoon in the Seychelles and could not be contacted so the company’s entire call centre ground to a halt. We managed to fix the issue at short notice but the system was developed in Access (a single user database) and there were 50 staff using the system. It was totally unfit for purpose. The developer was cheap but as someone once told me ‘bad advice costs’. A few years later the business went bust. We believe the system was a major contributory factor in the demise of the company.
Option 4 : Off-shoring
Offshoring software development to places such as India, Eastern Europe and China has been popular within the last decade or so. The attraction of offshore development is generally that it is less expensive. Prices have risen in recent years so it is no longer as inexpensive a destination as it once was. Quality is also difficult to assess and communication can be difficult. Legal recourse on any issues can also be a problem and support hours have to be managed as the business hours of a company in a different timezone may not align with yours. Unless you have the software project management skills to control an offshore project things can be difficult to manage and we have rescued projects where there has been a disconnect between the customer and the offshore developer. Communication is a big part of successful software and web development projects and should never be underestimated.
Option 5 : Outsource to an Onshore Development Partner
In terms of raw day rates this may look like the most expensive option. These companies are not operating from their spare bedroom or a country with much lower labour rates. They are proper businesses with office expenses, sales staff, accounts and many other roles which are costs for the company. These costs make them more expensive however there are a few advantages if these companies are used correctly. The companies are generally in your own country/region so communications and face to face meetings to discuss requirements are easier to manage. It is also generally possible to define your requirements and get a competitive quote for the project development. With a proper provider you also get the stability of a company so you do not have the one man band scenario or the situation where a permanent employee leaves. Any staff changes have to be managed by the supplier.
With a development partner you get a breadth of experience across multiple members of their staff and can take advantage of the supplier amassed knowledge. Support can also be quite cost effective as once the major costs of a project have been delivered then the company can be engaged to provide support but would usually retain the original development team. In that way you get to retain the knowledge of the whole development team without the ongoing cost of the entire team. In fact, the ability to flex resource up and down for development and support cycles can in the long run be very cost effective. Whilst some development projects involve one development cycle followed by support many more involve ongoing versions of the system which involve many development and support cycles.
So, in summary, there are a few options for developing software or a web application. As with lots of things in life the cheapest option may in the long run cost more so you must consider the whole lifetime of development and support as well as the quality of what you will receive.
