The Illusion Of Software Engineering

From HungarianNotation:

"[A]n easy and comfortable fix that looks good because you can DoItNow? and you don't have to do all the hard thinking that comes from trying to do the RightThing."

Describe other bogus practices here:

Hang on - a comfortable fix that I can do now that passes all the tests seems ok to me (although the quote doesn't mention tests)? The RightThing that still hasn't proved itself hours (invariably days) later is a very slippery slope... I would add however that sometimes that fix is just a small hop on the way to the right thing (and you need to do those other hops). However sometimes that fix is good enough (and sometimes it all ends up getting deleted anyway). -- TimMackinnon

This doesn't sound that bad to me: if it passes your tests but doesn't solve the problem, then maybe you have the wrong tests. Otherwise, shouldn't you do the SimplestThing?

The title of this page intrigues me. Does it suggest that "software engineering" is an illusion because software development is fundamentally different from engineering? Or does it suggest that some/many/all popular practices found in SE texts give only the illusion of engineering? -- MartijnMeijering

The second of those two.

Software Engineering is engineering because it applies technology to provide useful products within economic constraints.

Mechanical Engineering is very different from Chemical Engineering in most respects, for example. But not that one.

See TheChemicalEngineeringCulture

SoftwareBlueprints -- BobBockholt

I think this page was looking for examples of practices that provide the illusion of software engineering. Ex: obfuscating all your variable names with Hungarian Notation and not thinking about why you need 1000 lines in that function.

Along the lines of ProducingCodeAsExcretingProduct, I'd like to ask what was the LargestSingleCodeModule that any of you ever came across in production code.

Thank you. I'll take my answer off the air.

I've been trying to find my own definition of SoftwareEngineering, and after months of frustration, I think I've finally gotten it narrowed down:

No wonder it was so hard to pin down. . .


SoftwareEngineering is the attempt to apply discipline and regularity to the process of developing software. Whether it succeeds or not is another matter.

See also CargoCultSoftwareEngineering, RupConsideredHarmful, DisciplineEnvy

View edit of July 7, 2009 or FindPage with title or text search