Philosophy
The growing complexity of large-scale web applications has led to the emergence of software architectures that promote modularisation through decoupling capabilities into autonomous services and have them communicate via network. This allows large IT organisations to distribute software development across multiple independent teams.
At the same time, a successful technology strategy needs a healthy environment to foster. Therefore, the Modular Web Architecture (MWA) is rooted in well-known paradigms such as Agile Development and Lean Production. Beneath the technological aspects, this philosophy is crucial for the success of this strategy.
Digital Products
Digital Product Mindset: We understand software artefacts as digital products, each with its own repository and lifecycle. Digital products are more than just code; they are commercial services that a team offers to its consumers—which can be other development teams, business users or our customers.
Minimum Viable Product and Continuous Delivery: We start new products as Minimum Viable Products and seek customer feedback as early and as often as possible. We deliver a constant stream of value increments through continuous delivery and automation.
Product Ownership: All software products are owned by a dedicated team. Ownership implies a high degree of autonomy with regard to product strategy, workflows and choice of technology. It also implies end-to-end responsibility for the team’s products which requires the team to be cross-functional.
Read more about digital products ›
Ways of Working
Agile and Lean: We embrace the agile mindset, as laid out in the Agile Manifesto and the Agile Principles. We take inspiration from lean principles, meaning we produce only what is needed, when it is needed, and in the amount needed. This does not mean that we don’t plan ahead. But we will not invest effort into upfront work without knowing if it will ever be needed.
Collaboration and Participation: We encourage and facilitate collaboration within teams and across team boundaries. Far-reaching decisions need broad support from the stakeholder community. We take time to learn and to improve our skills.
Lateral Leadership: Technology leadership and architecture play supportive roles, striving to empower teams. Leadership and Architecture are not mere role descriptions, but indicate responsibility and a mindset. Architecture supports in making good decisions, keeping the big picture in mind and achieving excellence. Drawing diagrams and writing Confluence pages should not be an architect’s main activities.
Read more about our ways of working ›
Technology Principles
Everything as a Service: All digital products, including and especially those for internal usage, are considered as services. Providers of services must offer clearly defined interfaces, and these interfaces need to be treated as contracts.
Loose Coupling: Each software product is treated as a bounded context. Implementation details and internal logic are hidden behind clearly defined interfaces. Services are not tightly coupled to other services. Interfaces are treated as contracts and must not break inadvertently.
Evolvability: Nothing is perfect. New opportunities and challenges will emerge regularly. Therefore we need to allow for change, not only in the digital products we build, but also in the ways of working, the architecture and the overall strategy.
Engineering Excellence: We build state-of-the-art software and understand quality as a value in its own right. We constantly strive to improve our skills and to obtain broader and deeper knowledge.