Are lego blocks really a good aspiration?

February 3, 2007

Filed under: Programming, Software Development — Doug Clinton @ 4:54 pm

I’ve been reading “Dreaming in Code” recently. This is written by a journalist, Scott Rosenberg, who embedded himself in an open source start-up company a few years ago to follow the progress of the development project, in much the same spirit as “Soul of a New Machine”.

In an early chapter, Scott explores the traditional ideas about software development evolving towards a ‘lego’ model where software is created by snapping together pre-formed units to form an application, and then ponders the reasons why this has not happened. This has got me to thinking. Do we really want to aspire to a ‘lego’ model for software? Are we really suggesting that software should be compared to a child’s toy? After all, look at any lego structure and tell me you would want to use a software equivalent for anything. In fact, look at the world around you? Tell me, is any of your furniture made of lego? Your household appliances? Your house? Lego structures may look impressive, but only in a sort of dancing-dog kind of way. The key features of any lego house I’ve ever seen, for instance, are that all the top surfaces are covered in small, round, protuberances and everything is squared-off and all the corners are sharp. Oh yes, and it’s a toy. Even if you built a full-size house out of lego, I doubt anyone would want to live in it, except perhaps as a post-modernist art exhibit.

The usual comparison that is made at this point is with electronics. After all, aren’t there lots of standard electronic components that you can plug together to make, say, an amplifier? It doesn’t matter which electronics company you get them from, you just take standard transistors, op-amps, resistors, capacitors, stick them on a circuit board according to established patterns and, hey presto, an amplifier. What are you going to do with it then? Well, at that point you’d write ‘Matsushita’ on the outside of the case and put it on the shelf of Dixons for £49.95 to sell to people who don’t give a damn about audio quality. The fact is that anyone who wants to make an amplifier that doesn’t sound like a couple of tin cans tied together with string takes care to select high-quality components from specific manufacturers; builds their own power circuits; develops creative new patterns for circuitry that make the best of those components and minimises interference between them. They test them and then make changes and test them again. Then you can put Quad or Linn on the outside and sell them to people who care about sound. BTW, there is a “standard component” way of developing software. It’s called Visual Basic. You can very quickly knock up a useful, database-backed GUI in VB with all the usual bits and pieces such as text fields, combo boxes, radio buttons, etc. as well as much more complex things such as spreadsheet components in a very short time. But when you see one of these apps you’ll notice that the main defining characteristics are the software equivalent of there being small round protuberances on all the top surfaces, everything is squared-off and the corners are sharp. In a lot of cases, these apps are no more than toys (though, contrary to real lego, it is possible to build non-toys as well.)

Take another example: the car industry. This is a very mature engineering industry, but do they have a lego model? Look outside at all the different cars you see. Even the cheap ones. Can you take a door off a Nissan and stick it on a Ford? Even within the same brand, the main visible components are not interchangeable, they’ve been tailored to the design. There is an interesting parallel between car manufacturers and software development, however. That is the concept of the ‘Platform’. In the past couple of decades car manufacturers have realised that developing a new car from the ground up is just too expensive. Now, several different manufacturers will get together and design a chassis together and use that as the basis for a whole range of different cars of different makes. A lot of variation can be built on top of a good platform for a fraction of the cost of ground-up. But that is exactly what the software industry has been doing over much the same time period. In the early days if you wanted to make a computer you build the hardware and put your own bespoke software on top. This was the approach taken for mainframes and mini-computers and the early micro-computers. But then in the 80’s people customers demanding cross-compatibility and since then the industry has standardised on a few, common platforms. There are the Unix-based platforms (including Linux and OS-X), the Windows platform and a few mobile phone platforms. In addition, the hardware platforms have become more standardised, too, with the IBM PC architecture being the most common. IBM soon lost control of that and advances were driven by a wide consensus between manufacturers. No-one builds a new computer from the ground-up anymore. Even Apple have moved to much more standard Intel-based components. They just take more care in putting them together than most companies. The variety of systems you can build on these few platforms is immense.

But it is interesting to note that the computer industry reached this point only a few decades after it’s inception. The motor industry took close to a century to get there. Perhaps we’re not so far behind in our thinking and practices as some people would have us believe.


“Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software” (Scott Rosenberg)

Good start to a new year

Filed under: JavaScript, Java — Doug Clinton @ 2:05 pm

A month has passed since my last entry. Have I really learned nothing at the office in that time?

Actually, I have been very busy. Last year was a year of consolidation for my small company. We built a good foundation on top of the opportunities we had the previous year and have solidified our relationship with our main client. This year I hope to make one of expansion. Our aim is to really build on that relationship and expand the company from our current 3 people to, perhaps 7 or 8.

I’ve spent a lot of January working on planning out the year and we have a number of potential projects in the pipeline so things are looking good. This means, hopefully, that I can get my head back down into the technology again. We have an interesting project lined up to do with processing Schematron. That maybe doesn’t sound so interesting, but we’re taking a novel approach in order to re-use the platform we build last year and it should be quite fun.

BTW, we’re recruiting. We’re looking for a really good all-round Java developer and also a really top-notch JavaScript person. I know that’s not much of a job description but if you think you might be interested in working for a small, innovative and friendly company in West London then by all means send you CV to <jobs at gsl.com>.

Powered by WordPress