Before the turn of the new millennium, development teams could get away with supporting two platforms: Windows and the web. Today, there are dozens, with more created monthly.
As a result, teams struggle to manage vendor, device, and platform fragmentation. To fully realize the potential of virtual reality, the Internet of Things, and other platforms under development, we must create an easier, more fluid process to develop software for the plurality of platforms available.
Diagnosing the problem
According to Vision Mobile, the average developer builds apps that support about two platforms, down from about three a year ago. Maintaining and keeping so many applications in step is a daunting and often maddening challenge.
Stepping back, any reasonable person would ask, “Why did we build so many different platforms?”
The simple answer is capitalism. Apple, Google, Samsung, and others need to constantly one-up one another to sell devices, and this requires the flexibility to push the limits of hardware and software.
While a single shared operating system would be great for developers, it would also make it very difficult for them to move quickly. The closest thing we have to a common OS is the web, and web standards take an incredibly long time to update. If the mobile web ruled the app world, it would take years for Apple to get something new, such as Touch ID, into the spec, slowing the adoption of every new technology.
This consensus-driven approach is far too slow for corporations racing against one another. As a result, we are left with a growing number of platforms with their own APIs, languages, and frameworks that largely do the same things.
The platform architects who created this problem aren’t going to fix it. Instead, the burden falls on third parties to devise mechanisms to put the same applications on multiple devices. The need for tools to ease that process will grow as new platforms continue to outpace new developers.
Current solutions
The demand for these cross-platform tools first became apparent in game development. Games are incredibly complex, with such finely tuned behaviors, that to rewrite them on every platform would be a fool’s errand. Game engines have been around for years to solve this problem (e.g., Unity, Unreal, Source) — you name it, they support it.
But that’s just for games; the other 78 percent of apps don’t translate nearly as well because each major platform looks and operates very differently in order to be distinctive. Games have the advantage of bundling their own graphics and interactions, but non-game apps are generally built with the standard user interfaces and APIs included by the company that builds each platform. These interfaces and underlying APIs just vary too wildly to be translated on a 1-to-1 ratio.
Automated solutions
The true value of a developer lies in his or her ability to solve problems and to architect solutions. Writing the actual code is secondary — and so much of that code is repetitive or solves a problem similar to one previously solved.
When my former company wasn’t building mobile apps for clients, it was looking for better ways to develop. It frustrated us that we spent the majority of our time working on simple problems, while we really wanted to push the frontiers and build really cool new features.
We became interested in building machines that could help us skip a few steps and go from our software designs to working code in seconds. Ruben Bos has a great perspective on these code machines and how they could work. With this kind of automation, we could remove the trite and focus on the unique value we provide.
Even more critical are the improvements that will be seen in development team workflow. Designers no longer hand off their designs to developers; instead, they can exercise total control over the user experience from design to release. With automation, they can modify the working app as easily as they tweak their mockups. Meanwhile, experienced developers can escape the tedious bits of coding that take the most time and require the least brainpower, such as bug fixing, connecting APIs, and updating apps to match new designs.
Armed with this kind of automation, organizations will build better, more innovative, and more refined applications than ever before. This benefits the end users, any organization building software, and the platforms themselves. Automation will make it much easier to build for new technology platforms, thereby increasing the rate of adoption by end users.
Beyond the tech sector
Automation also extends far beyond software development. All over our world, we see advancements in automation that make it easier to bring ideas to life. Agriculture, manufacturing, finance, and advertising are just some examples of industries being transformed by automation.
Jobs that today require people to build by performing repetitive tasks will one day be automated, but the minds that design and implement new ideas will possess an unprecedented power to create. Collective energy and attention will shift toward more creative pursuits and innovation in areas we can’t even imagine — because they may not yet exist.