Over the years, software development has ping-ponged between server-centric and client-centric designs. Today, with dominant mobile platforms like iOS and Android, apps have entered a hybrid client-server architecture.
What this means for developers is that they have to juggle more technologies than ever before. And in response, we’re seeing the rise of developer platforms that handle functionality that has never been outsourced before—everything from databases to sending email to providing user authentication. As more software moves to the cloud so too does the development tools used to make the final product.
From the Client to the Server to a Hybrid
Back in the ’90s, desktop software ruled. This meant that most software development was client-side. The world was also less connected. So, even if your application connected to the internet, users didn’t expect it to always be online. Developers could dutifully create client-side software and ship it to consumers as a simple download with no strings attached.
Fast forward to the present and a complicated picture emerges. Networked mobile applications are at the forefront. It turns out that the eventual endpoints of the web won’t be desktop computers, but rather, mobile devices. The number of tablets and smart phones will dwarf desktops. Already, services like Facebook are seeing two times more mobile activity than desktop.
Hybrid is Complicated
Developers now have the challenge of creating both client and server code that deeply interact with each other. This means having to keep up with two different styles of development, and most likely more than one programming language and environment.The client code needs to work on resource-constrained devices with a network connection that is slow and unreliable. And because we’re dealing with clients that may be out of date, the server needs to be able to handle multiple versions of clients that are making requests. Add in data migrations and you have a recipe for disaster.
Consumer behavior is also becoming more demanding. Users expect their apps to always be online, or at least pretend to be. This means having to gracefully handle caching, queue up requests, and wrangle a whole slew of networking issues. Oh, and you’ll also need to have various 3rd party integrations like Facebook and Twitter.
Combine all these things and it’s clear that you’ll need something more than just a highly capable team of developers. You need to leverage developer platforms.
The Rise of Platforms
Over the past few years, we have seen the rise of X as a Service, where X could be anything from platforms to infrastructure and other services. One could argue that this all began with Amazon Web Services, and have since blossomed with countless services like Heroku, Mailgun, dotCloud, and AppEngine.
All these services have one thing in common: they increase the productivity of developers. Using these services is like standing on the shoulders of giants. Why create another deployment of Rails if Heroku focuses 100% of their time and energy on it?
Everyday, platforms are reducing the amount of time developers have to focus on non-app specific code. What this means is that apps can be developed faster at higher quality with a tighter focus on the core product. Yes, you are ceding some control over your app’s development to a third-party, but the whole point of these developer platforms is to do one thing very well at scale. The time for developer platforms is now, and it will only accelerate as more of the world comes online.
Photo credit: “Developers, developers, developers” by purploony