Can Software Be Like Building Lego?
I'm not thinking about programming the actual solid plastic bricks (though some people do). Rather i'm thinking about the idea of:
"Making the construction of a program, as simple, fun and obvious, as putting lego blocks together"
I've seen lots of people write about this idea before -- either denying that such a thing is possible, or pimping their own new tool as the long-awaited realisation of the 'lego programming' dream.
The other group will point to some new technology they've created, and claim that this will finally bring 'programming to the masses' -- which is the kind of crazy talk i'm tired of.
But I like to think about this Lego Programming idea now and then. To understand the idea, I think you've got to start by looking at lego itself...
Building With Lego Is Fun And Easy
What makes it so?
My first thoughts were all about the lego itself...
- The colours are bright.
- The constituent parts are almost indestructible.
- They have a very visual and obvious connection mechanism:
- it's obvious how two pieces connect
- it's obvious how many pieces can interconnect.
- It's obvious when two pieces are fully connected. They can't be *half* connected.
- It's obvious when a piece is connected.
- It's obvious when a piece is not connected.
- You don't get your hands dirty.
- You get a result quickly.
- There are many many less choices -- the material is pre-chosen.
- Blocks can't be broken down beyond their original size: You can't use half a block.
- Everything you build with lego looks like it was built with lego.
But then I started to think about the 'Tool Chain' involved in building lego... and this seems to be the real differentiator of lego:
- You don't need any tools to build with lego -- just the lego itself, and your hands.
- Anything built with lego can be torn apart with just your hands.
- Anything built with lego can be added to, altered, investigated, without using any special tools at all.
And I think that's the real essence of lego -- no tools, no workbench, no spanners, no visual studio .net license required.
The Real Question about Lego...
The real question about lego is one I can't answer. Here's three different ways to phrase it:
- Is it possible to efficiently build something truly useful out of lego?
- Is lego confined to toys?
- Is lego merely an educational tool?
And some references.
Here's some of the things that made me think about lego programming in the last six months:
And most important of all, here's that Lego Machine Gun.Next → ← Previous