Adaptive Presentation Core (APC)

- Published on
Chapter 1 - The Composable Mindset
Summary
Composability is not a framework, tool, or trend—it’s a mindset. It’s a mental model for approaching complexity, scaling teams, and evolving software. Before you adopt new technologies, re-architect your services, or refactor your UI, you must first adopt the composable way of thinking. This chapter explores the philosophical underpinnings of composability and shows how it transforms not just what we build, but how we think about building.
Too often, teams reach for composable technologies without embracing composable thinking. This disconnect leads to fragmented systems, duplicated effort, and brittle integrations. By contrast, a true composable mindset aligns people, processes, and platforms around shared principles of modularity, adaptability, and sustainable growth.
Why It Matters
Most failures in software systems are not due to bad code—they stem from misaligned mental models. We assume systems will remain stable, teams will stay small, and that our initial abstractions will age gracefully. They rarely do.
The composable mindset embraces change as the default state. It recognizes that every system will evolve, and that success lies not in resisting this evolution, but in designing for it. It prepares organizations not just to survive complexity but to turn it into a competitive advantage.
This mindset encourages:
Thinking in capabilities rather than projects: Instead of building features in isolation, teams focus on enabling capabilities that can be reused, extended, or integrated across different domains. This reduces redundant work and enhances the scalability of both technology and teams. At Spotify, teams expose platform capabilities like playlist curation or recommendation logic as reusable services, enabling other squads to build new experiences without reinventing the wheel.
Designing interfaces and contracts over entangled implementations: By focusing on stable, clear contracts—such as APIs or event schemas—teams can operate independently and evolve safely without breaking downstream consumers. Amazon famously enforced a policy that “all teams must expose functionality through service interfaces,” which laid the foundation for AWS and enabled internal innovation to scale outward.
Optimizing for replaceability instead of perfection: Perfection is a moving target. Replaceability ensures that any module, service, or component can be evolved, rewritten, or retired without requiring a full system overhaul. At Netflix, teams isolate business logic into modular, independently testable components that can be swapped out when product requirements evolve or performance bottlenecks emerge.
Embracing experimentation instead of fearing breakage: Composable systems make experimentation safe by isolating risk. You can roll out changes incrementally, observe their effects, and roll back when necessary. Companies like Etsy and LinkedIn use feature flag frameworks to experiment with UI flows, enabling product teams to gather feedback and iterate without disrupting core user journeys.
A team that shares a composable mindset will build platforms that are not only more maintainable, but more empowering. They will avoid accidental dependencies, minimize coordination overhead, and continuously deliver value—not just faster, but more sustainably.
Visualizing Capability Mapping
To better understand how the composable mindset transforms system design, consider a capability map—a visual way of organizing features not by product or project, but by reusable business capability.
This mapping is essential because it exposes the true structure of a business's digital platform—not the UI-level surface area or individual microservices, but the underlying capabilities that teams rely on to build and ship value. Capability mapping helps architects and product owners identify reuse opportunities, reduce duplication, and clarify ownership.
Example:
- Authentication & Identity: Login, MFA, account recovery
- Billing & Invoicing: Usage tracking, payment processing, tax calculation
- Search & Discovery: Faceted search, autocomplete, ranking
- User Engagement: Notifications, recommendations, campaigns
Each of these examples represents a business domain that is broadly reusable. Instead of tying these into a specific product roadmap, composable teams expose them as shared, interoperable building blocks.
In a monolithic approach, these capabilities might be buried in separate apps or hardwired into feature flows. In a composable system, each is surfaced as a self-contained, observable, and independently deployable capability that multiple teams can compose into new experiences.
At a global logistics company, turning delivery scheduling into a reusable capability unlocked 3 new product offerings—internal tools, partner portals, and customer apps—all without rewriting business logic.
At a fintech startup, separating billing as a standalone capability allowed the product and finance teams to experiment with new pricing models—without changing the core app code. It also enabled embedding billing into customer support tools and sales dashboards.
A media platform isolated its search and recommendation engine into a separate capability, which was then reused by its content, advertising, and analytics teams. This allowed experimentation in personalization without risking the core user experience.
These examples underscore why capability mapping matters: it aligns architectural boundaries with real business agility. Composable thinking reveals these capability layers, allowing teams to align platform architecture with meaningful reuse and cross-team leverage.
Core Principles
1. Change is Inevitable—Design for It
"If it can change, it will. If it cannot change, it will break."
Whether it's market conditions, org charts, or user needs—everything is in flux. A composable mindset starts with the assumption that **every component will change**. Interfaces must be tolerant. Contracts must be clear. Deployments must be reversible.
Teams that design for change are proactive. They version their APIs, flag features instead of hard-releasing them, and structure deployments so they can be rolled back or swapped out. For example, at a global SaaS company, adopting composable delivery models allowed a team to replatform their settings page in under a month—while serving live traffic—because the shell and slots were already decoupled.
2. Systems Are for Humans
Composable systems aren’t just about technical design—they’re about how *people* understand and operate those designs. Every boundary in a composable system serves to reduce cognitive load, align responsibilities, and create focus.
**Bounded contexts are about cognitive load**: Developers should understand and own the modules they work on. Bounded contexts ensure that complexity is isolated, not scattered. Companies like Zalando use this principle in their "Mosaic" architecture to decouple frontend delivery across business units.
**Modular code is about team autonomy**: When teams own modules with minimal external dependencies, they can move faster, take responsibility, and innovate confidently. Shopify’s Polaris system empowers product teams to build consistent UIs while owning their delivery surface.
**Tooling and observability are about empowering action**: Teams need real-time insights, intuitive dashboards, and actionable metrics to manage complexity, diagnose issues, and improve performance. Netflix, for instance, instrumented their UI shell and slots to understand which modules degraded performance during A/B tests.
3. Replaceability > Reusability
Reusability is great, but it often leads to overengineering and tight coupling. Replaceability is a stronger design goal. If a service, component, or module can be swapped out without systemic disruption—you’ve succeeded.
Systems built for replaceability favor boundaries and contracts over shared logic. Rather than sharing utility classes across apps, they wrap those in interface-safe APIs. Amazon applies this principle in their internal service policies: every service must be replaceable without requiring coordination across orgs. This is what makes AWS internally robust.
4. Composability is Fractal
You can apply the composable mindset at any level:
A **React component** should accept data via props and emit events without knowing its context.
An **API gateway** should route requests based on well-defined contracts, not assumptions about upstream consumers.
A **cloud environment** should allow services to scale independently and fail gracefully.
A **platform team** should provide reusable scaffolds without owning every implementation.
The same rules apply: clear boundaries, stable contracts, and independent evolution. Regardless of scale—component, service, or system—composability ensures resilience and velocity.
This fractal nature is what makes composability scalable. Teams don’t need to align on every detail—they align on principles. That’s what keeps velocity high without sacrificing cohesion.
Implementation Patterns
Pattern | Description | Example |
---|---|---|
Interface First | Define the contract before the implementation | OpenAPI spec before coding a backend, ensuring consumers know what to expect. |
Decouple Deploy from Release | Ship code continuously, toggle features gradually | Use LaunchDarkly or flagsmith to turn features on for specific users without redeploying. |
Design for the Consumer | Modules should make sense to the people who use them | Build CLI tools that follow intuitive naming and error messages. |
Composition Over Inheritance | Combine capabilities, don’t nest complexity | Prefer hooks and HOCs in React over extending base components. |
Embrace Observability Early | Instrument from day one | Use distributed tracing with OpenTelemetry to understand service latency. |
These patterns are not tech-specific—they are thinking tools that align development with composability principles.
Pitfalls and Anti-Patterns
- Premature Modularity: Just because something can be separated doesn’t mean it should be. Without clear domain ownership, modularization can lead to sprawl and confusion.
- Over-Coordination: When everything is a meeting, nothing is composable. Composable systems minimize the need for coordination by ensuring teams have clear, stable boundaries to work within.
- Tool-Driven Thinking: Adopting Kubernetes or GraphQL doesn’t mean you’re composable. Tech is only as good as the mindset behind its use. Without shared principles, new tools only accelerate dysfunction.
Real-World Example: A Frontend Misalignment
At a global retailer, the frontend team adopted micro frontends hoping to unlock velocity. But without shared principles, each team built in isolation—with different design systems, state handling, and release cadences. The result? Slower integration, higher bugs, and a fractured UX.
After stepping back and realigning on composable principles—shared contracts, design system tokens, and integration layers—their velocity and UX consistency returned. The tools didn’t change. The mindset did.
This example highlights a critical point: composability starts with people, not technology. When teams align on intent and design principles, the technical choices fall into place.
Developer Experience: A Shift in Perspective
“Once we stopped thinking about building features and started thinking about exposing capabilities, our team dynamic changed. We weren’t just shipping faster—we were debugging less, onboarding quicker, and scaling with clarity.” — Senior Software Engineer, Financial Platform Team
Shifting to a composable mindset redefined how this team built software. They created internal SDKs, standardized API contracts, and invested in platform tooling. As a result, new team members could contribute in days, not weeks.
How This Scales
The composable mindset isn’t just for architects—it’s for everyone:
- Product Managers learn to ask for capabilities, not rigid features. They prioritize composable building blocks that unlock multiple use cases.
- QA Engineers test behavior through contracts and observability. They validate outcomes at interfaces, not through brittle end-to-end tests.
- Infra Engineers build deployable, replaceable stacks. They treat infrastructure as a platform, not a snowflake.
- Executives see faster time to value and lower systemic risk. Composable systems make it easier to introduce new products, retire old ones, and pivot strategically.
Tooling & Tech Ecosystem
The mindset extends into how we choose and use tools:
- Interface Definitions: OpenAPI, GraphQL SDL, AsyncAPI enforce clarity and reduce assumptions.
- Contract Testing: Pact, Dredd enable safe parallel development.
- Feature Toggles: LaunchDarkly, Flagsmith support experimentation and targeted rollouts.
- Observability: OpenTelemetry, Honeycomb, Grafana ensure systems are transparent and diagnosable.
- Team Topologies: Platform teams serve internal users with scaffolds, golden paths, and composable abstractions.
Further Reading & References
- Team Topologies by Skelton & Pais
- Accelerate by Nicole Forsgren et al.
- Building Microservices by Sam Newman
- Herberto Graca's blog on architecture as boundaries
- Thoughtworks Technology Radar on “Enabling Evolutionary Architecture”