The Startup Meme – Phase 1, the Prototype

I’ve worked with several funded and non-funded startups during my time here at Microsoft. Having seen what works and doesn’t, I thought I’d throw together a series of posts on how to startup a software company.

First and foremost, you need to have an idea. Once you have an idea that you want to execute on, the flowchart for launching your company looks fairly straightforward:

Idea –> Prototype (Alpha) –> Beta –> Release

In this post, I’ll talk you through some of the necessities as well as ancillary things you’ll need to be thinking of as you start out getting to the first phase, the prototype.

Initially, you’ll need

  • (to borrow from Guy Kawasaki’s Art of the Start) a Mission Statement – Sounds simple enough, right? You’d be surprised how many times startups are unable to articulate what they are trying to accomplish. This one-liner will also help you with your co-founder(s). If at any time it seems like the team is veering of course, refer to your mantra, your mission statement to bring the project back on track.
  • a Developer, a UI Designer, Tester – It’s very likely that all three of these could very likely be the same human. Some of you may disagree that the UI designer and the developer need to be different people, and that’s perfectly understandable. Most startups only have finite resources.
  • a Product Manager (to gather requirements), a Program Manager (to execute and monitor the timeline) – It’s very likely that your product manager may very well be your program manager, which is also fine. While it sounds preposterous to have one PM for one developer, think of the PM as the “yin” to the “yang” – simply put a developer needs to have a partner who is not a developer. If you decide to add more people, ask yourself how you see them contributing. And remember that your founding crew has to be a stellar list with a good amount of experience and passion.
  • a name, and a web domain to go with it.
  • to understand the business landscape. Do you have any competitors? If so, why would users want to use your product? What problems does your product solve that no others do? How many competitors do you have? Backing up your answers with numbers will also help you.

Why a Prototype?

  • Building a prototype for your startup is a lot like building a prototype working at any other (medium or large) company – it requires the same steps with probably 1/Xth the number of resources (where X > 1)
  • You get to validate your idea and create a proof-of-concept for your own sake.
  • A live demo speaks volumes – a working prototype will make it so much easier to sell the idea to others (when the time is right).
  • Help raise money – I remember Seth Sternberg from Meebo speaking at a conference not too long ago. (paraphrasing) He emphasized that you will be unable to raise money without a working prototype. Unless you are Marc Andreessen (Sternberg didn’t say that). In fact, some investors occasionally ask for how many users you have been able to acquire and they use that as a basis to fund the business. Your prototype will be what your future investors will use to fund your idea.

Getting to a Prototype

  1. Keep Things Dead Simple – I can’t emphasize this enough. You’ll have plenty of complexities and complications to deal with, so plan to keep everything else as simple as you can.
  2. Your Prototype is not your Product. A prototype is just that, a prototype, a working example, a proof-of-concept. Don’t over-engineer. (as much as it pains me to say this) Some amount of kludgy hacked up code is ok. Create a simple product requirements document that will help you identify your milestones and throw it on a simple Excel spreadsheet, but enumerate it nicely.
  3. Create a Timeline - Take a first crack at a timeline. You’ll probably revise your timeline several times before you get to your prototype. Be sure to give yourself lots of cushion when you’re planning. If you think you can code feature A in 40 hours, put down 50 or 60 instead. I wouldn’t advocate using Microsoft Project (just yet) for managing your timeline. A simple shareable Excel spreadsheet is plenty to manage this at this time.
  4. Keep tabs on everything you spend, and use a simple Excel spreadsheet to track your expenses.
  5. Identify your goals and write everything down. Setup a private Wiki. Make a note of everything, categorize it and prioritize it. Try ScrewTurn Wiki or Mindtouch Deki or FlexWiki. If you’re lazy and don’t want to host your own wiki, try PBWiki.
  6. Start Wireframing – Use a product like Expression Design to start wireframing what your application needs to look like.
  7. Ask yourself what is going to make your prototype complete? What do you absolutely need to have in here to validate your idea, to make a good demo, or to sell this idea to someone else? This could include :
    • Tools and Platform - Given that your prototype is your immediate short-term goal and that your prototype has to be coded, picking a software platform is probably the most important decision you will be making. However this is really very easy to accomplish and can be boiled down to just 2 factors (in order) :
      1. Knowledge of the Platform – your goal is to get to a prototype in X months. You don’t (or your developer doesn’t) want to spend time learning a new language or a software platform that you are not comfortable with.
        • ASP.NET (includes languages such as C# ), PHP and Ruby on Rails are examples of web platforms.
        • IIS & Windows Server is an example of a web server platform.
        • SQL Server is an example of a database platform.
      2. Cost – The cost of development can be attributed to the following necessities. Of course, this doesn’t include the cost of time or salaries that need to be paid.
        • Development Tools, Design Tools and Database – You may be able to work around paying for development tools. Visual Studio Express , for example, is a great free dev tool. It is mostly good enough in terms of features to help you get to a prototype. If you’re neurotic like I am, you can always use ‘ vi ’ or ‘vim’ (or ‘gvim’) and hardwire a function key to compile your project for you. While SQL Server Express is a popular SKU that is also free, it may not suffice. To build a good overall experience, you may want to consider using tools to help you design your site well. Tools like Expression Design and Expression Blend will help you polish your application’s look and feel.
        • Operating Systems – If you are working on a web project and you want to self-host for starters, typically you would need a few instances of you operating system. Operating systems like Windows Server 2008 Web Edition  cost (only) USD469.
        • Hosting for web apps – (see “Hosting Provider” below)
        • There are also programs out there that provide you with a decent amount of software with a minimal dollar commitment. The Empower Program is one such example.
        • On GigaOm , I came across this article: “ F|R Crib Sheet: 15 Sites to Cut Your Startup Operating Costs
    • User Experience – The user experience for any product is paramount. UX is what differentiates a good site from a great site. A good UX will also help you think of a good and clean UI (keep in mind, UI != UX).
    • Project Management / Source Code Control – Hosted source control and project management services like CVSDude (don’t let the name scare you, they do Subversion as well ;) and Unfuddle sound very enticing (I haven’t used either of these personally). But if you have a spare box sitting around and your team isn’t overly geographically dispersed, throw Subversion on there and code away.
    • Services – Depending on what your application does, you may have the need to access a online services. The Windows Live Platform comprises of several APIs offered to you at no or minimal cost*.
    • (Cloud) Hosting your Web Application – Server Intellect, Discount ASP.NET, RackSpace etc. offer solutions for hosting. On the other hand, we are definitely seeing an interesting shift in applications being hosted in the cloud. For a startup, hosting in the cloud makes a tremendous amount of sense, especially when the need for scale arises. Hosting in the cloud also makes sense from a cost perspective. GoGrid, for example, offers a pay as you go plan where you pay nothing upfront. This would work tremendously for a startup in their first few months where they see little to no traffic. However the startup is ready if and when they get TechCrunch’d or Digg’d.  Mosso is another example of a company that offers cloud computing options.

Suggested Reading (in no order)

In future posts, we’ll discuss (again in no order)

  • Open Source Solutions for Startups
  • Incorporating your company
  • Investors
  • Revenue Models
  • Getting to a Beta
  • Community and PR
  • Startup related Events
  • Startup Programs

Ready? Start coding. Go!

ai

* – Please refer to the Windows Live Terms of Use to understand at what point you would start paying to use the APIs

Update: Removed an image I used without permission. My apologies.