When I was a little kid my great passion was building things (usually spacecraft) out of LEGO. When I was 10 I learned about computer programming thanks to the Commodore PET computers at my school. I really think that the mental process is much the same, and that my experience with LEGO led directly to my ability to pick up computer programming skills.
The basic idea is that with LEGO bricks, they fit together to build some kind of creation. And they can only fit together in certain ways and not in others. For example you can’t fit two bricks together stud-to-stud, or bottom-to-bottom (at least, not without other pieces to hold them in that position). Similarly, there are syntax rules with software that limit the ways you can put statements and expressions together. And just as you can create a given shape using a wide number of possible arrangements of various LEGO bricks, you can implement a particular software feature using any number of different combinations of statements and expressions. So if a LEGO creation is like a software program, a LEGO element is like a variable or an operator.
For years when I have talked to parents at train shows and BayLUG meetings, I have been telling them that all the years I spent building LEGO etched certain pathways into my brain which prepared me for computer programming, and that’s a reason they should encourage their kids to do LEGO. And I think the fact that we’re based in Silicon Valley is not the only reason that many of our BayLUG members come from software, engineering, or other technical backgrounds.
Today, I came across a link to an interesting article by one of the foundes of Macromedia Flash on Jake McKee’s blog. His story is basically identical to mine through his childhood years – except that he got into Apple ][ and Mac computers and I was a Commodore guy.