Simo Virokannas

Writings and ramblings

What Happened to Flowcharts?

This article may seem like a love letter to flowcharts. Part of that is probably true. Growing up one of my favorite toys was a dark green transparent flowchart stencil. But despite this obvious bias, I hope I’m making a point that can someday be useful to whomever stumbles upon this.

Personally, I’ve made it a habit to always chart out processes before writing implementation, but have noticed this is no longer the norm.

Somewhere along the way, software development decided it was too sophisticated for flowcharts.

They became associated with dusty textbooks, corporate training manuals, or the kind of diagrams that appear in PowerPoint decks moments before someone asks for an estimate that cannot possibly be real. Flowcharts, we were told implicitly, belonged to an older era: one of mainframes and punch cards, when programmers wore white shirts and thought in rectangles.

And so, quietly, we stopped drawing them.

We replaced them with tickets, stand-up meetings, and architecture discussions conducted almost entirely in metaphor. We began to treat process design as something that could be absorbed through osmosis, or postponed indefinitely. “The code is the documentation”, we said as though that were wisdom, rather than surrender.

Complexity did not disappear just because we stopped sketching it. If anything, it grew.

Flowcharts simply became unfashionable. And that is not the same thing as obsolete.

A Brief History of Thinking in Boxes

Flowcharts predate software itself. Long before anyone wrote programs in C++, Rust or JavaScript, engineers were already searching for ways to describe processes that unfolded step by step, decision by decision. In the early twentieth century, industries were becoming too intricate to manage purely through intuition. Manufacturing lines, bureaucracies and logistical systems all demanded a kind of clarity that conversation could not provide.

That’s when the drawing started.

By the time electronic computing arrived, flowcharts were waiting, almost perfectly suited to the new machine. Early computers were unforgiving. They were not interactive pocket companions but expensive, room-sized engines of literal obedience. They did not “kind of” understand what you meant. They relentlessly did exactly what you told them, and nothing else.

In that environment, you could not afford ambiguity. Before writing code, you had to prove to yourself that the logic made sense. Flowcharts became a way of thinking out loud, except the thoughts were arranged in paths and branches rather than paragraphs.

They were, in a sense, the first serious tool of structured programming: a discipline imposed on imagination.

What Flowcharts Still Do Better Than (Almost) Anything Else

A flowchart is honest in a way that written-down thoughts rarely are.

It does not allow you to gesture vaguely. You cannot hide behind a phrase like “the system handles it” or “this will be figured out later”. A flowchart insists on specificity. It asks what happens first, what happens next, and what happens when something goes wrong. It forces you to confront the uncomfortable truth that every process is really a collection of possible paths, not a single clean line.

Most modern systems are full of invisible branching. They contain retries, timeouts, exceptions, unexpected user behavior, partial failures, silent assumptions. All of that exists whether or not you choose to acknowledge it.

The flowchart acknowledges it.

And that is why it remains powerful: the moment you try to draw a process, you begin to see it as it truly is, not as you wish it were. The so-called simple workflow suddenly reveals itself as a maze of conditions and edge cases. The diagram becomes less like documentation and more like a roadmap.

The Vanishing Art of Thinking Before Building

There was a time when drawing the logic was normal. It was simply part of the work.

Today, many developers are trained to move in the opposite direction. They begin not with design but with implementation. A repository is created, a framework scaffolded, a database connected, an MVP pushed forward. The process itself is discovered later, half in production, half in hindsight.

It is not laziness. It is culture. The kind of culture that endorses vibe coding.

Modern development rewards motion. Speed is praised, deployments are celebrated. Clarity is optional, sometimes even considered indulgent. Flowcharting feels slow, the way planning always feels slow when compared to improvisation.

Sometimes slowness it is the cost of understanding. Looking at a map takes time. Driving blindly takes more.

Flowcharts Matter More Now Than Ever

The irony is difficult to ignore: software has never been more complex, yet we have never been less willing to diagram that complexity.

We now build systems that span continents. We rely on distributed services, asynchronous communication, eventual consistency, third-party integrations, authentication chains, queues, retries, and failure modes that no single developer can hold fully in their head.

And still, we often try.

We convince ourselves that the process is obvious, that it will emerge naturally from the code, that diagrams are unnecessary overhead. But complexity does not become simpler because it is undocumented. It merely becomes harder to reason about, harder to explain, and harder to repair when it breaks.

Flowcharts were never meant for trivial programs. They were invented for exactly this: for systems too intricate to trust to memory alone. Flowcharts are tools for survival.

…Even If You Don’t Need It

The real value of a flowchart is not that it exists, but that you were forced to create it.

You cannot flowchart something you do not understand. The act of drawing exposes uncertainty immediately. It forces questions that implementation often postpones: What happens if this fails? Where does the data go? Who owns this state? What triggers this step? What if the user does it twice? What if there’s no response?

These are not afterthoughts. They are the system.

A flowchart is a form of architectural honesty. It is how you debug a process before it has the chance to become real.

The Craft We Should Not Have Lost

Flowcharts are disappearing not because they are useless, but because they require something modern development often avoids: deliberate thought. They impose structure. They expose contradictions. They make complexity visible. And in an age where systems grow larger, more interconnected, and more fragile, visibility is not optional.

If you are designing something serious; a payment pipeline, an onboarding workflow, an approval system, any process with real consequences – you should not be improvising inside the codebase, hoping coherence emerges.

Here’s some useful flowchart tools to include in your toolset:

  • Mermaid, especially inside Markdown documents. This notation is already supported out-of-the-box in GitLab and GitHub. In addition to flowcharts, you can do ER diagrams and other UML’y stuff from the early 2000’s.
  • If you use vs.code, there’s an extension by Matt Bierner that lets you preview Mermaid diagrams within your .md documents.
  • Draw.io is great for quickly sketching flowcharts if you prefer not writing. It can also save/load directly from your preferred cloud storage solution.

Draw the process.

Make the logic visible.

Be old-fashioned.

Flowcharts are not dead. We simply forgot what they were for.

Flowcharts, you’ve always been there for us.

We need you more than ever.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.