What Can The Big Mess o’ Wires Teach Us About Software?
Steve Chamberlain [LINK] has achieved the ultimate in home-brew electronics: Creating his own CPU from basic logic chips. Absolutely amazing. The photos alone are a thing of beauty but to know this thing actually works is incredible.
From Steve’s site:
“Big Mess o’ Wires 1 is an original CPU design. It does not use any commercial CPU, but instead has a custom CPU constructed from dozens of simple logic chips. Around this foundation is built a full computer with support for a keyboard, sound, video, and external peripherals.
My original goals were:
- Build the CPU from scratch, primarily using basic 7400-series logic. No 6502, Z-80, etc.
- Keep the hardware complexity to a minimum. I’m not an electrical engineer.
- Be capable of running “real” programs, not a 4-bit CPU or toy machine.
- Provide a way to interface with a PC.
- Be fast enough to run interesting programs interactively”
Interestingly I also used the 74HC595 shift registers on my LED matrix project.
Steve’s project doesn’t use soldering but rather each wire connecting the chips is wound by hand around a special gold leg on the proto board. This is an “old school” technique which takes a lot longer than soldering but if you make a mistake it’s much easier to recover from.
Things like this always fascinate me when I contrast to software development in the “real world”. Here’s a guy that had a direction, knew what he wanted to achieve and set about doing it. It’s just one person so it took a long time but he got there.
If you wanted to get 2 people to build the same thing, working as a team, my guess is the likelihood of success goes drastically down. In fact on a project like this with the addition of that one extra person you’re probably going to fail the first time.
So why is that?
Contrast this with the process of industrial ship building or air-liner development. Those projects involve literally thousands of people, each doing a small job. In the case of the air force or Department of Defense you now have thousands of vendors. And it seems from the Discovery Channel that those projects generally finish on time.
Why is that?
The common thread is hard to pin down but to me it’s people who know what they’re doing.
The ship building scenario is a very long process but infinitely broken down into minute detail. Each component, each step is itself extremely well defined and well understood. So in spite of its size, the ship building process has
- a LOW number of unknowns
- very RIGID requirements
- and a LARGE number of people and moving parts.
Now in the case of how to build a CPU from scratch, starting out I’d say Steve knew very little. I would venture (and it’s no reflection on Steve) that almost the entire process was an unknown. So how was he successful?
In contrast to the ship example he had
- a HIGH degree of unknowns
- very FLUID requirements
- a LOW number of people
Of course things are never this clear cut which is why software development is so tricky. You need to constantly manage these three variables of Unknowns vs Constraints (requirements) vs Headcount and keep them in balance if you’re gonna be successful.
And so I draw my conclusion; Any time you have a HIGH degree of unknowns with RIGID requirements and a LARGE number of people you are destined for FAILURE.
The corollary is any time you have a LOW number of unknowns with FLUID requirements and a LOW number of people, you are destined for SUCCESS.
I know which team I’d like to be on.









MAGNIFIQUE!
Nice post. One thing that is also important when you are building anything complex with a large number of people, is the interface between the small things that comprise the big thing. It is important to define not only the big picture but also these small interfaces, and define them well.