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 have a strong preference for focusing my company's strategy on platform engineering over application development. This inclination stems from my fascination with the endless potential and intricate beauty of complexity.
Platforms provide the foundational infrastructure and frameworks that enable the creation of diverse applications. I feel realised in addressing the interrelated challenges that arise in building these interconnected technological ecosystems. The blue-sky thinking and uncertainty inherent in platform engineering resonate with me more than the narrow problem-solving nature of application development.
This preference extends beyond my professional life, manifesting in my personal interests, relationships, and interactions with the world. From my taste in music, literature, and films to my friendships and close relationships, I've unconsciously been following a pattern that aligns with my affinity for complexity and interconnectedness patterns.
I've come to recognise that this trait is an organic, evolving part of who I am. It's not a mere professional choice, but a reflection of my core interests and drives. By embracing this inclination, I can leverage my ability to navigate complexity and contribute and hopefully make a contribution to the future.
While this direction may not always be the most comfortable, it is the one that resonates with me the most. I will continue to pursue it, knowing that it aligns with my natural strengths and passions and will guide the vision for my company.
This is my current thought:
Inevitably, it will mutate with my experiences over time.
My preference for platform engineering stems from first principles thinking. I'm fascinated by intricate, interconnected systems. Assembling cohesive, organic solutions—like a murmuration's indeterminate beauty - captivates me.
This affinity for complexity reflects my values and cognition. I thrive on uncovering connections, gaining knowledge, and driving broad impact—all better enabled by platform work than application development.
My love for platforms is rooted in appreciating collective intelligence, as seen in natural phenomena like ant colonies. I aim to create technological ecosystems inspired by these multi-organism systems.
Ultimately, platform engineering is an expression of my fundamental nature, not just a professional choice. By embracing this, I leverage my abilities to navigate complexity and contribute to transformative advancements.
While applications have merits, platform development's architectural challenges, broad implications, and ability to shape technology's future particularly appeal to engineers drawn to complexity, scale, and long-term vision.
Platform engineering encompasses developing intricate foundational layers that support diverse applications. This differs from application work in scope, complexity, architecture, and purpose, with platforms establishing stable, versatile frameworks for interaction and extension.
I've found that the key characteristics of platform software are what make it so compelling to me. The extensibility of platforms, which allows third-party developers to add new features and functionalities, is particularly appealing. This adaptability ensures the platform can evolve and grow to meet changing needs.
Equally important is the scalability of platform software. Designed to handle increasing workloads, platforms can expand to accommodate growth, a critical capability as user requirements shift over time. The interoperability of platforms, which enables seamless interaction between various applications and services, also resonates with me. This cohesive ecosystem, where applications can share data and resources, is essential for delivering holistic, integrated solutions.
Furthermore, the multitenancy of platform software, allowing it to serve multiple clients simultaneously, reflects the flexibility and scalability I value. This ability to cater to a wide range of users is essential for robust and future-proof platforms.
Beyond these core characteristics, platform development also involves specialised activities that I find rewarding. The creation of APIs, which enable other software to integrate and interact with the platform, is a particular area of focus. Equally important is the management of the underlying infrastructure—the data storage, computing resources, and networking—that supports the platform's operations. And of course, ensuring the security of the entire ecosystem is a critical priority.
It is this combination of extensible, scalable, interoperable, and multi-tenant capabilities, coupled with the technical challenges of API development, infrastructure management, and security, that makes platform software development so appealing to me. By embracing this field, I can leverage my strengths to create transformative technological solutions.
Architectural Complexity
- 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.
- 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
- 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.
- 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
- 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.
- 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
- Strategic Influence: Platforms are generally long-term investments for businesses. Engineers have the opportunity to contribute to the strategic direction, which can be fulfilling.
- 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
- Decision-making: Engineers often have more autonomy in choosing technologies and approaches, given the foundational nature of the platform.
- 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.
Epilogue
Platform development is a specialised software engineering approach focused on creating a foundational layer of core functionalities and services for developers of applications to build upon. This platform-centric model is characterised by key attributes:
Extensibility: Platforms enable customisation and addition of new features by third-party developers.
Scalability: Platforms are designed to handle growing workloads and evolving user requirements.
Interoperability: Platforms facilitate seamless integration and interaction between applications.
Multi-tenancy: Platforms can serve multiple clients simultaneously, offering flexibility.
Developing robust, adaptable platforms requires unique skills beyond application development, such as API creation, infrastructure management, and robust security.
In contrast, application software focuses on individual programmes serving specific purposes. Understanding the distinctions between these approaches is crucial for businesses to align their software development strategy with long-term goals.
Key Differences:
- Scope: Platform software aims to provide a broad set of functionalities for multiple applications, whereas application software targets specific user needs.
- Audience: Platform software is intended for developers of applications, while application software is designed for end-users.
- Lifecycle: Platform software usually has a longer lifecycle and evolves over time, whereas application software may have a shorter lifecycle depending on market needs.