The Jigsaw Puzzle System for Making Software

Heidi Brumbaugh
6 min readNov 2, 2022

--

(And Other Big Projects)

Puzzles? I love ’em. Recovering addict as a matter of fact; during graduate school I had an open tab at my local game store, and the always-on puzzle in my living room probably added three months to my dissertation.

But I learned something.

Computer programming problems, and I think most problems with a lot of moving parts, benefit from an approach that resembles the best way to tackle the classic jigsaw puzzle. (I’m talking your basic rectangular number with a pretty landscape or cute puppies, not the kind with all white pieces or weird-ass shapes.)

1. Put together the edges.

Duh. For one thing, there are fewer edge pieces, so you’re basically solving a mini puzzle-within-a-puzzle. Since one side of the piece is flat, and one side is facing inward (which we aren’t worried about for now), there are only two sides to connect. Finding matches is easier.

Two more things to point out about putting together the edge, one obvious and one subtle:

One, when the edge is all connected, you have the framework for the puzzle in place. You can see the size of it, getting a sense of scope.

The second thing? The process of working through all those edge pieces gives you a feel for that particular puzzle. You’re starting to see what it’s made of — colors, textures, lines.

There is a reason ‘Hello World’ is the first program in a new environment: you need to get a look at the bones. My friend John is starting a new SAAS project in a new (to him) JS framework, and the first thing he did was to implement Authentication, which makes a lot of sense. It’s a small chunk of code to work with, but it gives you a glimpse into how the pieces are all going to work together. It touches frontend, backend, event notification, state… all the juicy ingredients.

Sometimes I’m finishing the puzzle edge and I realize I’ve missed a few edge pieces back in the pile. I tend to leave them be. Thing is, they will turn up eventually, and when they do it will be obvious where they go. Because human beings cannot be in hyper-focused, flow state every minute of every day, every project benefits from a few slam dunks that will keep your confidence going when the messy bits start.

2. Dump out a bunch of the pieces and get a look at them.

I don’t mean all the pieces. I mean grab a few handfuls to get a feel for the project, start to put a plan in place. Sometimes I’ll see lines: alluring lines that scream to be matched up. Usually I’ll see color. And most puzzles have a big, homogenous mass of pieces that look impossible.

3. Start the first, broad sort. If the puzzle has a lot of sky or lake or ocean — a ton of pieces the same color, I take them out of play for the early part of the work. Your jigsaw puzzle box has two box halves — the top and the bottom, so I start throwing the sky/water into one of those boxes.

Programming project analog? You don’t have to tackle everything all at once! There exists in the work a big, ugly part to your project. Using the Jigsaw Puzzle Method, that project will swear to god get easier if you don’t try to tackle it first thing. Trust this.

4. Pull out the first thing to work on.

You’ve seen all the pieces, and you’ve noticed something: There is that one color for which there is the fewest number of pieces. It’s this bright purple with only like ten pieces. Get them now. Scratch through the piles and find them. Pull them out. Put those pieces together first.

Why? Dude, you have to get started. There is no shame on starting on the smallest, easiest piece. Do that. It will give you:

* Momentum. Finish something tangible and will feel the project moving forward.

* Confidence. See? This isn’t so hard after all! (A lie, but shhhhh.)

* Information. Any part of the project you complete has two things: A core, and edges. Getting the core done is satisfying, but getting the edges done gives you information. Maybe there is some yellow attached to the purple blob. This tells you where the yellow is supposed to go. You haven’t done the yellow yet, but when you get to it, you’ll remember.

There is a reason people like to pick the low hanging fruit. It exercises the muscles you will use for the rest of the project. Free bonus: Fruit!

5. Do the next thing. Repeat.

By now you’ve been poking around in the puzzle pieces for awhile and are starting to get a feel for them. Pick the next thing to do. If purple was the color with the fewest pieces, pick the color with the next fewest pieces.

What is happening here? You are giving yourself progressively larger problems to solve. Why does this work? Each problem is giving you a good foundation to tackle the next problem.

Also, remember those edges? You pick yellow pieces, and you remember that they are attached to the edges of the purple pieces.

What’s that you say? Heidi! Just look at the picture on the box and you’ll see where that clump of yellow is supposed to go?

Okay. I’m withholding judgement. I mean, if you want to look at the picture on the box, you do you. Good luck, also, with your waterfall design flowcharts. I wish you the best.

Me? I get more mileage by straight up trusting the process, and trusting my own ability to find my way through that process. Which, again, for me, usually involves not looking too far ahead.

I hate to break the metaphor here, because I think it is a good one, but unlike a jigsaw puzzle, your project does not have a predetermined final state! It will get that state when you make it and not before. It is very likely to resemble the final state you had in mind when you started, but most projects are a process of revelation. Get comfortable with surprisal.

6. Put together the easy parts of the sky.

Okay, you’ve put together the main part. It wasn’t as hard as you thought it would be because each part you finished informed the next part. The sections that seemed to be disparate ended up connecting in surprising ways. You’ve gone through all the pieces except for the messy sky still in the box.

You know, the box where you’ve been putting all those blue pieces.

But wait, look, that sky isn’t as homogenous as you though it was. Now that you look closer you realize there are lighter and darker shades of sky. There are patches of cloud. There are pieces of sky with edges that hook up with trees. Wait a second, the problem is actually smaller than you thought.

The lesson here is that doing the easier parts makes the hard parts less hard. <Mind blown.>

7. Put together the hard parts of the sky.

Inevitably, there is solid patch of monochromatic blue to deal with. At this point my puzzle technique is to go with brute force: Sort the remaining pieces by shape and just try them all. Your nearly done puzzle has some spaces with three known edges. Start there, because you’ll always do better where you have the most information. Try all the pieces with those edges until you find a fit.

As in war, you want to reduce the enemy’s numbers.

Holy shit, you’ve been doing this all along! Making the problem smaller and smaller. Different techniques, same result. And oh boy… suddenly those final pieces are coming together lightening fast!

You did it!

Now step back with satisfaction and look at the picture.

Designed by Freepik

--

--

Heidi Brumbaugh

Heidi Brumbaugh, PhD is a linguist. Visit her website at https://vocabvictor.com to learn about her word learning app Vocab Victor and read her vocabulary blog.