Table of Contents

The Extensible Model

This document outlines the basic premise behind the Extensible Model, which is offered as an alternative to Agile and Waterfall. The Extensibility Model looks to grow a system. As it grows, stability (with a level of agility) is pushed downward into its roots, strengthening the foundation while allowing the branches and leaves to be flexible. The strengths of this model are listed at the end. It is important to note that considering this a hybrid of the two approaches would be to miss the point entirely.

Understanding where the Extensible model fits by comparing it with Waterfall and Agile.

Agile and waterfall are two different software development methodologies. Agile is iterative and incremental, while waterfall is sequential. Agile focuses on collaboration and communication, while waterfall focuses on planning and documentation.

Here is a table highlighting the differences between agile and waterfall:

Waterfall Agile
Sequential Iterative and incremental
Planning and documentation Collaboration and communication
Rigidity and control Flexibility and adaptability
Deliverables Continuous improvement.

A third method, which I will fill in, is the Extensible model. The Extensible model is a methodology that combines the features of both agile and waterfall to build in an extensible manner.

Here is a table highlighting the differences between Waterfall, Agile, and Extensible.

Waterfall Agile Extensible
Sequential Iterative and incremental Iterative and incremental
Planning and documentation Collaboration and communication Planning and documentation, Collaboration and Communication
Rigidity and control Flexibility and adaptability Flexibility via Extensibility

Stability and adaptability

Deliverables Continuous improvement Continuous Improvement Continuous stability

The best software development methodology for a particular project will depend on the specific needs of the project.

Issues with Waterfall

The waterfall model is a sequential approach to software development. It is a linear, step-by-step process that begins with planning and ends with testing and deployment. The waterfall model is often criticised for being inflexible and unresponsive to change.

Here are some main issues facing the waterfall model:

  • Not inherently flexible; struggles to adapt to changes efficiently.
  • Non-iterative; limits continuous improvement and adaptability to changing scopes.
  • Change is frequently ignored, potentially resetting the entire process.
  • Limited customer involvement, primarily at stages where changes are costly.
  • Rigid development phases with semi-fixed to fixed design and documentation.

The waterfall model is not always the best choice for software development. It is essential to consider the specific needs of the project before choosing a software development methodology.

Waterfall embraces complexity and marginalises change. Waterfall is overly proactive at the start.

Issues with Agile

The agile methodology is a dynamic approach to software development, emphasising flexibility, collaboration, and customer-centricity. It operates on iterative cycles and incremental progress, fostering adaptability and continuous improvement. However, the agile approach is often criticised for potentially leading to scope creep, a lack of clear project boundaries, and difficulties predicting final outcomes.

  • Welcoming change can circularly introduce more change, potentially leading to scope creep and project delays. This can lead to potentially extending timelines and budgets.
  • Requires high customer involvement, which might not always be feasible or productive.
  • Often lacks a clear roadmap, making it challenging to predict project timelines and final outcomes.
  • Can foster a lack of documentation, hindering knowledge transfer and future scalability.
  • This may result in fragmented or incomplete solutions due to continuous iterations without a fixed plan.

Agile embraces change and marginalises complexity. Eventually complexity is unfolded, which can have consequences like bringing in more change.

The Extensible Model

Agile was trying to address problems with Waterfall by presenting a model focused on embracing change and getting it right as early as possible. This led to shift-left mindset. \
The Extensible Model addresses problems when continuously “embracing change” and the continuous-x mindset in general. It addresses the process, project and product as parts, not as one thing with one solution, but many parts with many solutions. It has a design mentality, which seeks to discover the thing's nature. Agile and Waterfall do not care about the nature of the thing. Whatever the thing is, we will plan and document it upfront. Whatever the thing is, we will have a customer-centric, feedback-oriented approach. The thing's nature is largely neglected as one size fits all, but it adds context and is vital.

The Extensible model dives into the thing and asks fundamental questions regarding:

  • Rates of change
  • Commonality and reuse
  • Core concept or not
  • Agility or Stability

Think of it as seeking context for when a value like “agility” or “stability” is best effective. Make no mistake, the Extensibility Model is not for upfront planning of all things, nor is it emergent; it is both. It is a model that explicitly wants knowledge of the thing to determine what values should be more favoured.

How Extensible Tries to Bridge the Gap

The Extensible model aspires to merge the best of both Waterfall and Agile methodologies, fostering a balanced approach to software development. It integrates the structured planning of Waterfall with the adaptability of Agile.

This approach seeks to address the common criticisms of both Waterfall and Agile, by preventing scope creep while still allowing responsiveness to changes and feedback. It aims to facilitate a harmonious balance between structured planning and flexibility, striving to deliver well-planned, adaptable products that align with customer needs and market trends without succumbing to the pitfalls of either extreme.

Typically, a problem can be divided into the following parts:

  • The core
  • The hooks
  • The context.

In developing a robust solution, the following components play a pivotal role:

The Core: This is the central abstraction, a meticulously planned and designed solution tailored to address the primary facets of the problem at hand. It is characterised by inherent extensibility, forming the backbone of the solution.

The Hooks: These are the specific points within the core where additional functionalities or modules can be integrated. They define where and how extensions can be added to the core, enhancing its capabilities and adaptability.

The Context: This represents the nuanced details of the problem as experienced in various scenarios or environments. It is where the core and hooks are applied and tested against real-world conditions. The feedback from these applications may loop back to influence and refine the core design, ensuring it is equipped to handle diverse contexts effectively.

The development process is iterative, progressively building and refining the core and hooks to cater to various contexts until a robust, versatile solution is realised. This approach mirrors the structure and development of programming languages or software frameworks, where a strong core is built to be adaptable and extensible, capable of meeting diverse needs and challenges through well-designed hooks and contextual adaptations.

Developing a Content Management System (CMS)

The Core: The development begins with a core system encompassing fundamental features such as user authentication, content creation, and essential data management. This core is designed to be robust and extensible, with built-in functionalities that address the primary needs of content management.

The Hooks: As the core development progresses, hooks are identified and created. These hooks allow for the integration of various plugins or extensions. For instance, hooks could be designed to add functionalities like SEO optimisation tools, analytics tracking, or e-commerce capabilities, enabling the CMS to be customised and extended according to specific project requirements.

The Context: In this phase, the CMS is deployed in different contexts or environments. Depending on the specific needs of a project, various extensions are integrated through the hooks to tailor the CMS to the unique demands of each context. For example, an e-commerce website might utilise hooks to add shopping cart and payment gateway functionalities, while a blog might focus on SEO and social media integration.

During the development process, feedback from the contextual deployments is continually used to refine both the core and the hooks, ensuring that the CMS can robustly cater to a wide range of needs and scenarios. This iterative process continues until the CMS is versatile and robust, capable of efficiently adapting to various contexts through its well-designed core and extensible hooks.

Developing an Extensible Project Management Process

The Core: At the heart of the project management process is a core set of principles and practices that govern the basic functioning of the project. This includes defining the project's objectives, identifying key stakeholders, and establishing a basic workflow or methodology (like Agile or Waterfall). This core is designed to be adaptable, allowing adjustments and refinements as the project progresses.

The Hooks: These are specific integration points within the core process where additional tools, techniques, or methodologies can be introduced to enhance project management. For instance, hooks might allow for integrating various software tools for task tracking, time management, or communication, facilitating better coordination and efficiency. Additionally, hooks can be points where feedback mechanisms are integrated, allowing continuous improvement and adaptation.

The Context: This represents the specific environments or scenarios where the project is implemented. Depending on the unique demands of each project phase or stakeholder group, different tools or methodologies (integrated through the hooks) are utilised to tailor the project management process to the specific context. Feedback from these contexts is continually used to refine the core process, ensuring it remains aligned with the project's evolving needs and challenges.

Throughout the project lifecycle, the management process is iteratively refined, with the core being continuously strengthened and the hooks being utilised to introduce necessary adaptations. This ensures that the project management process remains robust and flexible, capable of effectively navigating the complexities and nuances of the project environment.

The strengths of the Extensible Model

The Extensible model takes Agile and Stability and separates the values into two distinct areas, one where planning and change are expensive and the other where change is welcomed and cheaper. By planning the core system or framework for a feature it reduces the stress of emergence and the expense of changing the architecture or heart of the solution. It places agility where it works best and planning where it is required.

The Extensible Model operates on the principle of organic growth within a system. As the system expands, it strategically embeds stability, coupled with a degree of agility, into its foundational roots. This approach fortifies the base, ensuring a robust and resilient structure that can withstand various challenges. Meanwhile, it allows the upper layers - analogous to the branches and leaves - to retain flexibility, enabling them to adapt and respond to changing conditions with ease. This symbiotic relationship between the stable core and the adaptable extremities facilitates a dynamic yet grounded development environment, fostering a system that is both sturdy and responsive to evolving needs.

Component Description Characteristics
Roots (Core) The foundational elements of the system embody the primary structure and functionalities: Stable and Robust.
Trunk (Core/Hook) The central structure that supports the branches, facilitating the integration of various components Stable and Robust. Facilitates Growth, Agile (to a degree)
Branches (Hook) The points of extension where new functionalities can be integrated, allowing for adaptability and growth Flexible, Adaptable, Integrative
Leaves (Context) The specific instances or scenarios where the system interacts with external factors, representing the finer details of the problem within various contexts. Dynamic, Responsive and Continuously Evolving

This document does not outline how to create topologies or roles, nor does it prescribe the method to achieve it. That will come in a different document. This document outlines the benefits of the approach:

  • Balance: Integrates the structured planning of Waterfall to the parts that require design with the adaptability of Agile for customer-centricity.
  • Flexibility and Stability: Allows for a stable core with flexible extensions, facilitating adaptability without compromising the foundation.
  • Cost-Efficiency: Planning the core reduces the potential costs associated with continuous changes and adjustments for hard-to-change areas.
  • Organic Growth: Mimics the organic growth of a tree, fostering a system that is both robust and capable of evolving according to changing needs and pushing stability when desired down and into the heartwood.
  • Contextual Adaptability: Encourages understanding and adapting to the specific nature and context of a feature or domain rather than building specifics only.
  • Enhanced Problem-Solving: Promotes deeper analysis and understanding of the problem, facilitating more effective solutions.
  • Future-Ready: Designed to be extensible, making it easier to integrate new functionalities and adapt to future trends and developments.
  • Customer-centric: Maintains a customer-centric approach, allowing continuous improvement based on real-world feedback and market trends.
  • Holistic View: Encourages a broader perspective of the project, considering various aspects, including rates of change, commonality, and core concepts, to determine the best approach.
  • Collaborative Development: Facilitates collaboration and communication, similar to Agile, promoting a more cohesive and efficient development process.
  • Sustainable Development: Focuses on sustainable growth, nurturing and extending the existing system in a manner that is both logical and sustainable.
  • Alignment with AMMERSE Principles: Aligns well with the broader AMMERSE values, allowing for a nuanced application of various values based on specific project needs.

The weaknesses of the Extensible Model

Everything has pros and cons. Here are some issues with Extensibility:

  • Requires some upfront knowledge and experience of the nature of the problem
  • Requires some design and understanding of building something extensible, not extremely easy for all
  • It may be difficult to know where the agility/stability line should be drawn
  • Requires everyone to understand the overall vision/roadmap as a guide to know what to spend more or less time on

The Extensibility Model requires an overarching view of where you are going. You could call this a Roadmap in pencil but with some lines drawn in pen. This is much easier than waterfall, and it's a little harder than agile. Let’s imagine you are building a payment gateway. You may not yet understand the business model or the attack you need. In Extensibility, you need to have a good grasp of these two things, whereas agile or waterfall does not attempt to provide an answer.

Since Extensibility demands know-how of the thing and the nature of the work, it takes more insight, evaluation and time to draw the line between stability and agility.

Next steps:

Reach out to me to talk about getting you started.

Conclusion

The analogy of trees bears more fruit (sic). Trees have different stages of life, seedlings or a great grand oak. They grow, some species remain flexible, and some harden quickly. Some species grow tall, while others branch out with great abandon. However, all trees grow roots that anchor them into the ground, a nebari into a strong trunk that allows for branches and ultimately good strong leaves. Extensibility is about extending what you have, nurturing and catering to grow the tree sustainably.

While this document outlines the Extensible Model, please note that Agile and Extensible are two of seven values within ammerse.org. The big picture of this document is to show that not only are Extensibility and Agile part of the answer, but so too are the other five values. One size does not fit all, but varying weights are applied to values that make sense in your environment with your goals.

The spirit of Agile is to inspect and adapt. I present the Extensibility Model so that you can include it as you inspect and adapt agility itself. I present ammerse.org as a means of discussing the values and building (process, development, method, frameworks) systems you can adapt to your context.

Version 0.1

AMMERSE Levels

Level 1

7 Principles: Agile, Minimal, Maintainable, Environmental, Reachable, Solvable, Extensible.

Level 2

The AMMERSE Set has weights assigned to 7 Principles. eg. “Enterprise Strategy”.

Level 3

AMMERSE Sets in a grouping that work together for a purpose. eg. Modes.

Level 3.1

You can extend AMMERSE by creating your own Sets and Frameworks.

Our goal is to enable business strategy, implementation and the reaching of objectives by giving you the tools to design your own methods. 

Sign up for the occasional email