Fighting My Instincts

Project management is about combining what’s now with what’s next. A good project manager knows what status the project is right now, but also has a vision about where the project needs to go. At some point, the vision is transformed into a series of features and each feature is described as a list of tasks, that someone on the team needs to do.

Entrepreneurship is all about vision and getting there. Experienced project and product managers understand that there is a very long process between having an idea and having a product. Developers don’t always notice this. We work in smaller chunks. We tend to dive real deep into much smaller ponds. We have greater understanding of detail, but less understanding of the bigger picture.

You have to stop thinking like a developer

Building a startup is a process. It starts with an idea. The idea has to go through market validation. Do people want what you are making? How can you tell? Only then you can start developing. In many cases, what fails a startup is not the technology, but the product-market fit.

I’m a developer. I think like a developer. My instincts tell me:

This is a really cool piece of technology I’m thinking of. If I write this software, I bet everyone will love me and shed me with riches and prestige and hot chicks. RESTECP.

My instincts are stupid. And shallow.

You will not get rich by writing great software. You will get rich by writing get software people want to buy. Or at least, software they want to use. Jeff has said it better than me:

A smart software developer realizes that their job is far more than writing code and shipping it; their job is to build software that people will actually want to use. That encompasses coding, sure, but it also includes a whole host of holistic, non-coding activities that are critical to the overall success of the software. Things like documentation, interaction design, cultivating user community, all the way up to the product vision itself. If you get that stuff wrong, it won’t matter what kind of code you’ve written.

You have to start thinking like a product manager

The product manager is the person responsible for the transition between what the market wants and what the product is. There are many different approaches to product management, but one of my favorites is that of Eric Ries. Eric teaches a type of product management that is based on rigorous scientific methods. I love these methods because I love numbers.

Here are the pillars of the Lean Startup:

  • Progress is Learning per Dollar. You are looking for a product-market fit. Each dollar spent, should get you closer to product-market fit. Don’t measure progress in features and lines of code. Measure progress in the maximum amount of information you can gain from each dollar. This means:
  • Measure. How is my product performing in the market? The best performance indicators are concrete. How much time does a user spend on my site? What percentage of people downloading my demo actually buy the complete version? What is the Life Time Value of an average customer pay? How much does it cost me to get a new customer?
  • Split Test. Does this change improves the performance of my product? Have half your users use one version, and half use the other version. How did performance compare? There are simple mathematical tools for hypothesis testing, and they are highly recommended. Make small changes at a time, and measure all the time.

These ideas may be easier to implement for a website, however, the practices of the Lean Startup are translating into other fields as well.

I am fighting my instincts.

I am a developer. My instincts tell me I should write the code, right now! Every time we talk to a potential customer or potential investor, I think, “screw this. I should be coding. If I were, the product would be done, and they would all buy into it in great quantities”. But we still hear “No”, more than we hear “Yes”. And sometimes we hear a “Maybe”, which could be a “Yes”, if we understand the product-market fit better.

We still need to find a way to get “Yes” all the way through, before we invest too much in code that does not improve our product.