Flickr Badge

Friday, September 10, 2010

Twelve Reasons Why Businesses Fail

From Naeem Zafar's book Seven Steps to a Successful Startup:
  1. Solving a problem that most users are not willing to pay to solve your way
  2. Thinking that you can do it all by yourself
  3. Lacking trust among team members
  4. Being overconfident and not questioning yourself
  5. Lacking a crisp, singular focus&emdash;Trying to be everything to everyone
  6. Marketing myopia
  7. Confusing a hobby with a business
  8. Pricing incorrectly and not knowing your real competition
  9. Failing to properly define your market and customers
  10. Not having enough financial resources available
  11. Focusing on a market segment too small to sustain you
  12. Starting a business for the wrong personal reasons
This post is a part of the selected archive. 

Monday, September 06, 2010

5th Sep OCC Meetup Roundup

A couple of links from the discussions at yesterdays OCC meetup

- Naeem Zafar's Seven Steps to a Successful Startup - http://www.scribd.com/doc/15245595/7-Steps-to-Successful-Startup
- Steve Blank's blog - http://steveblank.com/

We started out with a theme - How do you find your first customer?

Suresh pointed out that we need to differentiate between customer (who pays) and a user (who uses the software). What we really need in the beginning is a user who can validate our assumptions. Once you have a validated model, then it is a lot easier to find a paying customer.

The conversation went on to How desperate is your customer's need? The more desperate the need is, the easier it is to find and sell. Sometimes entrepreneurs work on products that that are not solving really desperate problems. A company may have a hundred problems, but stakeholders only have time to only solve 5-10 of them a year. Is the problem you are solving in their top-10?

Here is a story from Steve Blank's book The Four Steps to the Epiphany (summarized):
Imagine a bank with a line as customers wait for an hour to cash paychecks. You have a product that could reduce waiting time to ten minutes. You meet the president and tell him you have a product that could solve his problem. What does the president say?
  1. "What problem?" - The president doesnt realize they have a problem. They won't become customers anytime soon. They are late adopters
  2. "Yes I feel bad about it and give them cups of water" - They know they have a problem but are not motivated to solve it. It's not an important problem to them.
  3. "This is a big problem, we are losing $500,000 a year! I'm looking for a a product that will cut processing time by 70%, cost less than $150,000 and integrate with our back end" - Getting warm. Recognize they have a problem and have visualised a solution
  4. "I requested our IT department to develop a solution, but it doesn't work and keeps crashing." - Hot. They have a problem and are spending money on solutions, but nothing works.
  5. "Boy, if we find a vendor who solves this, we can spend the $500,000 I've budgeted for it!" - Fiery hot. Ready to spend big, but no solution in sight. Perfect first customer
In case we thought the last type of customer doesn't exist, Dorai told a story of how he was talking about his vision to a customer and it was such a desperate problem that they paid him in advance to create a product to solve it. You know you have a market when customers are willing to part with their money even before you have started development. Steve Blank calls these customers "Earlyvangelists".

This tied in with the theme of a track at the upcoming Nasscom Product Conclave, which is Sell, Develop, Market, Sell. In other words, first sell your vision, and get someone to buy into it. Only then start with development. Where most of us think of selling as the last step, it really should be the first one.

From there we went into Steve Blank's Customer Development method and Naeem Zafar's 7 steps (links above). Both methods advocate having a customer to validate assumptions even before you start development.

The discussion also went into 2 common product development strategies

- Find a customer, then develop the product (Customer Development method)
- Create products, launch, and go for customer usage (Web 2.0 VC method?)

and the pros and cons of each method. With that we broke up for networking.

Saturday, September 04, 2010

Usability: Webinar timings



Here is an image from a GoToMeeting's webinar page. I've logged into the webinar and it tells me to come back at another time.

Here is the problem:

Now I have to go to a timezone page and figure out the local time when this event is happening. And if daylight savings is involved there is a really good chance that I'll be off by 1 hour end end up missing the event.

This is not just an issue with GoToMeeting. I've seen it time and again with most webinar providers. And I've missed my fair share of webinars because of messing up the conversion (especially with daylight savings involved!!).

Why does it tell me the time in the PDT timezone? Why can't it use javascript on the browser to convert the time into my local timezone?

Or, at least have a message like "This webinar starts in 12 hours, 45 minutes". That way I get a fairly good idea of when it's going to happen.

Wednesday, September 01, 2010

Usability: The facebook event page



The image above shows an event page in Facebook. Notice that there are two links called Share (highlighted in red).

The top link shares the event with your friends on your profile. The other one, much more prominent, just writes on the event wall for other attendees to read.

What is the chance of mixing them up (or even missing out the top link entirely)?

I've seen instances where people intending to share the event with their friends use the link below, and end up writing on the event page wall.

Is there a way to make this clearer?

Tuesday, August 17, 2010

Dont forget to validate your assumptions

There is just so much you can learn from customers (or potential customers) that you should spend at least one day a week talking to them. You'll be amazed at what you can learn.

Technical founders especially love dreaming up cool stuff and getting to coding.

This is a huge mistake.

I recently spoke to one of our customers and asked them what their favourite feature was. I was stunned when they mentioned that sending email when a comment was added was a killer feature for them.

The shock was because we always thought this feature as a commodity feature. I mean, every tool out there has the ability to send email when a comment is added. We had a whole lot of really killer features, but this was one of the key features??

So I probed further.

Turns out that other tools only send out emails for discussions that you are involved in. Our tool sends out emails for everything. Think of a mailing list - you get every email whether you participated or not. Whereas a forum only sends you notification for new replies in the threads where you participated. It was something like that.

We always thought sending email for everything was a limitation. It was on our roadmap to refine it and make it send email selectively.

Well, guess what? Rather than being a limitation, it was actually a feature! And a killer feature for them.

So I called another customer - and this was an important differentiating feature for them too!

In a startup, we make a ton of assumptions. Don't forget to get them validated. Usually what the customer thinks is important is not what you assumed it would be.

Sunday, May 30, 2010

Too many people are ideating, not enough are executing

Here is a pet peeve of mine that is strong enough to actually wake up this blog from hibernation.

I've been seeing this "ideating" word being tossed around as the new cool thing. Every event now seems to have an ideation workshop or innovation workshop. We've been doing innovation jams at Proto.in for ages now. This weekend we had an IdeaCamp event here in Chennai.

These days even organizations like Nasscom and CII are jumping on the ideation bandwagon.

The premise is simple: get a bunch of people together, bounce ideas off the crowd and make it better.

As an entrepreneur, I find these sessions seriously turning off. I used to be excited about them, but not anymore.

Invariably no one brings up the hard questions: Whats the market for this idea? How will you price it? Are there any competitors? How much will it cost to build? How will you fund it?

And finally, when the event is over everyone forgets the idea and gets back to normal work.

Count up all the ideas from all the innovation jams, ideation sessions, BarCamps, IdeaCamps over the last four years... then count out how many have been executed on. My guess is zero.

The ideas are basically dead on arrival.

So why do we have so many ideation sessions?

Its fun. Its collaborative. And everyone likes to escape from the present and imagine the future. Execution is hard, and execution is definitely not-fun. Ideation is instantaneous, and best of all free! I feel sorry for execution - its hard, long, time consuming, and expensive :(

But lets face it: ideas are a dime a dozen. Execution is what counts.

Everyone remembers Edison's quote: Genius is 1% inspiration, 99% perspiration.

So, how about we stop ideating and start executing?

Thursday, January 14, 2010

Monday, September 28, 2009

Test Driven Development in Python

Here are the slides for my talk at Pycon India this weekend. The talk was on doing test driven development in Python and it looked at 3 frameworks - unittest, py.test and nose.

Wednesday, May 13, 2009

Pattern Matching With PEAK-Rules

I came across this interesting article on Pattern matching in Python. The article asks: Can we recreate in Python the pattern matching semantics present in languages like Haskell and Erlang.

For those not familiar with the way pattern matching works, I've copied the example from the article above.
%% handle(Path, Method)
handle("/", _) ->
not_a_resource;
handle(Path, 'PUT') ->
create_new_resource(Path);
handle(Path, 'POST') ->
update_resource(Path);
handle(Path, 'GET') ->
retrieve_resource(Path);
handle(_, _) ->
invalid_request.
What the above code does is to return "not a resource" if you call the handle function with the path parameter as "/" and any method. If you call handle with any path and method parameter as "GET" then it calls retrieve_resource(Path) and so on.

PEAK-Rules

A method to replicate this in Python was given using match objects, but I thought hey why go through all this trouble when PEAK-Rules does most of this for us?

Multimethod Dispatch

PEAK-Rules is a library that enables multimethod dispatch in Python. Those with an OO background will recognise a specific instance of this in method overloading. When an overloaded method is called, execution can go to different method implementations depending upon the type of the parameters passed. In generic multimethod dispatch, you can route execution based on any criteria that you define. PEAK-Rules brings this sort of generic multimethod dispatch to Python.

An Example

So lets take a concrete example. Our goal is to rewrite the above Erlang code in Python using two libraries: PEAK-Rules and an add-on called prioritized_methods that allows prioritised method ordering.

First, you'll need to get install PEAK-Rules and prioritized_methods. You can pick them up from the links given or if you've got setuptools, then you can just easy_install them.

Then type out the following code:
>>> from peak.rules import abstract, when
>>> from prioritized_methods import prioritized_when
>>> @abstract()
... def handle(path, method):
... pass
...
>>> @prioritized_when(handle, "path == '/'", prio=1)
... def not_a_resource(path, method):
... print "not a resource"
...
>>> @when(handle, "method == 'GET'")
... def get_resource(path, method):
... print "getting", path
...
>>> @when(handle, "method == 'PUT'")
... def create_resource(path, method):
... print "creating", path
...
>>> @when(handle, "method == 'POST'")
... def update_resource(path, method):
... print "updating", path
...
Here is what is happening:

We first define an abstract function handle(path, method). Do this by placing the @abstract() decorator on it.

Now consider this snippet:
>>> @when(handle, "method == 'GET'")
... def get_resource(path, method):
... print "getting", path
...
This defines one implementation for the handle function. It says, when the handle function is called, and the condition given is True (in this case method == "GET"), then call the implementation given below (here: the get_resource function).

Similarly we define the other implementations to be called on some other conditions.

The only thing left is the usage of @prioritized_when. Now, when a call is made to handle("/", "GET"), we see that the condition for not_a_resource as well as get_resource are satisfied. Which implementation should be called? In this case, we use the @prioritized_when decorator and set the priority to 1. This tells the system to give priority to this implementation in case of conflict in match.

Here is how the output looks:
>>> handle("/", "GET")
not a resource
>>> handle("/", "POST")
not a resource
>>> handle("/home", "PUT")
creating /home
>>> handle("/home", "POST")
updating /home
>>> handle("/home", "GET")
getting /home
Pretty cool! The best part of this is that you can dispatch on virtually any condition. While the resulting code is a little more verbose than the Erlang example, its not too bad and it does the job well.

Thursday, April 02, 2009

Wall Street Arithmetic

From Philip Greenspun:
I attended a seminar this evening presented by one of our largest banks (name not mentioned to protect some friendships). A middle manager introduced Eugene White, an economist from Rutgers. “I earned nothing last year,” said the hard-working bank employee. “Zero for 2008. No bonus. No options. No stock.”

Over dessert and coffee I asked one of the guy’s subordinates if the boss wouldn’t also have gotten some sort of base salary. “Sure,” he replied, “but maybe as low as $500,000 per year.” How did that round to zero? “Well, he might have made $12 million the year before.”

And you thought Peano arithmetic was challenging….

Sunday, March 15, 2009

10 Trends in ICT: My Talk At VIT Entrepreneurship Awareness Camp

Here are the slides from my talk at VIT yesterday. The slides may not make much sense without the actual talk though.

Thursday, March 05, 2009

"Cutting Costs With Agile Software Development" Seminar In Chennai



The Ministry of Micro, Small and Medium Enterprises (Govt. of India)
(MSME) is organising a 1 day seminar series on "Cutting Costs with Agile
Software Development" on Friday, 20th of March.

Topics that will be covered:

  • Business Case for Agile Software Development

  • Introduction to Scrum

  • Adapting to changing requirements

  • Benefits of self organising teams

  • Releasing quality software

  • Agile metrics

Plus an open discussion where you can bring up the topics you're most
interested in.

Click the image on the left for all the details regarding content and registration.

Thursday, January 22, 2009

Sunday, January 18, 2009

My Talk at Genesis

I gave a talk last Sunday at Genesis in IIT, Madras. My talk was on planning the operations. Here are the slides for the talk. Since they don't make much sense without the commentary, I have attached a bit of commentary as well.

IIT Business Plan Workshop
View SlideShare presentation or Upload your own. (tags: genesis event)


Why Plan
"Would you tell me, please, which way I ought to go from here?"

"That depends a good deal on where you want to get to," said the Cat.

- Alice in wonderland

The first part of the talk was about why you need to plan in the first place. Many students believe that the idea of the operations plan is so that you can show it to venture capitalists and get funded (or perhaps win business plan competitions). The point I tried to emphasise is that the plan is something that helps the entrepreneur with the big picture. Running a startup is not a matter of following a fixed set of steps until you get rich. Rather, you will be fighting fires every day as something or the other goes wrong. When you get consumed with all these small fires, it is easy to lose the big picture, and thats when you need your operations plan to get back on track.

Rules for operations planning
With that I talked about 5 rules of operations planning. Here they are:

1. Know Where You Are
At any point you need to know where you are. If your plan calls for one year of development before you release a product, then you should be able to know if you are on track at any point. For this, you need to have intermediate milestones where you can check your progress and adjust your plan accordingly. For a software startup, I would say you need a milestone at least once a month. This would be a release with a subset of features of the final product.

2.Churn, baby, churn
You may have done a lot of market research, but you cannot gauge the market reaction until you actually get your product or service into the market. Therefore, get it out as soon as possible - even if it is only a small subset of your final vision - and then use market feedback to drive the product. In order to do this, you need to break up your product or service into chunks that are complete and can be released.

3. Be Flexible
Often opportunities arise that could not have been predicted at the start. Maybe users are using your product in ways you did not plan, or perhaps a new opportunity presents itself. A startup needs to be able to take advantage of these opportunities. A small team of generalists will usually trump over a team of specialists, because generalists can change direction quicker.

A story: Sabeer Bhatia and Jack Smith wanted to start a company to do web based databases. It was entirely an accident which led them to develop the first web based email system - Hotmail.

4. Know What Is Important
You need to know what is important for the product to be developed. Focus on what needs to be done to get your product in the hands of your target customers. Startups will sometimes spend money on a nice office and save money on developer workstations. While this is great for the founder's ego, it's counterproductive for the business. As far as operations go, spend on productivity enhancements rather than ego enhancements.

5. Be Ready To Start Again
"Plans are useless, but planning is invaluable" - Dwight Eisenhower

Operations planning is not something that you do at the start, but it's something you need to be continuously doing. New information keeps coming up which invalidate your old plans. Rather than stick to the old plan, throw it away and plan again. Don't be attached to your operations plan - its essentially useless - but the act of planning is very useful.