Skills required to build great apps

Beyond general-purpose technology

Some technologies let you build apps for multiple platforms.

For example, JavaScript can be used to build cloud apps, web apps, and mobile apps.

Even more specialised technologies like React can be used to build for both web and mobile.

In theory, once you learn these technologies, you have the skills to build for any supported platform.

But in practice, knowing only the technology is not enough.

What, then, makes the real difference?

Software design

Building a UI for accepting a payment is quite different from building a microservice that processes the payment, even if you build both with TypeScript.

Each requires different design patterns, architectures, and best practices.

Even when building the same UI for accepting payments on mobile vs. web using React and React Native, there are differences:

  • Interaction models

  • Design patterns

  • App structure

Technology ecosystem

Each platform has its own ecosystem of technologies:

  • Frameworks

  • Libraries

  • Databases

  • SDKs & APIs

For example:

  • Web: CredentialsContainer, ResizeObserver, IndexedDB

  • Mobile: SDKs to access camera, NFC, and GPS

  • Cloud: SDKs for storage, databases, and file systems

Even databases, which might seem relevant only in the cloud, are available across platforms:

  • Cloud: PostgreSQL, MongoDB

  • Web: IndexedDB

  • Mobile: SQLite, Realm

Platform providers

Applications don’t run in isolation. They run on platform providers.

Each platform has multiple providers, each with its own quirks:

  • Cloud: AWS vs. Azure

  • Mobile: Android vs. iOS

  • Web: Chrome vs. Safari

Understanding the capabilities and differences of each provider is crucial to building applications that work reliably on the platform.

Beyond general-purpose technologies, building great apps requires a deep understanding of the platform you're building for.

Each platform brings unique design patterns, ecosystems, and providers.

The intricacies of each platform make the skill of building for one platform almost irrelevant for another, even if both use the same general-purpose technologies.