Tuesday, April 27, 2010

Why is Software Engineering So Hard?

I've often thought that calling ourselves 'Software Engineers' and describing what we do as 'Software Engineering' implies that building software should be more like other engineering disciplines.  For example, why is it so hard to accurately plan/predict/estimate what it takes to accomplish building some piece of software?  Why do so many projects fail?  Not that I am an expert on other engineering disciplines, but they don't seem to suffer the same problems we do, at least not too the same extent.  Why is that?

Martin Folwer, in a post completely unrelated to the above, quotes Alistair Cockburn:
...[who] explained that since people are the central element in software development, and people are inherently non-linear and unpredictable - such an effort is fundamentally doomed. Or at least it is until people become predictable agents that can be described with tractable mathematics.
Perhaps that is at least part of the answer to my above questions--people play a much bigger role in software engineering efforts.  Particularly in that it is often impossible to know upfront precisely what needs to be done and what the requirements are, leading to changes as the project moves along.  In short, much more unpredictability.

No comments: