Eating My Own Dog food

Why it took me ten years to use my own product to draw a flowchart

I wrote the first version of SmartDraw in 1994 and I’ve been the sole author, or one of the small team of authors, on every version since. Yet I only began to use my own product to help me think through designs by drawing flowcharts since 2007. Why? There were three obstacles to overcome, but first let me explain why I use flowcharts at all.

How I use flowcharts in software design

If I have to design a solution to a reasonably complex problem, I use a flowchart to help me think through all of the cases my code is going to have to deal with. For example, when I designed the multiple page feature of SmartDraw Cloud, I had to think through how the usual mechanism for loading and saving a one page document would be modified to handle a document with multiple “one-page” documents stored in it: How navigating between pages would work, when changes had been made to the page (or not) and so on.

Creating a flowchart of the steps and cases helps me understand the issues before I start coding and this is the main reason I use it, but it also creates documentation that can be used later to understand what the code I wrote is trying to do (often by me).  You can look at my flowchart by clicking on the preview below.

flowchart_1

This is the real one I did at the time. No cosmetic or grammatical clean up has been applied. [We try for authenticity here at SmartDraw].

However this only works if I can create the flowchart at the speed of thought. If I have to futz around trying to get my ideas into a diagram, it slows me down and it’s not worth the effort.  This brings us back to the three obstacles that I had to overcome to make this workable.

Obstacle 1: Drawing Flowcharts is a Pain!

Before 2007 drawing a flowchart with SmartDraw was pretty much the same process as drawing one with MacDraw, Visio or any of the other programs used to draw diagrams: You drag shapes onto the page and join them up with lines. Rearranging the shapes and the flow as your mental model evolved was tedious and slow. Trying to use a diagram to help you think made it harder not easier.

What changed this was SmartDraw’s introduction of automatic formatting. With automatic formatting I could drag shapes around to new locations, add new ones and delete them and SmartDraw did all the work of reformatting the flowchart. I could finally draw and think at the same speed.

Obstacle 2: Flowcharts are incomprehensible.

Flowcharts are often literally a joke. Take a look at this one:

bad_flowchart

The culprit is this innocent looking symbol:

decision_symbol

The decision symbol is a diamond and is used to direct the flow from a decision in perpendicular directions. This is how flowcharts quickly end up as spaghetti messes. Imagine if you wrote text this way: I’m reading the instruction and then suddenly I have to turn the page on its side!

The way to fix this and make your flowcharts useful to you and your audience is to:

  1. draw them from left to right like you do when you write text, and
  2. use a fork in the road to indicate a decision

split_path

A fork in the road (or a split path) lets you see results of the decision, without looking in perpendicular directions. Later decisions make additional forks.

good_flowchart

This is much more readable, so why is the perpendicular flow of the traditional decision symbol so popular? Because of obstacle number three.

Obstacle 3: The tyranny of the printed page.

The reason why flowcharts use perpendicular flow is so that they will more easily fit on a printed page. Flowcharts date from 1921 when they were used to document processes. They were drawn by hand onto a piece of paper using a stencil.

We are way beyond this now. (Although I think it’s telling that Visio still calls its shape libraries “stencils”). There is no need to print my design flowcharts. Ever! This gives me the freedom to draw them for readability and clarity without worrying how they will fit onto a page.

Until recently, when I wanted to share my diagram with my co-authors, I’d store it in a common location and send them a link. They’d view in it in SmartDraw.  Now I use SmartDraw Cloud and just send them a link.

In 2016 there is no need to even consider sacrificing clarity to make your diagram easy to print. Just don’t print them! Share them.

Flowcharts can help you think and communicate

Once you can draw as fast as you can think, and you can create easy to follow flowcharts by abandoning the decision symbol, flowcharts can be a great tool for helping you design algorithms. Sharing them with a link also makes them an effective vehicle for communicating with your co-workers.