Is the software engineering industry professional? As software engineering professionals we should have skill and good judgement. Does the software engineering industry have that?
Bob gave the famous example [PDF] of Knight Capital and Volkswagen, but there's many more (Therac-25, the F35 and The Chaos Report [PDF]). You could argue that the software industry is in meltdown and developer incompetence / poor judgement has cost the industry billions. I think you'd have a pretty convincing case! Or would you? There was no mention the other side - the tremendous advantages our haphazard industry has made to almost the whole planet (the Internet, mobile phones, communication).
Bob painted the nightmare scenario - regulation. Imagine some time from now, some bug somewhere (a missing ; even) results in a number of deaths. The nuclear reactor blows, the self-driving cars go made on a leap year and start running people over, the planes turn upside down when crossing the equator (etc). The natural result of this is the Government blames us (software developers) and starts to put some regulations in place. Again, this feels believable-ish.
But why hasn't it happened yet? Well, safety-critical systems are pretty regulated. See this lump [PDF trigger warning] from the FAA about how they do things. I'm not going to argue it's perfect, but it's demonstrably good enough to stop null pointers making things fall out the sky regularly.
So what should we do to prevent this threat of regulation? Well, we should:
- Not ship shit!
- Give reasonable estimates!
- QA should find no bugs
- Software should get better, not worse
- Invest 20 hours per week in personal development
Are these the right things to make the industry professional? Maybe. Maybe as an industry we should look at other areas:
- Should we write code in unsafe languages like C for safety critical systems?
- Should we put JavaScript on a plane?
- Is that shared mutable state acceptable in my car?
- Languages with null are a billion dollar mistake - outlaw them!
- Should we use test-driven development as justification for using weak languages?
There's a huge space for software engineers to explore about building professional quality software. We're not explored much yet. I'm certainly no historian, but I'd imagine professions like Medicine, Law and Engineering took more than 60 or so years to establish what good looked like.
The deliciously chaotic world of software engineering is going to continue for a while yet!