By Niall Smith, who is an experienced Software Architect and founder of online booking site BookingHawk.com.
Some of the circles that I move in contain many founders and entrepreneurs in the making. I recently had a conversation with another founder about how difficult it would be to start an online or technology-based business without a technical background. Given that I come from a technical background myself, I thought that I could give some advice on the subject. Specifically, here are 10 things that a founder should consider when outsourcing the development of their online business.
1. Non-Disclosure Agreement
When you hire developers, you are about to share your idea with them. You will need to be as in depth as possible so that the developer(s) can do what is known as ‘requirements gathering’. It is in your interests to tell them as much of your vision as you have imagined. Therefore you should have them sign a non-disclosure agreement.
Many people I have spoken to have suggested that they can just get someone in India to develop their software thus saving them thousands in development costs. I have worked with developers of various cultures and backgrounds and from my experience, no nationality/culture is better at writing software than any other. It all comes down to the team and the individuals. If you have done due diligence and are sure that the best team for you is based abroad, then so be it. However, even with great tools such as Skype and other remote meeting services, there is no substitute for visiting the office of your development team. Imagine for example that three weeks into your project, your team discovers a potential issue with how your system is supposed to work, or perhaps a new piece of legislation is signed into law. This would require some thorough discussion between you and your team. It would be much easier to visit their office, speak in person, sketch ideas on whiteboards to come up with a solution then have emails flying over and back attempting to arrange a time to meet online, a time that is not bedtime in your location or theirs.
With software, adding a new developer halfway through the project does not immediately increase the productivity. New developers will need time to understand the type of system that is being built. They will likely need to familiarise themselves with the dynamics of the team and in some cases get used to some software tools that they have not worked with before.
When building software, if you want to keep your budget on track, you will likely not be able to change your mind about certain features/pages halfway through the project build. It may seem like a simple thing to add a new button to a web page, but often, there is much work to be done behind the scenes to make sure that button does what it is supposed to do.
5. Build A Website, A Mobile App Or Both?
You should think carefully about what form your online business will take. Will it be an app? Will it be a website only? Perhaps it will be an app and a website. Where possible, my advice is to start with a website and here is why. When a website is being written, there is considerably less work involved in getting that website to display nicely on a mobile than there is in developing an app that can be downloaded from the app store. Doing this ‘mobile optimising’ of the website means that it will display nicely on all mobiles, whereas an app needs to be developed for Apple and Android operating systems.
Another reason for my advice is something known as an API. Don’t worry about how technical it sounds. All an API is, is a way for your application (website) to talk to other applications.So if your website is built with some good API’s the development of a mobile app will be much easier. It will also ensure sure that the data on your mobile app is as fresh and up to date as the data on your website.
Lastly, when your website is built, you can analyse how it is being used. Once you find the top 3 things that users do on your site, your mobile app can be developed with this in mind. Meaning the buttons to do these three things are prominent and not buried deep in a menu somewhere.
6. Future Use
Ok, for now, you only want your application to do one simple thing. In the back of your mind, you think that once it is launched, you’d like it to be able to carry out another thing too. Whatever your vision, it is important you call this out as early as possible to you developers. The more your developers understand about your visions, the more flexibility they can build into your system. This does not mean that they spend weeks half building out parts of your system that you may possibly (but probably won’t) use somewhere down the line. Instead, it just means that the plumbing is in place should you ever need to add an extra bathroom.
7. Ongoing Costs
There will be an initial outlay for you to have your software program built. However, you will also have ongoing costs. So for example, with BookingHawk.com, we need to pay a monthly hosting fee for our program to be accessible on the internet. We also need to purchase our SSL certificate every year which is needed for us to securely process payments. We also need to pay to use the domain name BookingHawk.com. The cost of your ongoing fees will depend on the type of application that you have built, but it is something you should ask your developers about.
Ask your potential developers to tell you about projects that they took on in the past that did not work out. If they are happy to discuss such projects, ask them for the reasons of the failures. Ask them what steps they have taken to avoid such failures in the future. You are interviewing someone to hand over a lot of money. Do not let them fob you off or overwhelm you with technical jargon.
The best way to predict future occurrences is to study past events. I advise you to ask for a list of projects that your team has delivered before. Then call up the people that own those projects. Ask them what the development team was like to work with. Ask them about the finished product. Did it do everything it was supposed to? What was the quality like? For example, did it display ugly error messages if something went wrong or did it handle issues gracefully? How was the follow-up support from the development company? Did they reach out often to see how everything was going or did they disappear into the sunset once the money was handed over? This brings me nicely on to…
9. Maintenance Contract
Even though I am an experienced software developer, I still make the most stupid mistakes you could imagine. These mistakes sometimes (not often!) make their way, all the way through our testing and quality checks and into the live system. When something like this happens, it requires a fix AKA an update AKA a patch. No matter how good your developers are, somewhere down the line your system will require such an update. Be sure to have agreed on prices with your team so that you cannot be held to ransom once such an update is required.
10. Open Source
In software, a concept exists known as ‘Open Source’. Building software with Open Source tools and languages is free. Not only this but because of its popularity, finding developers skilled with Open Source software is somewhat easier than finding developers skilled in bespoke commercial systems and languages.