Ten Things I Learned The Hard Way: A Guide To Building Software
Somewhere in the mid 90?s, my company, Brook Group, underwent rapid growth as it converted from being an advertising and design firm to a web services firm. We were running 3 shifts at the time and we only had one manager: me. Coming from a design background, I had a lot of (sometimes very difficult) lessons to learn about technology projects and managing folks who make technology products.
I imagined a way for me to post tasks for each employee without knowing HTML, to make managing the late night folks easier. My programmer created it and the lightbulb went on. Wouldn?t it be great if we could create a series of these types of widgets to allow any user to post content to the web without knowing HTML? And that is when Tacklebox, my enterprise content management system, was born.
I have survived building 4 versions of Tacklebox, the latest of which was actually launched. I learned these lessons the hard way and I want to share them with anyone tackling that sort of project. Think of this as a fundamental, practical, elementary guide to building a software product.
1. Patience is a Virtue. If you are starting from scratch and you are not well-funded, and you plan on bootstrapping the development effort, realize that patience is a virtue.
2. Know thyself. This means know your limitations. If you don't know how to do software product development and you are bootstrapping and starting from scratch, get people involved who do know how to do software development, product development, project management, product pricing, product marketing... You be the entrepreneur, idea person, but don't try to head everything up yourself; you will fail out of the gate.
3. Make Something. Don't go to Venture Capital folks or potential partners with a flip chart and a pitch that sounds something like, "This is going to be really cool"... VCs want to see a working product. And do not go to VCs too early; you might lose your chance to get funded because you haven't done your homework.
4. Plan. Plan. Plan. Start the project with a plan. It can have basic elements like what this product is going to fix, what is the business problem, who is the audience, and on several levels, why it will be better than the competition? And yes, you do have competition.
5. Get the Right People involved. Whether you're hiring or looking for a partner, two guys in a garage are not the best choice for building a software product. Sometimes those two guys in a garage dress up good. Maybe they move into an office space and start a company like real grownups. You had better make sure you can identify the difference between a real company and two guys in a garage that just graduated. Ask them if they have business insurance, errors and omissions insurance; ask them for Service Level Agreements. Talk to them about CMM levels.
6. Don't use proprietary anything to build your software. You'll be tied to that proprietary code forever, or it will cost you a small fortune to have it removed from your source code.
7. Independents are independent. They will hold you hostage one day. Don't hire independents to build your product. If you hire a team to build your product, focus on hiring "company people."
8. 95% of your success will come from hiring the right and best people, 5% by training people. Don't hire to train, unless you have the best and brightest around to do the training, and a multi-year commitment from those who are getting trained that they will stick around!
9. A caution about partnering. You don't want your intellectual capital sitting in the brain of a contractor. Make sure that whatever you do, you own your source code outright. You need to hire the right people and make sure that their knowledge -- your capital -- stays at home.
10. Always learn from your mistakes. Sometimes we joke about when we are going to stop learning lessons the hard way. Probably never, but make sure you learn each mistake, so you don't repeat it. And just when you think it?s safe, new ones will be right around the corner.
About the Author: Kara Brook is the President and CEO of Brook Group, a Web site development firm near Washington, DC. Recognizing the need for user-friendly Web site management, she conceived Tacklebox, one of the industry?s most exciting new content management systems.