Soft Engineering

I like working in a new space. Whether that space is new to me, newly opened, or newly discovered.

Writing, crafting, growing, accruing, and constructing software is like engineering, except where it’s not.

Fred Brooks, as I recall, had a lot to say about how software differs from hardware engineering. Hardware engineering is true engineering: you have a precisely-specified set of physical and scientific requirements (and conceptual too–your computer must be a finite state machine; a universal Turing machine). But software, ah, that is malleable to a ridiculous extent. So much so that we haven’t even figured formally out how malleable it is. My professor in college taught me how to “be the computer” on a certain scale, but there is no way you can “be” my compaq 620c running windows xp and firefox. Too much. I remember reading a story about Seymour Cray, the Cray supercomputer dude, as a kid. Cray literally dug a hole in his backyard so that he could literally model the Cray’s chip design in his head. I get to write stuff that runs on that design.

So check out what Brad Abrahms has to say about comparing what he does against what his dad, an engineering professor, does.

As the philosophizing son of a physical engineer, I perhaps I gravitated towards this computer technology thing because it had the engineering that kept the inherited genes happy while being vague enough to keep it differentiated from my dad’s Real Engineering interests.

I think there is a difference to draw here, though, between software engineering and coding (and computer science, but that’s an obvious but easily-overlooked point). From a slashdot comment:

Document your application, requirements, constraints, and system interactions (what the engineer does). Then write the code (what the coder does).

What you will quickly learn is that it’s better to be the engineer than the coder. What you’ll realize is that the engineer is the client-side guy that figures out how to solve the challenge presented and the coder is the guy who can live in Manipal.

The computer scientist is another guy altogether that sets the boundaries within which the engineer must work and provides many of the tools.

Fred Brooks also rhapsodized about why software is the greatest. And it is; the coolest Lego ever; a virtual 3-D printer that you wire up in your mind.

In sum, technology is teh r0XX0rz, 41wayz & 4eva!

May 25th, 2005 | Computer

No comments