As a startup founder you often find yourself needing to outsource tasks to an another company.
Today I want to focus on the development contract that a startup will need to sign at the beginning of their project. There are some pitfalls that need to be avoided with best practices that need to be clarified before starting to work with an unknown company.
1 – Requirements
When you decide to hire a subcontractor it can be like getting engaged. You need to know and trust those you are depending on. In some cases you also should be able to go your separate ways if need be. I often have meet with entrepreneurs who asked our company to provide a proposal for over 60 pages of requirements for the project to be developed and then they ask us for another proposal on implementing these specifications in their environment. We all know that startups will often change their priorities. You need to know where you are going. So you having laid out and specified your entire development requirements in a document and then asking for a complete quote on creating and then implementing doesn’t make any sense based on the possible need to pivot the project in the future.
So I rather suggest two things:
- Sharing the entire set of requirements in order to let the development company anticipate all future development by taking it under consideration.
- Asking for a very first stage quotation, as example developing the MVP ( Minimal Viable Product) which will allow you to share it with your prospects and clients. This MVP version should be between 20 to 30% of your entire product.
Why do I recommend that? Many companies that develop software who are used to working with huge requirements of a Fortune 1000 company. Which is the usual way of doing projects with clients that have large set of requirements. But when it comes to a startup environment writing the entire set of requirements isn’t necessary. You don’t yet have enough insight from your target market. You should go for more flexible method with well specified short-term development cycles.
2 – Evaluating
Even before sharing your requirements with a company you should look into the company and ask for examples of previous completed projects they’ve done and take a look around on the internet to see examples of other projects they have completed. Don’t hesitate to call previous customers of your targeted company in order to get direct feedback. Check the internet for their BBB rating along with any other comments you can find. How many years have they been in business? How many projects like yours have they completed? What is their average cost for a project like this? What would happen if someday the owner of this company is unable to continue working? Do they have the staff and expertise to manage it?
3 -Defining the Parameters of the Project
Even if you don’t write out the all of the details for your project what is important is for you to think ahead about what you will need for rapid growth. In most cases you will need some back-office integration with an interface, CRM integration, mailing exchanges, payment system. Also integrating communications through practical tools on the internet and using a system to send SMS automatically to employees, customers or contractors. Even if you have the budget to develop everything you want you should only develop a selection of the best features you want to see in you first version. Nevertheless, taking in consideration the entire future product features and being very clear with your provider about future development. Our consultants will help both of you to start on the same page and stay there for the long term.
4 – Cost
The cost of a project is an important consideration. Your amount of initial funding for the project may only allow you to do parts of the development and other parts will be funded in the future based on your priorities. More important than the cost is what put in your proposal. Remember the perfect set of requirements for the project doesn’t exist and the interpretation of your needs changes from one outside company to another. So, be sure that your provider really understands everything you require and again try to check on other projects they’ve completed before.
5 – Technical points
First of all there is no better technology. It is only a matter of knowledge, resources, business experience and objectives. Building a platform that can manage millions of users would cost a lot more than a WordPress or Magento website. Depending on how fast you expand and how much investment you have available I usually recommend to “Think big! but start building in small increments at a time”. Globally, If you have less than 15K budget for a website, I recommend a CMS/e-commerce platform that you’ll improve via plugins. If you have more than 15K in your budget you can think about building your project on a custom platform but still based on well-known framework.
During the very first stage don’t waste so much time on scalable technology like NoSQL. Start building things in a simple and straight forward manner. Then choose your business model and you’ll have a path to scale your platform. Business solutions are lot more difficult to find than technical solutions, which are mathematical. (cf:http://paulgraham.com/ds.html )
6 – Proprietary Solutions
I have seen many software companies who develop their own framework that is not compatible with other systems. They sell products without the source code or any other method that allows you to go with internal staff in the future. This is the worst thing that you can do in the beginning. You need to run away AS FAST AS POSSIBLE. Honestly, before you sign the contact just ask the question how would we convert out systems if someday we want to internalize the development or work with another software company?
As a startup if you achieve great success you’ll have a good chance to be acquired by another company or continue growing your own in-house development team and IT department. So, please don’t be dependent on anyone one platform for your success!
7 – Infrastructure
When discussing the previous points ask the your software company to install everything on your servers. Whether you go for a cloud infrastructure or a simple hosting solution ask them not only to manage the system but also provide complete technical documentation. It will allow you to ask any other technical expert to take a look and be able to understand and examine their work. This is really a matter of transparency and being free from a particular company. Remember anything can happen control your success. Be sure that they also manage and complete regular backups from your hosting providers.
8 – Source Code Repository
Regarding the source code same as the infrastructure you need to control what gets done and by whom. The easiest way is to subscribe to a SAAS repository like http://bitbucket.org or http://github.com via one of that tools you’ll be able to have changes done to the source code. You can manage fixes and version updates in the code daily at your discretion and it belongs to your company, every time you want someone new to work on your software you are able to have it done with no 3rd party delaying the project.
9 – Keep your Project Moving Forward
You must supply tight deadlines to your provider it helps keeps them focused on your project. Continue to engage the contractor before the deadline(s) to help insure delivery on the specified date of the deadline and specify a penalty in the contract if they don’t meet the deadline. Always add margins (Usually a few weeks) in the planning phase to help eliminate any unperceived risks.
10 – During Project Development
As I recommend being agile in your methodology. Ask to your provider to describe to you how they usually communicate with their customers. How often they demonstrate their progress? Are they able put the development project in a testing environment so that you will able to check their progress on regular basis? No matter how professional your provider is you always need to check how the project is going at least every 2-3 weeks. Ask them to share with you a status report every week. (a meeting on skype would be great too) Then you’ll be able address issues during the development and not at the end. It is easier to fix issues now than to have them rewrite a huge portion of the code at the end.
Picking the right provider is not an easy thing to do and can consume large amounts of your time you don’t have. Paying attention to the project and taking one step at a time will allow you to be more confident and ensure that your project is on the right track.
To Your Success,