Software Engineering: An idea whose time has come and gone?
www2.computer.org
www2.computer.org
I've studied as a computer scientist and as an engineer (electronics) and it's been my constant impression that those trained in the former completely misunderstand the latter. The engineering mindset is one of creative problem solving, using heuristics, tools and systems that have worked well in the past to guide you to your eventual goal, and ignoring them if they don't make sense or will misguide you. Instead many programmers seem to want to find the general algorithm for development. It doesn't exist and in a way its our philosophers stone, it's pursuit wastes time, effort and money. Instead we should be happy with the ever expanding toolkit of techniques the modern developer has at their beck and call whenever they're necessary. That's the real essence of Software Engineering, even if some parts of the industry have gotten lost over the past few decades.
Frankly, this article's title is blatant troll-bait and I really should know better.
He offers an excellent example of project characterization: "a $1m project with expected value of $1.1m vs $1m project with expected value of $50m".
"I have a finish date in mind, and I’m not even going to share it with you. When I come in one day and tell you the project will end in one week, you have to be ready to package up and deliver what you’ve got as the final product."
As a truism Software Engineering is the act of engineering software. Managing the project that is supposed to engineer that software isn't Software Engineering. As long as we are building software larger than a page or two long SE will be important.
As far as I'm concerned, software development is about as much a branch of engineering as actuarial work - yeah, we both tend to study a lot of math, but that's about it. Software "engineering" is a useful metaphor, but I don't want formal, PE style accreditation bodies to start thinking they have any sort of claim on software.
Your design may be perfect for the domain, but if the time you have is just 6 months, you have change your design to something 'buildable' in that time. I fall for this one when I got an interesting/challenging project.
Given enough time, the ability of a S.Engineer to find diferent solutions depending on money/time availability will positively affect her/his pay. (and the size of the assignments)
Software engineering is also agile and iterative. The nature of the project determines the level of metrics and engineering of maintenance you need.
That being said, standards have led us to where we are now with the web. MIME, HTTP, TCP/IP, HTML, etc. The IETF, W3C and other organizations are still engineering standards.
So now, when you start development (according to the old rules) you already have lots of work done. Does this mean the software engineering is dead? Hardly. It's just evolved to what always worked.
Fred Brooks wrote that book. Perhaps you meant Peopleware?
Expected utility fail. Dollars are fungible; it is exactly equally important to save money on both projects, but on the second project, we are much more concerned with percentage losses of expected output value as a function of cost-saving attempts.
I was really hoping for more insights to this in the second half, but they never came.
It's interesting to also look at this as an argument for more modern, rails-like dynamic frameworks that enable the transformative result rather than trying to control programmers.