Gauges

Throughput

The speed of the pipeline

An interesting measure to focus on is simply speed or throughput. The time it takes from a developer proudly shouting “It works on my computer!” to it actually working on the end user’s computer.

For each card ask yourself the following question:

To what extent would implementing this feature or ability improve the overall throughput of my pipeline?

The feedback is measured from one to three stars. Use the stars as follows:

The improvement can be counted in minutes.

The improvement can be counted in hours.

The improvement can be counted in days.

Feedback

Reflection in action needs a voice

Continuous attention to your surroundings will provide you with the means for you to reflect upon your current situation. Think - and then improve it.

Feedback can be in the form of logs, data, graphs, statistics, analysis, discussions with customers or colleagues - Anything that gives your surroundings a voice.

If your Continuous Delivery ecosystem or your application isn’t talking to you, then you’re trying to move forward while blindfolded, in the dark.

Give your surroundings a voice.

For each card ask yourself the following question:

To what extent would implementing this feature or ability provide more feedback or visibility to the responsible worker and his colleagues?

The feedback is measured from one to three stars. Use the stars as follows:

It sporadically affects the developer at an individual level.

It affects the entire team and collaboration.

It affects us, beyond the project, at a corporate level.

Payback

The payment to your technical debt

For most software projects it’s the code’s complexity and technical debt that eventually makes it obsolete.

Every time we touch the code, we’re jeopardizing the original design and quality. Either by adding quick solutions that don’t scale or because we simply don’t add non-functional ‘abilities’ to the solution.

Testability, traceability, maintainability, supportability, readability… These kinds of abilities.

We’re building up technical debt - debt that will have to be paid back or you’ll end up broke.

For each card ask yourself the following question:

To what extent would implementing this feature or ability help to pay back on technical debt or actively prevent more debt from being added?

The payback is measured from one to three stars. Use the stars as follows:

It sporadically affects code snippets at an individual level.

It affects design at a team collaboration level.

It affects architecture at a corporate asset level.

Simplicity

The simpler it is to implement the higher the gain

Complexity is everywhere. Simplicity is the opposite of that.

In a standard approach to software development, simplicity is the meter that outweighs all others.

The simpler a solution is to implement, the faster the Return On Investment.

To clarify your prioritization, take the sum of your throughput, feedback and payback scores and multiply by simplicity. That’s how important simplicity is!

For each card ask yourself the following question:

What would be required to implement this feature or ability, taking into account man hours, money spent up front, and ongoing cost of ownership?

The simplicity is measured from one to three stars. Use the stars as follows:

This is the size of a project. It not only involves the team, but the line organization itself. It requires funding and approval from upper management.

Several people will have to be involved, either for implementation, research or planning. Implementation is at least a week of focused work and there may be expenses up front.

It can be implemented by one person in less than a week of focused work. Investment other than actual labour is minimal.

Score

Adding priority to the cards

The card score is calculated based on the values of the gauges.

The algorithm used is:

(throughput + feedback + payback) × simplicity

By multiplying with simplicity the algorithm has a built-in favor for features and abilities that are easy and simple to implement.

Take the following two cards for example:

Automating the entire functional test will score 3 in throughput, 3 in feedback and 1 in payback but only score 1 in simplicity because it will take months to implement

  • the score is (3+3+1)×1=7 in total.

Adding an automated integration to the master branch that can guarantee that is’s always buildable and pristine will score 2 in throughput, 3 in feedback and 1 in payback but score 3 in simplicity since it’s not a huge effort to implement - the total score is (2+3+1)×3=18.

Automating the integration is essentially a low hanging fruit.

Although these fruits may not represent the biggest pains, they do create a lot of visibility which will help you gain confidence, credit and budget from your line organization.

The method defines low hanging fruits as anything higher than 15 - with 3 in simplicity and blockers as cards with 1 in simplicity but total score of t or higher.