Okay, here's the hideous truth. I am a self-declared Software Philosopher.
That title, in and of itself, should be sufficient reason for you to run screaming
into the night. Be that as it may, it requires some clarification.
"Software Engineering" has become an incredibly sexy term which allows an
amazing number of people to command ridiculous salaries for creating what is
frequently inefficient, poorly documented, unmaintainable crap -- ironically,
results which, despite a lot of handwaving and interminable meetings, really
aren't engineered in the classical sense at all.
This is because "Software Engineering" is a gross misnomer. Think about it.
Almost every kind of engineering discipline has a physical, tangible root:
Chemical Engineering oversees the manipulation of substances which bubble and
stink. Electrical Engineering guides the construction of faster electrical
pathways and tinier logical circuits. Structural Engineering creates buildings
that ride earthquakes and defy gravitational pulls.
Software "Engineering", on the other hand, has simply been a succession of
big egos followed by bigger egos, each saying to the other: "MY way is better
than YOUR way". Don't confuse the creation of software with the creation of the
computers upon which it runs; Computer Engineering is a valid, hands-on activity --
but once you've got that sleek box sitting on your desk, you still have to put
the bytes in order, and when it comes to THAT activity, everyone has A Better Idea.
Hence the advent of the Software Philosopher.
When you get down to brass tacks, the software itself really doesn't matter
much. It's HOW you define it, HOW you create it, and most importantly, WHAT you
leave behind for the people who come after you to maintain it which matters.
*THAT* is what I help software development teams figure out.
|