- OpsFlow Lending Newsletter
- Posts
- Skills required to build great apps
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.