I came across this article, Software Engineering, Not Computer Science while researching Software Industrialization, the subject matter of this blog site. Steve McConnell has written many good books, most notably, Code Complete.
Steve asks the interesting question, "should professional software development be engineering?"
Good question and I am sure the debate will continue for years. Even though I am a firm believer of engineering practices, I believe that our industry is still too young to have developed any real solid engineering practices. Even today, I feel like I still am using a hammer and chisel to develop software the tools suck and it is going to take forever.
So what about all of the modern methodologies and practices? Well, my training in software engineering still defies what I do in my day job. It is more akin to this approach:
"Absolutely the only way I know to succeed with an innovative product is to throw something together quickly, push it out the door, persuade some lunatic early-adopters to start using it, and then rapidly evolve it on a quick turnaround cycle based on market acceptance and driven by a wish list from actual users. Every successful product I have been involved with, either as a developer or as a user, seems to have followed this path." From John Walker, inventor of AutoCAD.
John calls this, old time engineering philosophy. However, I still do it everyday, even though I am thoroughly trained in software engineering I end up always throwing stuff together. Why is that?