So as I've been designing away little chips and circuits in my Computer Organization class, something has struck me. Modularity is very easy to create. Need an 8 bit adder? No problem, build a 1bit adder and stick 8 of them together. 64 bits? Take eight 8 bit adders. Want those to do that addition within an ALU? Drop it in and you're ready to go. It's all very easy and obvious. From these little parts shuffling around 1's and 0's, incomprehensible complexity is built up.
Now flip to the software side of things. It's rarely that obvious where to divide things. It's hard to build to build modules that will drop into any system, anywhere in the world and still function properly. Generally, most software sucks pretty bad from a user standpoint I think, whereas Intel can crank out millions of incredibly complex pentiums that drop into all kinds of systems by tons of different designers and it almost always works, with very few flaws.
Here are my thoughts (most of them probably not new):
Yes, I'm oversimplifying a bit; I'm sure any hardware designers out there are going to angrily comment. :-) But it sure seems to me that the hardware people are much more "real" engineers. They have small, understandable entities with real physical properties, and combine them within the limits of those properties, using a variety of disciplines. I think trying to apply a lot of the same thinking to software development is where some of the industries problems come from. The complexity in software lies in making all of those bits mean the same thing to different people.
As a lot of others are concluding these days, software to me now seems to be a lot more about understanding the people who use it and what they want to do with it rather than the language it's written in or the computer it runs on.
This is Rob Meyer's weblog, a weblog focused on software development and system administration based on 10 years of experience. Want to explore further? You can find out more me or see the rest of my website.
Wondering if I've written on something in particular? Try searching:
You might want to take a look at some of the more requested postings (as judged by incoming traffic):
Want more? Subscribe to this site
or contact me at rob at big dis dot com.
See my writings on: