When discussing the design and integration of systems on chip and models of systems on chip, the Lego analogy is often brought up. The idea being that with Lego, anyone can put together anything and every component can be combined with all other components. Right. My recent building of Lego set 21327, Typewriter, makes me wonder if the people who talk about Lego-like construction have actually built anything from Legos in the past few decades.
Starting with Duplo
I think the concept of Lego being easy to build is well-matched by the wonderful world of Lego Duplo. A three-year-old can build something like this:
Building something large with Duplo is very easy thanks to the large bricks and limited selection of special parts. Indeed, Duplo is in many ways the classic Lego brick, more so than the mainstream small-Lego sets.
However, a Duplo model is rather coarse.
I remember when I was an exchange student in Germany in 1995, and a professor talked about the promise of the rapid application construction tools that were all the rage back then. In his opinion, it was like building with Duplo – you quickly get something that fits together, but it is not very refined. If you want smoother detailing, you have to craft regular Lego bricks onto the Duplo base, and the number of parts and work involved goes up quite significantly.
Some Lego sets are designed with a wonderful level of modularity. For example, this house from a Lego Friends set can be connected to a whole set of other houses based on the same base plate and with compatible pin-outs.
The top floors of the buildings can be freely exchanged with each other. However, that is not really so much a “Lego” property, as a property of the design.
Making something this modular requires real thought, planning, experimentation, and following good design rules and interface standards. You cannot just take a pile of bricks and throw together a bunch of houses and expect them to fit together nicely. Interfaces have to be designed before the items that are interfaced. That is just as true in Lego land as it is in the real world of design.
The real fun with Lego begins once you start to add moving parts to models. When I was a child, all we had was fairly plain bricks, and “moving parts” meant putting a set of bricks on some wheels to make a car. Then, Lego Technic arrived, and mechanically functioning models were possible. They require more skill, knowledge, and forethought to end up with something functioning. I still remember the time I built a six-wheel-steering car in Technic, only to realize the thing could not turn since all the wheels turned at the same time in the same direction…
Current Lego models tend to blend in a bit of Technic even in non-Technic models. The spaceship, spaceship, Spaceship! pictured above has several functions where pulling on a control makes another part of the model move. Putting that model together requires following the instructions precisely, you cannot really improvise or modify before the whole set is put together. There are hidden dependencies that you only realize once the model starts to come together, and the right beams have to connect to the right connectors in the right place.
How did they Even do That?
The Typewriter model really takes things up to eleven in terms of precise construction needed. There are more than 2000 parts, and every single one has to be put in correctly for the final design to come together.
The picture above shows a part of the ratchet mechanism used to advance the paper roller when you press keys on the typewriter keyboard. It is a very intricate piece of machinery, and it is hard to fathom how the set designers managed to create this and make it fit inside the model overall. There must have been many iterations and experimentation to create the moving mechanism, and then to clad with an outside with almost no exposed studs. Amazing work.
As an aside, I wonder how Lego tests their instructions. The typewriter instructions is a 250-page book, walking the builder through many hundreds of discrete steps. Every single step must be correct. The concentration needed to proof-read such a monster and especially to re-read it after changes have been made is daunting.
The Lego analogy is interesting. At first glance, it seems very logical. When considered a bit more, it starts to fall apart. But then, with even more consideration, it comes back. Lego is a good analogy for how design and construction can work and how it can be made easier.
You can use Lego blocks to quickly throw something together, but making something look really good and have working moving parts require quite a bit of effort. Still, the clever standard dimensions of Lego parts make it a lot easier than crafting something from actual materials. In particular, the fact that you can easily take things apart and back up a bit, and then make some changes, is very powerful. It is really all about standardized interfaces.
Note that even with Lego, you need to take some care in how you put together things. For example, set 75313 apparently features a subassembly that is a one-way function:
As a result, the assembly cannot be dismantled conventionally: there is only one way to do it. The green pin connector has a slit in it large enough for a knife blade. It’s just about possible to use one to move the 4l axle fractionally, just enough to grip the end of it. However, it comes at the cost of damaging the axle.https://brickset.com/article/67650/lego-has-designed-a-set-that-can-t-be-taken-apart
Some parts of the typewriter build also felt like it would require more than just hands and a standard Lego tool to take it apart. Not that I am going to try that, but it did feel very much like going up a one-way street, especially in the core mechanics.
To conclude the conclusions, I think the key point of the Lego analogy is that standardized connections and dimensions can remove unnecessary friction from composing a design, but the essential design problems are still there. You need to think about what you build and how the design fits together at the top level. Making something elegant and cool still requires deep design skills, but it is nice when you don’t have worry about unnecessary friction from incompatible interfaces along the way.