Mar 18, 2010

Software Product & Customer Values

I learned a simple graph in the past about product features & value to the customers. I would like to share it with you. This blog entry may look "obvious" but over & over how many complex software products are introduced into the marketplace? (& failed miserably)


Let's take a look at this simple graph:(click/right click to view it)

We design a new software product based on some facts, some assumptions, some technical innovation and big assumption is that it will make ton of $. ( This blog is not applicable to eyeballs, VC$ is the source of revenue, grow big, don't worry about making $ and eventually bought by Google type websites!)

In the beginning, the value to customers increases linearly with the product features.(It should, otherwise it's a false start!) Then it stops at some point. After that it's flat - we keep adding new features to the product but it doesn't increase value to the customers. The interesting thing is that after some time, the worse thing starting to happen...the value starts to goes down with new features! The complexity starts the moment when there is no value increase with new features.

The result of complexity for customers are-
  • Months to install & configure the product
  • Needs professional support, professional service, professional x, y & z to keep it running
The product may still be selling but it may end up shelf-ware sale! Finally products gets its result- EOL!

The product team may think that there are still new features that they think is useful to the customers. One of the option is to build a new product instead of keep adding features to an existing product. OR at-least create a next generation of old product.

The best example is Apple: Mac, iPod, iPhone, iPad. The underlying platform is same but they are not bundling into 1 big product. Separate products for separate customers for separate markets.

It's easy to say that these 2 are the most important criteria but to know these 2 requires deep domain/technical expertise + deep insight into customer environment/problems.
[a] Tipping point in the graph
[b] Number of customers who need this product @1

The rate of success of the software product is directly proportional to the size of the circle in the graph.

It's the reason that I strongly believe that business team(product management, marketing, sales) input to the product is very valuable & should be continuous.

In the end, it's the customers who will tell us whether the product is good or not.

Mar 12, 2010

6 Most Important Technologies for Next-Generation Web Computing

  1. HTML 5
  2. JavaScript
  3. PHP
  4. Memcached
  5. Objective-C
  6. Android
Pl don't get me wrong- there are lot's of technologies that are important for Web Computing. No question. This list is about "most" important technologies that will shape the next generation web. Pl feel free to agree/disagree.

[1] Why HTML 5?

The commercial web was a surprise.(ping me for who even got it wrong!) There was a technical rush to make it work, not necessarily better. I used to say that Java is the English language of the web. But actually Java also was not invented for Web(Oak, firstperson, etc). It's just coincidence and luck- call it perfect timing. Remember Applet, HotJava browsers? If Applet was a fantastic failure and Servlet was fantastic success for Java. Servlet showed the power of server side Java along with rest of the J2EE stack. No need to say anything about the spectacular success of J2EE.(It changed the business-web computing for ever!)

Ok, enough. Why HTML 5?

Basically text is the primary native content in web browsers. We need plug-ins for audio, video, etc. The time has come to think beyond text in browsers. We need native multimedia inside the browsers. Now we have enough horse power(cpu,memory,io) in the end nodes(pc,laptop,smart phones,other devices) + broadband to push bits and more importantly enough content in the cloud. No reason for NOT-TO-THINK of native multimedia in browsers.

Apple & Google engineers are the HTML 5 spec authors in W3C. I am sure they will get it correct(along with the community). It may take some time. HTML 5 is already available in browsers(Safari).

By end of this decade, HTML 5 will/should be ubiquitous.

[2] Why JavaScript?
"dynamic web"

Netscape realized from the beginning about the importance of programing language for browsers. It came out with Javascript. There are many criticisms about this language. But the fact is that JavaScript succeeded while Java failed(miserably) in the browser environment. JavaScript is not going to go away. It's the bridge between Web 1.0 & Web 2.0. We need more of AJAX. Its already a core component in web and replacing is not an easy task.

If you have any doubt, ask yourself why Google built a new JavaScript engine called "V8". The tools are not good enough and language needs to be simplified. It's safe to say that this is the only language today that touches not millions but billions of people on the web!

It's a double edge sword and be careful. Do yourself a favor- study the language before coding it.

[3]Why PHP?

My heart says, why don't you say Java/JSP? But my brain says, you can't! The reason is that the 3-tier web architecture(web-app-db layer) is changing/collapsing. The high performance web sites are moving towards a single web layer backed by memcached for storage. It's for speed, scale and performance.

Apache Web Server + PHP = Good Match. Jetty can come close. But Apache+PHP model is proven and has a very big community.

If you are like me from Java land, excuse yourself to buy a PHP book. No harm. PHP is a key web component.

[4] Why memcached?

Memcached is either deployed on top of databases OR parallel to the databases. It doesn't matter whether it's NOSQL or SQL, web applications need performance. It can't go to disk for every request. The cost of memory is going down and it makes (perfect) sense to deploy more memcached servers attached directly to Apache-PHP engine at the front. Just check how many memcached servers are running in Facebook!

[5] Why Objective-C?

It's simple. Just take a look at the earnings or cash balance, if you (still)have question about the success of Apple products. Objective-C is the native programing language for Mac-OS. You need to know this language for any serious work on top of Apple products.

Objective-C has a bit of history and its for another blog.

[6] Why Android?

Google can't do 'china' with mobile computing. (in/out game) Apple success in the devices will put huge pressure on them to start owning end nodes- desktop os, browser and mobile. Android should be a key component for Google and for rest of the industry. I do expect to see many Android devices(not just smart phones) for consumers. The good news here is that it's based on open standards- Java, SQL and Linux.

As I said, there are many languages/frameworks that are important for web computing. IMO, these 6 are the primary technologies that will shape/influence the next generation web. (if not already)

Long Live Web!