Why We Need a Theory for Software Engineering
ddj.com
ddj.com
"At its core the theory relies on practices. Now there are good and bad practice concepts. The idea of practices has been around for fifty years, but these practices are loosely defined. We need a practice concept that is more precise."
That doesn't seem to really drive home the need for a theory of software engineering to me.
What we need is a better definition of what the craft of software requires (the practice of writing software) - not a theory of software engineering. Then we need to think about how we encapsulate those basics of software craftmanship in a way that we can communicate to each other and apprentice newbies into. There's still no silver bullet for managing software development.
I recognize that in some ways, the author is pointing out that we tend to drop everything and reinvent the wheel every few years. But that's how the consultants make their money, right? Isn't incumbent on us (practitioners) to call BS when we see it? If the point of having a theory of software engineering is to stop the rush from one process to another, that's not going to stop the snake-oil salesmen. They'll just move on and talk about how the "theory" doesn't measure how much better the new process is because it is such a radical new process.
I'm also curious about the number of successful software deliverables that are due to the software engineering process followed by the team that created the software. Anybody here feel like the most successful project you worked on was due to the specific software engineering process that was used?
I TA what I believe to be one of the better undergrad Software Engineering courses around, "Fundamentals of Software Engineering." As the undergrad TA (the other is a Ph.D. student with real-life industry experience), I can honestly say that it's a nightmare.
Software Engineering today basically amounts to anecdotes and marketing. I mean, if you look closely enough, there are some interesting theoretical nuggets: static/dynamic analysis, theories of testing, etc. But the reality is, a semester of the fundamentals of software engineering leaves you only slightly more able to choose a good development path than the next guy. In the end, choosing a quality process is a task left up to the reader, which is why we have so many pair and agile programmers (and so many more Duct Tape Programmers), IMHO. Developers either go for what's best marketed or for what's easiest.
At the end of the day, something unifying would be a huge benefit to everyone, but we're a long way off from that. Right now, the question is: Is that even possible?
Hang those impediments on any discipline, and you transform it from a technical field to mumbo-jumbo. Basically, the problem has to do with flows of information.
Free/Open Source helps, as it facilitates the flow of information. However, it's not a complete solution.
I don't get it - software engineering is not physics. There doesn't need to be a Grand Unifying Theory. Software engineering is like skinning a cat - there's more than one way to do it.
So everyone has a theory, but there is little data to support the theories and getting that data is very difficult.
On the other hand, just as different branches of engineering (chemical, mechanical, civil etc - and their sub-branches) need different methodologies because the issues are different, a disruptive innovation in effect often creates a new branch of engineering, that changes the issues, so that, a different methodology really is appropriate. My thesis would be more compelling if I could think of some examples.
But here's an observation: if methodology really mattered, wouldn't the firms that followed one of them triumph over everyone else? But that doesn't seem to happen. It's not because methodology is unimportant, but that it is unimportant relative to marketing and technical innovation. In "real" engineering, most of that has settled down as they mature, and methodology rises in relative importance. [Just my thoughts]
EDIT I think the above count as some of the impediments mentioned by stcredzero.