Answer is simple... Apple is led by a Innovation method that leads to a revenue model. In clarity the developers find a platform on which they can build a huge set of apps and tools and use them as the product to earn revenue out of it. Similarly if you see the path taken by Amazon Web Services and Salesforce it is clearly visible that they have turned out from being niche products into very strong platforms. Millions of tools, apps , products and Integrations now revolve around such platforms and they have become the Oracle.
I recently read a small snippet that said that startups should build desktop and mobile apps in the early age of the launch to be successful... I think more importantly they should build a set of API's and SDK's around at the time of their launch. The API's will help them to let open features that can attract developers or products to build tools and apps around. I also feel that this should be a step to become a platform sooner or later. However one has to be careful that not all products have successfully become good platforms... a lot of vision, hard work and investment is needed to do that... Importantly right attitude is needed and long term thinking required from the stakeholders to do such thing...
Here are my few tips on why one should look to be a platform and what care should be taken...
1. As opposed to a product with a few API's available, platforms gives luxury to community to build things around it. If people think they can build things around you and use it for some revenue creation... you are going to be successful on how fast you accelerate your platform.
2. A platform has a longer life than a product... specially because it always invites and controls a lot of apps around. More than anything you are sure you would always have a set of old customers who would stick to you ONLY.
3. If you are new it will open up new avenues for Integrations... if you are OLD.. you have scope to drive the market towards you.
4. In the world of clouds... just a set of API's will not take you anywhere.
But building platforms is not a easy thing like I said.. you need some support, trust , effort and vision... Above all I think an organization should think of becoming a platform only if:
1. They have readiness to Invest :
Platform building is more of investment for a long time to reap the benefits out on the later stage.. A lot of companies simply want to have quick small web services to fulfill immediate needs and that's it. A lot of times the created services or API's or SDK's are unaligned.. they simply cant cover one single module... Moreover if you have a set of API's or services created years ago, you need the thought to upgrade, refactor them sooner.
2. If you don't sow, it wont reap.
One of the products i worked on.. API's started to become key. So important to a level that a whole bunch of internal tools were created around to help the customers use them... however there was no effort to ideate and align the model of such API's to a platform... Effect? Well they just end up as API's.. and you always try to change the existing ones to fit the needs coming ahead.. without really building any new.. If you are not refactoring and re-architecting the core time and again... you are running at the speed of a celeron.
3. You have a strong marketing plan for your platform
A lot of products and platforms fail because they dont know how to market and sell there platforms.. sometimes to whom and sometimes where and why...A year ago I met a retailing tool provider who had some experience on Salesforce developer program... In his first meeting he asked me about all possible tools and products we use.. in his second meeting he came with 100 different ways of Integration of the apps with the products we use... Interesting? Yes your marketing Team should know who and how to market the apps...
4. Document , Document , Document
If you aint document your API's upfront and the platform details upfront.. chances are you will never do it.. Once I heard from myself say this while working on the Web services for our old product... "Everyday I sleep, I feel a missing organ of my body when I dont see a wiki driving the platform details with examples, samples , usability , case studies of the API;s and SDK... ". This should be your first step....
5. Separate vision for Platform, Aligned to a product roadmap
Imagine you have a CRM and to get it up and running as a platform you create some services for Lead Management, some for reports and some for CR.. its not going to work.. take the vision, pick the important piece of the app.. and build everything possible around it as API;s and SDK... let it be used by some... I always feel a need to have a separate vision for building a platform... in terms of scalability , performance , robustness and communication... and then align it into the roadmap...
Its not a cup of Tea.. believe me.. you cant just have 500 Services and API's and without effective communication. Services provided by products like Mashery can come handy here...remember if you removed a XML tag from your response it can break 20K tools using that service... and this is not a easy thing to manage and maintain.
Now if you are a startup, a settled product , a nice market product having some or no API's.. and you think your product has a good future... make it great... think on making t a platform... and think of investing in that platform... A platform is any CTO's dream... any Engineering Director's vision... how you make your Product achieve it is something you have to think... Go think