25 ingredients for Internet startup success on a shoestring budget
While being a part of several startups over the years, both someone else's and my own, I learned, sometimes the hard way, that one can't hack through a startup/development phase and hope to succeed just because he has a great business idea. Following are the "25 ingredients for Internet startup success on a shoestring budget" from a hands-on CTO perspective (that is me).
- A technology startup must have both, business domain expert and hands-on technology expert as partners/founders. Could be the same person (though a rare occasion).
- You must create a business plan. It is not true that business plans are only required to raise capital. Business planning is the foundation of any business.
- Create detailed use cases which describe all the features of the system. These don’t have to be formal UML use cases. Plain word document will suffice.
- Create rough page mockups to describe what content goes in to each web or mobile page. One doesn't have to be a web designer to do this. As a matter of fact, hand drawn sheets of paper can always be scanned as used as mockups.
- Design overall system architecture. Following has to be considered: (1) architecture has to work with minimal set of simplest technologies to get the job done; (2) architecture has to be broken into independent layers, services and components which can be developed independently by different developers. This can be achieved by well defined API (Application Programming Interface); (3) architecture has to account for growth.
- Create development project plan broken into phases of 1 to 2 months each. Target no more than 6 months for the whole project. Break into multiple projects (deliverables) if the project spills over 6 months, but make sure that most of the core business functionality gets into the first deliverable.
- Post web/graphics design portion of the project on elance. A sophisticated web site can be designed by a professional offshore design firm for just $1000 to $5000 depending on complexity. This is 5 to10 times less than hiring a local firm. The result is a set of all web pages, templates and graphics for the project.
- Post development (coding) portions of the project on rentacoder.com or elance.com. Make sure to break the project into smaller, independent chunks. This can only be achieved by right architecture for the whole system (described above). This will allow to hire multiple developers to work in parallel as well as minimize (or even eliminate) risks of jeopardizing intellectual property (the source code).
- Setup a dedicated test/development server with a reputable hosting facility. These may cost $80 to $120 per month for a well configured Linux or Windows server which will serve as a test platform, development integration platform, and source code repository.
- Source code repository must be configured with limited access based on developer role. One developer should never see all the source code. He should only be able to work on his portion of the system.
- Review web design and programmer project bids, review portfolios and work samples, hire designers and programmers. This is where the bulk of the "shoestring budget" will be spent. And it's going to be at least 3 to 4 times less then hiring local contractors. This is where having a hands-on partner/CTO is a must, because once the system is built, CTO should be able to maintain it. Once revenues start coming in, CTO can hire local developers, train them and let them maintain and improve the system.
- Review web designers' work on a daily basis. Make sure they reply within 24 hours to every question/request (they should agree to this before you hire them).
- Developers must provide high level design and estimates for each assigned task before they start any coding.
- Developers must commit code daily to source code repository. It must not break any other code and it must have unit tests for each granular piece of functionality.
- Deploy functional features to test server weekly so that the code is integrated and latest functionality can be reviewed and tested.
- Review committed code weekly and make developers correct anything that doesn't pass the "review".
- Developers must email a quick daily status update.
- Developers must email a detailed weekly status report which includes tasks completed, in-progress and any issues.
- Setup hourly continuous integration of committed code with automated failure notification via email.
- Conduct 1 to 2 weeks of thorough testing on test server after each 1 to 2 month long phase. Basically, allocate 25% of total time to testing and debugging.
- Make a list of friends and family for initial test drive and feedback.
- Flip a switch on for friends and family and let them use the system for up to 1 month. Ask them to fill out a feedback form.
- Perform minor refactoring based on friends-and-family feedback.
- Roll out the system for public use.
- Announce to the world via LinkedIn, Facebook, Twitter, MySpace or whatever other social and professional networks are frequented by your intended audience.
I intentionally omitted all the business development, marketing and financial related ingredients. They deserve a separate article.


