Almost in the same realm of my previous post on the ‘Cloud’, I feel compelled to comment on the concept of APIs and why this has become very important in the evolutionary journey of today’s technology landscape.
[Please note, I have borrowed heavily from various internet articles and writings, and will make every effort to highlight those sources in an expression of gratitude for their insightful writing]
So what kind of an eye is an API (Application Programmers Interface)?
In this web article there is a good description of what an API is. Here is my simplified explanation.
An API is a way developers can expose the capabilities of their own software for other developers in a licensed way, to be used for good, not evil.
Thus, the community of software developers can easily extend and augment the capabilities of their own applications by judiciously using APIs exposed by other software. So, if someone invented and API to translate English to Gibberish, then others can use this feature in their own application without having to re-invent it. Its as simple as that. However, as always, a simple concept such as this, can be used to develop very complex software systems that may make people a lot of money, and as we all know, where ever a lot of money is involved, complexity creeps in. In this post, I will provide a simple minded point of view hoping to demystify this for other simple folk like me.
An Eye for an API
In an ideal world (or my utAPIa), developing software would be like putting together a jigsaw puzzle. Pretty much every capability one might need has already been invented and developed by someone else. If all those are exposed as APIs then all we need to do is to cobble together these capabilities in the right order and extent to develop own own software. Its almost like APIs are like different colors developed by other available in our palette and we can create masterpieces by using them artistically. Even though, this would be nirvana for every engineer, it would be hell for the business minded folk and the accountants. So, like most times, engineers lose, accountants win. This Utopia will never exist, at least not in my lifetime.
So, then what?
Well, it is becoming quite clear that the Cloud and Cloud enabling software is the future. Its is the need of the hour as discussed in my previous post. In addition, a lot of software is now evolving into an ecosystem, where they hope to provide every thing that a consumer would want for a particular feature in one place. For example, companies like Intuit Inc. would like to be the one stop shop for all Small Business Computing and Management needs. This is a huge undertaking for any one organization or entity. For developers to create meaningful applications for small businesses, they would need to develop the same core functionality (e.g. Payroll Calculations, Tax Calculations, Accounting Calculations) that Intuit may have cracked the nut on. So, in an effort to build innovative and customized solutions for their customers, software developers can access the licensed APIs from Intuit Inc. to extend their own applications, and give birth to new ways to solve their customers' problems. In the end, every body wins. Intuit's ecosystem for Small Businesses expands by leveraging the brainpower of small time developers who make money by serving the un-addressed problems of specific small business owners. Another company who has excelled at this API mechanics is Google (case and point the Google Maps APIs) and Box.net (a Cloud based storage solution company). I am especially a big fan of Box.net, whose ecosystem has grown by leaps and bounds and has attracted lots of developers to enable cloud based storage in their own applications using a simple and well defined API. Since, there is money at stake here, some APIs require licensing, which is not bad in general, after all, all these companies are not for charity. I do encourage you to go and explore these quoted examples to get an idea of what I am talking about. If you have questions, do let me know.
Hey..there is a bug in my API (sigh, I'll still eat it)
When companies deliberately cripple their APIs and prevent others for fully leveraging the entire feature set of their applications in order to prevent anyone from getting better at their own game, I get bugged. If you are offering an API, offer it in good faith, otherwise do not bother. In addition, no one should put restrictions on how and for what the APIs can be used. Twitter did a bit of that early on, by making sure that someone else could not make a better twitter client than what they were offering. Then they did something even more ridiculous. They decided to change their APIs without offering backward compatibility, thereby forcing a lot of developers to redo a lot of their code. How silly. Twitter got a lot of bad Karma from this in the developer land, but since there is now other alternative, developers pouted for a while and then succumbed to the pressure and accepted this torture from Twitter as their fate and moved on. However, Twitter lost a lot of respect in the developer community as a result. On the other hand, Box.net and Google remain near and dear to developers by showing general common sense in dealing with their developer community.
API or bust
Really, its as simple as that. Every software capability developed by a company must be made extensible so that the collective pool of engineers in the world can leverage them to further the cause of that company and theirs as well. Every company must be inclusive of this unharnessed power than can truly change the technology landscape. If a company does not enlist the support of the developers through APIs, it will eventually wither. A good example of explosive growth with the correct use of APIs and expanding the developer community is Salesforce.com. Amazon Web Services is also a very good example. A good example of a company struggling due to lack of an API is SAP.com (though they are trying, but in my opinion, its too little too late).
I, the people, We, the developers
While there are lots of reasons for the success of a software company, expanding their reach and influence through the community of third party developers has to be a significant contributor. The developer community now holds the power to take a company from mediocrity to a major industry success.
So, remember you folks with fat paychecks and big tall accounting and business hats, the developers are your friend and they are not stupid. Treat them right, and they will make you wildly successful. So, the next time you walk past a developer, give him/her a hug...for they deserve it!
So says I!