Sunday, December 29, 2019

API for Beginners


How would you explain a technical term like hashtagAPI to an non-Technical audience ? This perplexity usually shows up when we are in a situation where we are required to explain what we do at work to the people totally unrelated to our fields. This was the topic of my recent talk at Citrix.

Script of my talk:
Introduction:
Every now and then, we are in a situation where we are required to explain what we do at work to the people totally unrelated to our fields.

Not so long ago, I was speaking with one of my elderly uncles and I tried to explain what I do at Citrix. In doing so, I had to use the term 'API'. Not to my surprise, he asked- 'What is an API' ?

How do you explain it to someone who is from a different professional background, different generation/age group.

let me expand the acronym API, which is Application Programming Interface.

If I had to refer to Wikipedia to answer this, it would be:
In computer programming, an application programming interface (API) is a set of subroutine definitions, communication protocols, and tools for building software. 

So easy, right ? Naah. Sounds like a nasty technical phrase, something you would expect only your software architect to understand.

So then, what the heck is an API ?
In order to answer it to my uncle, i seeked some inspiration from our real-life to simplify and explain an answer to this question

APIs execute something of value to the user- “The Restaurant Analogy”:
"If you go to restaurant as a customer, After looking at the menu, you make an order to a waiter, who passes it to the kitchen and who will then deliver what you have asked for."

How does that relate to an API? The waiter is the API. You are someone who is asking for service. In other words, you are an API customer or consumer. The menu is the documentation which explains what you can ask for from the API. The kitchen is, for example, a server; a database that holds only a certain type of data.

As an example, if you are using Uber and want to request a ride- you simply enter the destination in the app and confirm the type of vehicle. Under the hoods, Uber calls 'Ride Request API' to do the job for you.
So my uncle summarized, APIs provide an access to the server/data and helps execute something that's of value to the user. Is that all APIs are all about ?

I said, no wait. There's more to it.

APIs provide a secure access to server resources- “The House Analogy”:
No, let's look at one more real-life analogy:

If Software is the house and door is the one that gives you access to all that's inside. So door is analogous to API. APIs, thus, ensure that other software systems can access their data in a unified and secure way.
Interesting thing in this example is that the door as a key, which only the authorized people (owner, family) has an access to.

Thus, APIs in addition to providing an access to server/data, importantly, ensures that only the authorized parties have an access to the resources. e.g. in the Uber example, you won't be able to request a ride unless Uber knows who you are and you are logged in.

Hearing this, my uncle got even more curious and asked "Can the modern software exist without an API ?"

APIs as a building block of modern software- “The Lego Analogy”:
Let's look at another analogy: you are building a castle and the castle has different LEGO pieces of different colors and different shapes. Those are the different microservices and how they actually and how they connect each other is via the 4 end points which are the APIs.

Thus, You can consider APIs are the building blocks of modern software development.
As an example, at a high level, you can think of Uber built using various sub-systems connected via APIs. For text messages, it leverages Twilio, for maps it uses Google maps, for Payments, it uses PayPal's card.io service etc.

Hearing this my uncle said, Ok i understand now that APIs are technical building blocks for any software product. 
But do they really have a role beyond it ?

I said, lets look at another analogy.

APIs as strategic assets- “The Bridge Analogy”:
APIs can also be explained as bridges. For the cars to go to the other side of the river, you need a bridge. If you have a bridge, you may need to control the amount of traffic: you only let a certain amount of cars pass in an hour. Since it can be fairly expensive to build the bridge, you may also want to collect some toll for using the bridge. This is true for APIs as well: you need to control the data traffic in order for you server not to get jammed. You also may want to monetize the traffic to your APIs (toll gate).

For you and me Google maps is free because our usage is very limited.
But for an organization like Uber, with a heavy use of Google Maps API, they need to pay to Google.

Why are they so important to Citrix ?

APIs let developers build custom (vertical/horizontal) solutions on Citrix tech stack. 

After this conversation ended and i could see the signs of his curiosity being satisfied, only till he asked- Hey, i have heard of another term- Quantum computing. Can you please explain ?

May be next time!!!

My Sketchnote Summary:




My LinkedIn post:

https://www.linkedin.com/feed/update/urn:li:activity:6611238045679218688/?commentUrn=urn%3Ali%3Acomment%3A(activity%3A6611238045679218688%2C6616200517272080384)

My Twitter post:
https://twitter.com/anujmagazine/status/1201107163277475841

No comments: