Over a million developers have joined DZone.

The System Design Canvas

DZone's Guide to

The System Design Canvas

Every personal or professional thing we do is part of a system or subsystem. Those systems have both success and failure patterns.

· Agile Zone ·
Free Resource

You've been hearing a lot about agile software development, get started with the eBook: Agile Product Development from 321 Gang

In a previous post about productivity patterns, I wrote about how I tried countless systems to improve my productivity. I tried everything from having a Franklin planner to using GTD to personal Kanban and the Pomodoro Technique. I asked myself why some methods worked and some did not. Why did I abandon two systems when I knew so many others have been successful with them? Why has personal Kanban worked for me for the last seven years? I started listing common traits and saw relationships and discovered patterns. Not only are there three things I believe every system needs to work but I also see three things that are necessary to prevent you from abandoning that system.

Every personal or professional thing we do is part of a system or subsystem. Those systems have both success and failure patterns.

Success Patterns

For a system (defined as a set of principles or procedures to get something done or accomplished) to be successful, you always need ritual and habit.

  • Ritual: A series of actions or type of behavior regularly and invariably followed by someone.
  • Habit: A regular tendency or practice, especially one that is hard to give up. You need to be habitual with your rituals, as part of your system.

Failure Patterns

Early indicators that your system will fail include a lack of clarity, progress, or commitment. These are very similar to Mike Cottmeyer's "Why Agile Fails."

  • Lack of clarity creates confusion and waste. Each step of a system should be actionable and repeatable. In order to ensure certainty around your system steps, write them down.
  • If you lack progress, you will lose momentum. If you lose momentum, you will lose commitment to the system.
  • Lack of commitment to the system results in you no longer using the system. You move on to something new to get the results you seek.

System Design Canvas

After I identified the patterns, I wanted to present a useful model to visualize the indicators that will, in time, cause the system to fail. I decided to base my model on the Business Model Canvas by Alex Osterwalder. Below you will see the five areas that need to be considered. Once complete, if you notice one or more of the sections is ambiguous or short on details, you should view that as a warning.  

System Design Canvas Template

Scrum Framework Success Patterns

By using the Scrum framework as an example system, I completed my system design canvas. Upon completion of the worksheet below, I can see if there are any “gaps” in the system. As you may have guessed, there are no gaps if Scrum is properly implemented and followed. However, if it was modified without expert guidance, a gap will become visible and provide an indication that the system is at risk of failure.

Scrum System Design Canvas

Because you may have a large organization where you are dealing with different kinds of dependencies, you may need to create “sub” system design canvases to account for organizational complexity.  Scrum may not be enough. Don’t worry. The same rules apply.

If you're interested in testing your system or subsystems, there's you can check out the System Design Canvas and see if you are at risk of failure. Because I am providing this under a Creative Commons Attribution-Share Alike 3.0 Unported license, I welcome you to download it and modify it to meet your needs.

Download the free agile tools checklist from 321 Gang. This guide will help you choose the right agile tools to position your team for success. 

agile methods ,agile ,productivity ,system design

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}