Ferrara Software Principles Pyramid

Bringing structure to an unstructured backlog

Concept

main pyramid image

Overview

The Ferrara Software Principles Pyramid offers a guide that will help classify software development tasks and weigh them against each other. Classifications begin with those tasks that have the highest of priority, and build up the pyramid. The pyramid is a suggestion and not every project release will fit into this suggestion. However, the pyramid is flexible enough to be modified to fit each project and release.

The Ferrara Software Principles Pyramid is also a communication tool that can be used to communicate the task priority hierarchy to the development team, as well as to the stakeholders. The team will want to know which tasks demand most of their time and effort. In addition to that communication, The Ferrara Software Principles Pyramid will justify this allocation of time and resources to the stakeholders. It also gives the project manager a tool to track the allocation in relation to what the stakeholders have agreed upon.

A pyramid shape was used for this communication because a pyramid is the epitome of a structure that has a strong foundation while achieving great heights. While a pyramid was chosen to provide this communication of building on the most important tasks to the least, it is not a suggestion that all tasks classified with the highest priority be completed before work should start on other classification tasks. To the contrary, a pyramid was used to show how a blend of tasks from each classification could be grouped into a single release. Since resource allocation diminishes as the priority of a classification falls, the Ferrara Software Principles Pyramid also provides a suggested percentage mix of tasks from each classification.

Finally, the Ferrara Software Principles Pyramid classifications offer a clear way to communicate to the team and stakeholders which tasks may be dropped from a given release due to time and resource restrictions. Because the Ferrara Software Principles Pyramid is communicated at the beginning of each release to both the team and the stakeholders, all will have some indication of these drops before the development phase has started.

Time and Resources

Time and resources for any project are defined as the investment made by the stakeholders. The value of these two items directly relate to the monetary investment the stakeholders have agreed to.

Using the Ferrara Software Principles Pyramid as a guide when deciding how much of this investment is spent on each task in relation to other tasks, will provide the stakeholders with a visual representation of how these decisions are made. In most cases, the stakeholders will appreciate and respect that there is a well-defined visual guide for prioritizing and allocation their investment.

Priorities

The order of the segments of each classification was given careful consideration. Each has its place in the overall solution. However, each had to be weighed against the other classifications for there to be a priority hierarchy.

Accuracy

Accuracy

Classification
Level:One
Priority:High
Resource Allocation:30%

The Accuracy classification is the foundation of the pyramid. Tasks with an Accuracy classification contribute to the core functionality of the solution. They also provide the correct and complete data or information that supports core functionality of the solution. All other classifications of the pyramid rely on the successful defining, classifying, and executing of the tasks in this classification.

Another way to define this classification is to say that the tasks related to it also make up the Minimum Viable Product (MVP) of the overall solution.

From this classification, we will build the remainder of the pyramid knowing that tasks classified as part of the Accuracy classification will always take priority over all other tasks.

Stability

Accuracy

Classification
Level:Two
Priority:Medium-High
Resource Allocation:25%

Now that our Accuracy tasks have been identified, we can start to turn our attention to other parts of the solution and the pyramid. The next level of priority would be any tasks identified as part of the Stability classification.

The Stability classification relates to tasks that provide a stable environment for the solution to be successful. Examples of tasks that may fall into this classification would be fault tolerance, coding for edge cases, proper and graceful error handling, defensive coding, dealing with SLAs of third party tools, and how the solution will behave in unexpected situations.

Some may argue that this classification should be the highest priority. However, the reasoning for Accuracy being of greater priority than Stability is; An application that is correct but unstable at times, has more value to the users than a stable, but incorrect application.

Usability

Accuracy

Classification
Level:Three
Priority:Medium
Resource Allocation:20%

In previous classifications, we identified tasks that will provide accurate data and functionality working in a stable environment. Approaching mid-way up the pyramid, we can now focus on tasks that relate to the overall user experience (UX). The Usability classification identifies tasks that will provide the best user experience. These tasks would include workflows, process flows, the responsiveness of the solution, user interface layouts, and process efficiency gains.

Accessibility

Accuracy

Classification
Level:Four
Priority:Medium-Low
Resource Allocation:15%

The Accuracy, Stability, and Usability classification tasks have been identified and we are more than half way through building out the pyramid. The Accessibility classification will identify those tasks that deal with the general distribution of the solution; such as the supported platforms, environments, and devices.

The solution now has a clear path to being distributed to the users in accordance with the classifications on the lower half of the pyramid.

Customization

Accuracy

Classification
Level:Five
Priority:Low
Resource Allocation:10%

Finally, we will identify tasks that enhance what has already been defined in the former classifications. We have defined tasks that provide the core functionality, stability, usability, and accessibility of the solution. Now, we will define the tasks that take these offerings to the next level.

The Customization classification identifies tasks that provide ways for a user to make the solution uniquely theirs. These tasks may include things like branding the solution, the ability to create ad hoc reporting, or even ways for a user to extend the functionality already provided by the solution.