You start off by having a Professional Liability insurance policy, your company will generally pay for it unless you are a consultant/contractor in which case you bring your own policy. Depending on size of operation, your employer may even indemnify you in the employment contract specifically for even negligence lol.
You then do your job correctly. The laws only go after you for liability if you were negligent, i.e. you skipped protocol and policies, you skipped best practices and couldn't justify it, etc. If you weren't negligent and just made an error, great, your insurance covers you. Insurance can also cover negligence too depending on policy, lol
https://www.nspe.org/resources/professional-liability/liabil...
Are we going to have international protocols and policies on the best language to use, how to do SQL queries and CSS? no
If all engineers are held personally liable for their code, when a business has faced a documented rejection, they’ll struggle to hire someone else to take on that risk.
They can always hire another engineer. They only accept it, some times, because they won't find a certified engineer that says "yes", and because they doing it themselves is a crime.
That equates to a huge amount of government intervention on the lives of everybody. And even then, fails way more often than expected.
Now, we are talking about a case where criminal justice failed to uphold the defendants rights to a fair trial. Most probably because of corruption. Do we really want to bring that huge amount of government intervention into this context?
You realize that you'd need someone at MS to take liability for Windows before you can sign off anything running on Windows?
Or someone at Google if you do a web app that only runs on Chrome, not to mention other browsers.
What OS renders the monitoring screens for air traffic control systems, or railways signalling? Those both have rigorous software engineering behind them — railway signalling is the original of engineered, safety-critical logic systems, starting with mechanical interlocks in 1843. (The signalman physically couldn't move certain levers into bad configurations.)
Lets stop glueing "engineering" to any job title where someone knows how to write a bunch of code lines.
[NB I am frequently reminded of this point by my wife who is a solicitor].
Another important part is that one might be liable when signing contracts as the responsible Engineer in a project delivery.
This title inflation of calling web programmers "engineers" is absurd.
Every other discipline has education requirements, codified standards for how to do things etc.
As for the rest, anything that brings computing to level of the rest of other professionals, has my signature.
A Software Engineering professor of mine used to say, many applications are akin to buying shoes that randomly explode when tying shoelaces, whereas a minor defect on real shoes gets a full refund.
The irony is there are actual disciplines in software that are worthy of being called "engineering"--how the hell does an engine ECU work with the level of precision that it does? ABS systems? Hell, how about most electronic control systems on an airplane?
These are some of the most impressive feats in software development, and I've heard near 0 about any of them.
Yet the "industry" is hyper-focused on mashing together "containerized" monstrosities to put strings in databases, or to find a new way to add a chatbot to something that doesn't need it.
In another area it might be the complete insufficiency of formal botany credentials among Dutch companies growing and trading tulips.
I don't know you but i bet that if you and me were locked up in a room together for a month we wouldn't be able to 100% agree on "codified standards for how to do things" :)
Industry isn't mature enough for that and it's perhaps doubtful that it will ever be. See the halting problem.
I don’t think it’s necessary to agree completely. You could start by codifying a minimal set of things that the majority of people agree on (user data sanitisation, authentication handling etc) and then build on it over time.
The standards could also help codify more meta things, like vulnerability policies, reporting and outages. This would be helpful to form a dataset which you can use to properly codify best practices later.
The main problem is that this increases the bar for doing software development, but you can get around this by distinguishing serious software industries from others (software revenue over a certain size, industries like fintech, user data handling etc)
Just because there are unanswered questions that doesn't mean we can't have bare minimum codified standards.
Furthermore, standards aren't invalidated just because practitioners disagree with them. Plenty of <insert engineer type>s disagree with the standards body of their respective field, they still follow the standards out of fear of prosecution or simply as a path of least resistance and when those standards are found to be defective, they (generally) evolve.
So, functional, imperative or OOP? :)
> Just because there are unanswered questions
The halting problem is undecidable. Not undecided. I.e. it has been solved and the answer is "you can't".
For comparison, electrical engineers started introducing things like national standards for plugs by 1915.
In a situation like this an insurer is strongly motivated to prove that the company is not at fault, because it doesn't want to pay the bond. The company is also strongly motivated, even though insured, to prove that the company is not at fault, because it doesn't want to have its future insurance rates affected or be sued by the insurer for breaches of terms.
Either way, it doesn't help the people affected. Not unless they have personal insurance against workplace computer system errors, in which case their insurance provider is also not motivated to pay out, or to battle a corporation as large as Fujitsu unless there's chance of a class-action suit.