An increasing portion of online interactions are between machines, and not humans. There’s a goldmine of opportunity in writing API-centric software
When developers design new software products or applications, they usually start with the user.
What does the UI look like?What is the user experience going to be?
What commands, signals or buttons need to be coded in?
This approach has been the de-facto standard since the OS era, and it has become even more rooted in the age of touch screens.
However, we’re fast reaching a point where there are more devices than there are people. This is an interesting inflection in our species’ interaction with computational devices, where for the first time, two seemingly unrelated devices are more likely to communicate with each other, and not with a human first.
It’s not the “Singularity” per se; but it’s one of many steps that are being taken to approach that event.
In this new reality, system-to-system interactions dominate people-to-system interactions.
The results could potentially transform our way of life.
In all honesty, a lot of this new phase in software development is being driven by the Internet of Things (IoT), a concept poetically defined as
an environment in which objects, animals or people are provided with unique identifiers and the ability to transfer data over a network without requiring human-to-human or human-to-computer interaction
Simply put, imagine that every thing you own (or the most common things you use on a daily basis) has a tiny little computer embedded in it, and is connected to the Internet. Your possession (it could be literally anything, say for example, your coffee mug, or the lights in your home) now has the ability to communicate with other devices on the internet — not just your personal laptop or smartphone — but other similar devices.
The ramifications are huge. Your fridge, for example, could detect that you’re running low on milk, and send a purchase order to Instacart to deliver milk around the time that you’d be home from work (which your IoT-enabled lights would be well aware of).
But how would they do that?
The fridge, for example, would need to communicate with Instacart, and provide a delivery time, which it can obtain by consulting your lighting system.
Now, imagine that you’re a software developer trying to program all of this. Doing this — right now — with the state of the internet as it is — is going to be immensely difficult.
This is because our paradigm of thinking is centered around the human user, the human interface, the human operating system
Our human-centered approach to software development has worked fine so far, but it’s not going to work well when you’re designing software for devices.
Changing this paradigm is tough. It’s hard trying to comprehend the multi-paralleled logic that computational devices would be capable of when processing their tasks.
In the past, many patchy solutions have been created: SAP systems, machine-readable CSV sheets, clunky databases, the list goes on. Not only do developers have to worry about getting all the assests needed to build a decent software platform, but they also have to manage a complex, interlaced system with many functions.
What if you, the software developer, freed yourself from this spaghetti mess?
The answer lies in devolving away complexity into packaged services.
As devices increasingly dominate, the systems used to connect them are becoming more structured in the form of what we call Application Program Interfaces (or APIs).
APIs are now the de-facto mortar that glues together and connects all of our digital architecture.
Over time, this layered complexity is pushing software engineering away from a everything-and-the-kitchen-sink development model (also known as full-stack engineering) towards creating highly specialized modules that connect with other modules via APIs.
But what does this mean for the future?
Computers and smartphones are not going to go away - in fact they are going to be increasingly embedded in our lives, with some functions being devolved away to be handled by other devices not previously seen.
Wearables and smart clothing are a prime example of this. Other surprising products include Digit Savings, which does not have an app, and communicates with the user exclusively via SMS.
This makes the case all the more important for an API-centric view of software architecture.
There is immense opportunity for companies to develop well-written software that is built with the API at its center, rather than users.
While these products may never be used by consumers directly, they may well be used by large multinationals in industries like shipping, logistics, banking and manufacturing to better coordinate the millions of machines, sensors, robots and computers that collectively run our global economy.
In the end, the age of app-driven software development may well be overtaken by API-driven software engineering for the Internet-of-Things.
Step 1: Make API-centric software that allows machines to talk to each other more efficiently
Step 2: Profit
As always, lovingly crafted in San Francisco, Singapore, and Bengaluru by the nerds at Semantics3