5 min read

The Lure of Platform Software Engineering over Application Development

In a world where Application Development is simpler, I go through Platform Engineering's endless potential. Contemplating platforms' complicated beauty, complexity's appeal, and the satisfaction of addressing interrelated challenges that create technological ecosystems of the future.
The Lure of Platform Software Engineering over Application Development
"You can't just ask customers what they want and then try to give that to them. By the time you get it built, they'll want something new."
Steve Jobs

I had a challenge over dinner from a friend regarding my preference for focusing my company strategy on Platform engineering versus Application development.
Let's first briefly define each as I perceive the two.

Why am I so fixated on one over the other? Why has my vision for the company from inception been strongly directed to creating platforms over applications? Why leave the comfort zone of Application development simplicity and narrow problem resolution to the perils of Platforms' complexity of blue-sky thinking and uncertainty?

The question drove me to introspect the motives behind this trait and to find correlations to other interests and past experiences. From my taste in music, literature and films. To my friendships and even my close relationships, day-to-day interaction with the world, politics, food, social life, sports, anything and everything.

Have I unconsciously been following a pattern, and for how long? Is it organic, changing and adapting to my experiences? Does it evolve or devolve with age? Does it follow one path or many interlinked paths?
This is my current thought.

My allure to Platform Engineering over application development lies in the complexity of the problem and the fascination with breaking it down. Understanding each component's intricacy and putting it all together as a causal and deterministic complicated solution organic in nature, just like a murmuration.
While both fields offer their own challenges and rewards, Platforms often present opportunities that are particularly appealing to my character, thriving on solving interconnected intricate nodes, discovering connections, gaining knowledge and making a broader impact.

My love for platforms is most certainly driven by my fascination with multi-organisms and collective intelligence. At a young age, I watched ant colonies, the grace of sparrows' murmuration, and, later, the discovery of mycelial and cellular intelligence.

While application development has its own attractions, such as direct user impact and focused problem-solving, platform development offers a different appeal, characterised by architectural challenges, broad implications, and the opportunity to shape the future of technology ecosystems. For engineers who thrive on complexity, scale, blue-sky thinking and long-term vision, platform development can be an exceptionally rewarding field.

Platform engineering is a vast field that encompasses a wide range of activities in developing intricate solutions that serve as the foundation for software applications. While both approaches aim to solve specific problems and deliver value to users, they differ significantly in scope, complexity, difficulty, architecture, and purpose.

Platform software development is a specialised type of software engineering that focuses on creating a foundational layer that provides a set of core functionalities and services that other software applications can build upon. This layer acts as a framework or an ecosystem where multiple applications can co-exist, interact, and extend their capabilities. The primary goal of platform software development is to create a stable and reliable foundation supporting the development of other software applications.

One of the critical characteristics of platform software is its extensibility. Platform software is designed to be extended and customised by third-party developers, who can add new features, functionalities, and services. This extensibility makes platform software highly adaptable and flexible, allowing it to evolve and grow.
Another essential characteristic of platform software is its scalability. Platform software is built to handle a growing amount of work and to be expanded to accommodate that growth. This scalability is essential for ensuring that the platform can continue to meet the needs of its users as their requirements change over time.

Interoperability is another critical feature of platform software. It ensures seamless interaction between various applications and services, allowing them to work together seamlessly. This interoperability is essential for creating a cohesive ecosystem of software applications that can share data and resources.
Finally, platform software is often designed to support multi-tenancy. This means that the platform can serve multiple clients or applications simultaneously. This multi-tenancy is essential for creating a scalable and flexible platform that can meet the needs of a wide range of users.

Platform software development focuses on API development, infrastructure management, and security. API development involves creating robust APIs with which other software can interact, while infrastructure management involves handling data storage, computing resources, and networking. Safety is also critical in platform software development, as the entire ecosystem must be protected from potential security threats.

Architectural Complexity

  1. Design Challenges: Platform development often involves designing highly scalable, extensible, and robust architectures. Engineers get to tackle complex problems related to multi-tenancy, data locality, governance, and distributed computing.
  2. Interoperability: Engineers working on platforms must consider how different components will interact, not just within the platform itself but also with third-party applications. This adds an extra layer of complexity and excitement.

Broad Impact

  1. Ecosystem Creation: Platforms serve as the foundation upon which multiple applications are built. The work of a platform engineer thus has a ripple effect and personal achievement, enabling many other software solutions.
  2. Community Engagement: Open platforms often have developer communities that contribute to the platform's growth. Being part of this community-driven development can be rewarding.

Technological Breadth

  1. Diverse Skill Set: Platform engineers often need to be versed in various technologies, from databases and networking to APIs and security protocols. This diversity keeps the work engaging, furthering a search for knowledge and continuous learning.
  2. Innovation: Working on a platform often means staying ahead of the technology curve. Engineers work with cutting-edge technologies and may contribute to technology standards and open-source projects.

Long-term Vision

  1. Strategic Influence: Platforms are generally long-term investments for businesses. Engineers have the opportunity to contribute to the strategic direction, which can be fulfilling.
  2. Lifecycle Management: Unlike some application software that can become obsolete, platforms often have longer lifecycles and evolve over time, offering engineers a long-term project with changing challenges.

Autonomy and Ownership

  1. Decision-making: Engineers often have more autonomy in choosing technologies and approaches, given the foundational nature of the platform.
  2. End-to-end Ownership: Engineers may be responsible for an entire feature or service within the platform, from design to deployment, giving a sense of ownership and accomplishment.

In conclusion, platform development is a specialised approach to software engineering that focuses on creating a foundational layer that provides a set of core functionalities and services that developers of applications can build upon. This approach is characterised by its extensibility, scalability, interoperability, and multi-tenancy, and it requires a unique set of skills and expertise.
Software development is a vast field that encompasses various types of software applications. Platform software development lays the groundwork for an ecosystem where multiple applications can thrive. In contrast, application software development focuses on creating individual programs that serve specific purposes. Understanding the differences between these two types of software is crucial for businesses to make informed decisions about their software development strategy.

Key Differences:

  1. Scope: Platform software aims to provide a broad set of functionalities for multiple applications, whereas application software targets specific user needs.
  2. Audience: Platform software is intended for developers of applications, while application software is designed for end-users.
  3. Lifecycle: Platform software usually has a longer lifecycle and evolves over time, whereas application software may have a shorter lifecycle depending on market needs.