Application development in 2020

Ian Alexander
4 min readDec 5, 2019

It’s coming up to the end of 2020 and a seismic shift has happened in the application world — on a par with the migration to the cloud. The shift leads to a decrease in the cost of application development by an order of magnitude — the ramifications of which will be felt for years to come.

A true cross platform tool

At the beginning of 2020 Kotlin 1.4 was released and Kotlin Multiplatform moved out of beta.

Up until this point the holy grail of write once, build for everything has been elusive. Despite a wealth of cross platform tools (phone gap, ionic, xarmin, react, and more recently flutter) nothing had dethroned native application development. For one simple reason. The combined engineering output of the teams behind Android, ChromeOS, iOS, MacOS, Windows, and others (not to mention web browsers) dwarfs any possible output by a team creating a cross platform tool.

Kotlin Multiplatform brings a new approach. Creating a split between common code and platform code. Common code is the code repeated again and again across every native platform (e.g. data manipulation, caching, networking, time manipulation, and more) which can take up anywhere from 40–70% of a codebase. Platform code is made up of things like UI and device features which takes up the remainder of a codebase.

While platform code is written separately for each intended platform, in the platform language, with access to all the native platform sdks, the common code is written in pure Kotlin and shared by all platforms. When compiled, the common code is translated into platform readable code — producing a fully native application for each target platform.

There’s some immediate benefits to this approach which result in smaller teams being able to achieve more results.

  • These are native apps, so no sacrifices need made in terms of features or performance.
  • Less code. 40–70% of code can be reused across platforms. The more platforms the application is on, the more this saving multiplies.
  • Less testing. Platform code is primarily dumb UI. The fancy stuff is shared, so if it works on one platform, it works on all.
  • Less bugs. For the same reason as the last point.
  • A single shared codebase of common code means business logic can be moved from the backend (where it was shared between platforms to avoid duplication). Reducing backend complexity and cloud costs.

With the cost of adding additional platforms diminished, applications that transcend mobile, desktop, and web become the norm rather than the exception.

Backend as a service

By mid 2020, BaaS databases go mainstream.

Up until now, databases have been an in-house creation accessed via an API and maintained by a backend team. Each platform has it’s own code to communicates with the API and many thorny issues exists which need handled separately on each platform — caching, offline editing, synchronisation between platforms, background sync, realtime sync, and many more.

And on the backend teams side there are a whole other host of issues — API maintenance, conflict resolution, security, minimising resource consumption, amongst many others. Issues that need to be solved again and again in teams the world over.

Every one of these issues previously added to the cost of building applications — if they were handled at all.

Firestore, Realm cloud, Objectbox Sync, and others change all that. BaaS databases move the management of databases to a third party. Libraries integrate with each of the platforms they serve which solve many of the common pain points that are normally too costly too handle. All for a monthly fee depending on usage — a cost which quickly drops as services compete for customers.

Applications become offline-first making them accessible to more people around the world in areas of spotty, edge connections — the user experience vastly improves. On top of this, realtime multi-platform synchronisation becomes the norm on apps both big and small making the switch from web, to desktop, to mobile effortless.

What backend?

Backend development for applications as we know it is changed forever. Two primary drivers of backend development (database and shared business logic) have been moved to third parties or a common codebase shared between platforms.

The migration to the cloud supersized the backend. The advent of a true cross platform tool causes a migration in the opposite direction.

Backend development in applications doesn’t go away — it just refocuses around security conscious services, hiding proprietary algorithms, and data analysis.

A multi-platform world

Multi-platform development combined with the gutting of the traditional backend means application development cost drops by an order of magnitude. Suddenly, multi-platform cloud based applications are within reach of any dedicated kid in his parents garage.

In the years that follow an explosion of high quality apps built in college dorm rooms which are free of expensive, legacy, codebases threaten to overthrow the established tech order.

And also, another unforeseen consequence. The reduced complexity and cost of application development triggers the beginnings of viable collaborative, open source developed, applications. These are smaller privacy-focused, non-profit applications collaboratively built and maintained by a small army of open source developers outside their day job which have the capability to directly compete with profit focused companies.

I hope you enjoyed this hypothesis! What do you think? Is this a possibility? Or never gonna happen? Or are there other innovations which will make this merely the tip of the ice berg? Leave a comment below!

--

--