More often than not these days, entire companies are built on software written by the co-founders. The idea itself, execution and marketing of the company have major roles in determining the success of the startup, but as little as it may seem in the beginning, the development platform that you select may have a huge impact on your company down the road. Here are a few suggestions if you are looking at developing software internally, externally, on-shore or off-shore so that your company may stay agile in the fast-paced startup world.
1- Don’t try to write your own software framework! (i.e. don’t start writing from scratch) – A software framework is a re-usable design for a software system. Carefully selecting and building on top of a proven framework will save you hours of work down the road. As development projects grow over time, it is a challenge to keep track of changes and flow of control throughout the application. Using an established framework keeps you from having to program common logic for each software project, so you can get to the meat of your application. There are a few projects that will require a custom development framework, but 99% of the time yours won’t. Consult your software-engineering friend if you aren’t sure.
2- What framework should you use? – Yes. Just find one that you like and use it. There are plenty to choose from. Depending on your coders’ coding expertise, be it yourself, I would suggest Ruby on Rails, CodeIgniter, Cake PHP, Zend and even Microsoft’s .NET framework.
3- Use open source software. – First off, just because software is open source, doesn’t necessarily mean that it will be cheaper to implement. However, open source software usually comes with great crowds of followers and devout users and you are allowed to distribute and edit the software however you please, and this is what will save you money in the long term. Any framework, library or methodology of software development you jump behind, you will want to make sure there is a devout group of followers included, that they’ve been around and don’t appear to be going anywhere. During the late nights and tough development times when nothing is going right, they will be your source of inspiration and much needed help when you can’t solve a problem with their code or your own.
4- Don’t go cheap on development. – If you aren’t a coder and will have to hire outside help for development, here are a few thoughts: Look for a team with proven experience in the area of your application. Find a team that asks the right questions and aren’t afraid to tell you no about certain features. Be sure the development team you select are heavy-users of the platform (i.e. web, desktop, iPhone, etc.) you are building your app for. Most development projects will cost a significant amount of cash, especially if you are wanting to build a completely custom web application. This may vary greatly, but in general I wouldn’t look at spending less than $10k on a custom development project. That $10k can grow very easily when you include branding and graphic design into the mix. Be sure to have on paper exactly what you are expecting from the development team, at the agreed price and timeframe with both parties signatures.
5- Development cost too much? – If you can’t front the cost for a solid development team and you are boot-strapping things, you may need to look at divvying out some equity to hedge the development cost or guaranteeing X% of the first Y sales. However, be careful to who and how much equity you begin throwing around. Only reserve this option if you have found a development team you truly believe in, you are comfortable going into business with them, and simply can’t afford the cost. Also, if you are giving up equity, you will want these people to be inherently passionate about the project itself, otherwise you might might find yourself with a disinterested and unmotivated development team.
These are just a few things I’ve learned down my journey of developing software and by talking to other software developers and companies. This barely begins to scratch the surface of things to look for when developing software or hiring a development shop.