Is all of software engineering dead?

The subject matter of «software engineering» has been of enormous interest to me since youth. As usual for novel things, in the beginning it represented the most advanced form of professional thinking and behavior in software. The reason for that belief was not that I knew enough of it, but mainly because my lack of options and my order of ignorance.

Since that time, Tom DeMarco has been a good source of food for thoughts and reflections. One reason for that are his thinking patterns as a reflective practitioner. For example, his willingness to change and adapt based on confirmed information —which is a notable trait shared with the most basic position of philosophical thinking.

We, as industry, have learned good lessons from the idea of «software engineering», but unfortunately many lessons have been misunderstood. For example, the plan-driven vs. planning-driven approaches for project lifecycle that derived from different levels of listening we made of the original thinkers. Let’s improve, then, our level of listening.

The article Software Engineering: An Idea Whose Time Has Come and Gone? by Tom DeMarco represents another opportunity for doing just that: pay attention in more focused way.

We, as industry, were wrong; and that is completely normal in human life in general, and especially in software.

So, inspired by Friedrich Nietzsche, I should say to myself:

Software engineering is dead —at least the misinterpreted parts—, and we killed it.

There is good evidential support in pointing out to us as a root cause for the claimed rotten state of the «software engineering» notion. That is precisely one of my points: we killed «software engineering».

We accepted the analogy with civil engineering, we believed that tons of static documents and tons of static diagrams matched the same purpose of blueprints in other design disciplines, like architecture. We acknowledged that estimation, planning, analysis, design and testing are discrete stages in the development process, and even worst, we accepted that they can be executed in that particular linear order no matter the type of problem to solve in any given project, etc.