SUNDAY, DECEMBER 12, 2010 AT 12:02PM
There are a few stories that I find myself repeating in meetings with investors, clients, and collaborators. It occurs to me that these are probably fodder for blog postings. This is one of those oft-repeated observations.
I studied Mechanical Engineering in college. I wanted to design machines. I took all kinds of classes called things like Strength of Materials and Dynamics and had labs where we would use a hydraulic press to break something, as we measured its modulus of elasticity and its ability to handle loading of various sorts. It was fascinating stuff.
The last two years of my schooling I was also taking Computer Science classes. It was a new field back then, at the end of the 1970's -- especially compared to Mechanical Engineering. I noticed that I was building machines in my software classes, too. Many of the principles were similar, and the ways of thinking -- like isolating certain parts of a machine and focusing on them as a unit.
When I was nearly ready to graduate I switched my major to Computer Science. I realized that from a true design point of view, there was a lot more freedom in designing software than physical machines. There is no course in Computer Science called Strength of Materials. Algorithms do not have stress/strain curves. Friction does not play a role, and nothing wears out. The materials are free. It's a pure form of design, though constrained by the medium (the world inside the computer) instead of being constrained by the "real world".
I have come to refer to software engineering as the Dr. Seuss version of building machines. You can build ridiculous skyscrapers, endless cantilever beams, or their moral equivalent, knowing they will never break or wear out. You can have a little guy pedaling madly on one end of your machine, a propeller whirling on the top, and lots of, yes, "bells and whistles". Believe me, all software looks on the inside like Dr. Seuss designed it.
I spent 25 years designing and building commercial software. The similarities are still there to designing machines. And yet the engineering has largely gone out of it, because computers are so fast, and the goals so shallow -- there's no need for anything but a hot glue gun to hold together open source modules talking to a SQL database, slapped on a web site. Ship it!
So I'm designing products in the real world now. Not exactly machines, but mechanisms. It's much more satisfying, in the same way that the real world is satisfying. One needs constraints, cost limits, finite availability of materials and processes. It leads to more creative thinking, more true innovation, in my opinion.