No matter what they call us,
Software engineers, programmers, anal/progs (may favourite!), we're still going to be making the same mistakes 40 years hence *sighs*
Forty years ago today, at the height of the Cold War, around 50 computing experts gathered in the southern German market town of Garmisch to change history. With the Soviet Union and Warsaw Pact glowering at the west, the participants - drawn both from academia and industry - met under the auspices of the North Atlantic Treaty …
An engineer will design something and factor in the tolerances so that when it is manufactured it behaves exactly as required. A software developer will write some code in the hope that it does what they want and then submit it to the QA team to see what it actually does.
If software developers were let lose on engineering projects then bridges would fall down because jelly was used for the foundations and it would "just be a little bug that will be corrected in the next version".
Hmm, so my BEng in Software Engineering is a fabrication of an over active imagination?
I think not bullwinkle.
As an aside, although I do not work in software anymore, when I did so, all of the team had the job title "Software Engineer".
And I agree with AC above, there is a HUGE difference between a software developer and a software engineer.
Cuddles
and just so we don't think engineering is some sort of panacea might I direct your attention to engineering efforts such as the Titanic, the Eiffel Tower, the Hindenburg, and the Space Shuttle Challenger (as for jelly, well the Millennium Bridge may have well have used it).
Engineering doesn't mean correct and sturdy, but I think some would like it to mean that.
Engineering is really reserved for creating things in the physical realm that serve a purpose, beyond that of aesthetics.
Software is more of an art, it involves some engineering, but on the whole the number of permutations and ways to do things is vastly greater than that of mundane engineering.
Logic and aesthetics are the two main components, functionality was solved a long time ago, and there is always more evolving, but on the whole you are building systems to simulate other systems and getting users to engage at the right level.
It is software design, analysis, coding, testing, and deployment all under the umbrella of development. No need to use the term engineering anywhere.
Yup, we still don't know squat about software engineering. Sure, the artifacts we create are maybe 10,000 times bigger than the ones we created in 1969, and we can do it in a fraction of the man-years, but if it isn't perfect, then we've learned nothing. Honestly, if you saw the way people had to work in 1969, you'd run away screaming.
This complaint would be typical of anyone who is a professor of software engineering, or someone who sold development tools, or consulted on methods, or in any made a living on the fear that we aren't as good as we might be.
It is an old rug-maker's trick to deliberately insert an error into each rug, because, "Only Allah makes perfect things." I guess software developers don't yet have to do that. We can do better, but to deny that we have learned much is to dismiss reality.
Yes, we (collective, body-of-knowledge "we") do know how to engineer software.
No, we don't do it.
As Anonymous Coward stated, "software engineering" consists of throwing something on the wall and hoping that the QA guys can't pry it off. THAT PRACTICE IS A LOAD OF BOLLOCKS!!!
There are plenty of horror stories about software that killed people. Now we are seeing how software (and greed) has caused a collapse of the financial institutions of the world. "Our financial models show that these are sound loans." Economy, meet toilet.
When I worked at Microsoft I was absolutely shocked to see that known good practices from 20 YEARS ago were not performed. Hello, what is the disconnect here? Isn't the whole point of this smegging exercise supposed to be writing good software? The elements of software engineering aren't difficult. It isn't hard to learn real techniques, like Jackson Structured Programming. But try to get some jerk to pen something out in the slightest before writing it? Oh, the horrors of that task! Everything is based on chucking it together like a weekend assignment.
What do we have for our current popular languages? C++, which is a bad preprocessor hack, and Java and C#, which are kind of cribbed from C++. And what do we get from all of this? Garbage. The programmer is wrapped in a straitjacket and placed in a padded room, to keep all those nasty sharp edges, like details and performance, safely tucked away out of reach. And this is supposed to be progress.
"Hmm, so my BEng in Software Engineering is a fabrication of an over active imagination?"
Bad phrasing by El Reg there. The degree is a formal qualification, like a "proper" engineering degree, but there's nothing comparable to the *professional* qualification of being a chartered engineer. That's the bit where you can sign off on a project and (because your expertise is formally recognised by a professional body) insurance companies will agree to indemnify everybody against the cost of unforseen failures.
Standard software licences, to this day, begin by saying we accept no liability for the behaviour of this product, mainly because there's no insurance company on the planet that would agree to take on the risk.
"Proper" engineers will continue to look down their noses at us softies until such time as we can put someone else's money where our mouth is.
Software CAN be engineered, but it takes years to produce something completely bomb-proof and convincingly fault tolerant.
Unfortunately, today most software projects are badly spec'd from the outset with the RAD model of development in mind,
Software engineering exists. It is found in the interface between hardware and software (systems control, FBW, Air-Traffic control systems) though today Air Traffic systems are as every bit as shite as every other bit of software not intended for use in critical application.
This is because they made the mistake years ago of believing software engineering can be taught to anyone, This is a fallacy. It takes a certain type of mindset to be a good programmer and to write good software. That *correct* mindset is very rare and *very* few people have an inherent aptitude for it — most so-called “developers” should never be allowed to write any code at all.
Those that can, do. Those that can't have computer science degrees, in my long experience. They also believe that one language is inherently better than another without being able to justify themselves.
is conducted today using (inherently) faulty software.
CAD, CAM, rafts of custom-written CivEng software galore. Calculations in engineering are analysed using computer algorithms and so how is material engineering any more inherently safe than software engineering?
Pray, do enlighten me. If it is simply a question of peer review (as has been suggested earlier) then that also happens in the world of so-called software engineering,
Faultless (in practical terms) software does in fact exist, and most of it is never seen and doesn't even have an interface, per se. However, it works silently and faultlessly in the background flying planes, controlling aircraft safely to their destinations, overseeing nuclear and chemical processing facilities the world over. When accidents do happen its almost always down to human error where someone over-rides the system and causes an almighty fuck-up.
That's engineering. If you don't believe it is, why are you flying still or not being upset that all the nuclear reactors and chemical refineries in this country are controlled by software?
Yes, it sometimes goes wrong but so do bridges and aircraft design. After all, nothing's perfect.
Bring back proper systems analysts, I say.
So, why are the IET letting me - and many others - work towards CEng chartership, then? And how have they chartered software engineers in the past?
*Proper* software engineers are capable of managing risk, taking responsibility, and signing off safety-critical systems. This has nothing to do with cobbling bits of code together until it works, and it's most certainly not Agile, but it's every bit a real engineering discipline.
Sadly SE is rare because it's difficult, it's expensive, there are no statutory barriers to entry, and the market simply doesn't care - if it can even tell the difference!
"What do we have for our current popular languages? C++, which is a bad preprocessor hack, and Java and C#, which are kind of cribbed from C++. And what do we get from all of this? Garbage."
Which is of course why Java and C# both incorporate GARBAGE COLLECTORS.
Oh it kills me, it really does. (wipes tear from eye holding sides in blissful agony)