Hacker News new | ask | show | jobs
by TwistedWeasel 2085 days ago
plumbers, electricians, civil engineers, architects, structural engineers, etc. All these occupations have licensing requirements. Why is software different?
6 comments

Chances of people dying from my web app is super slim. Chances of people dying because I bladly wired their house is and it caught fire is a lot higher.

Chances of me dying while developing my web app is super slim. Chances of someone frying themselves with wiring something up when they don't know how is a lot higher.

chances of being miserable in an administrative job^W^Wordinary life because some software product you have to use is making your job worse rather than better are close to 100%.

If you only count deaths, yeah, bad programming has negligible impact maybe. If you extend it to general suffering, it's quite a drag on everyone actually. And incidentally, good programming can make a world of a difference, too.

So wanting to select for good programming, with even just having a good minimal standard, is a reasonable goal.

The problem is that we're not even sure what makes good programmers and how to spot them, as evidenced by the continuous stream of "I think..." and "Well actually" stories & comments here on HN.

Is bad programming a net negative? I'm not convinced (and it's not just because I'm a bad programmer, I swear!), I think if you only had good programming, you'd have very little programming and that would be concentrated of the areas that the powers that be deem most important: military, finance, police, factories.

Having bad programming gets you a lot of programming. I'd rather have a million people who can each build a house a day that will stand reasonably reliable for ten years than having a thousand people that can each build a house a day that will stand for a hundred years.

> Having bad programming gets you a lot of programming

This is true. I'll add that machine learning is arguably the computer doing a lot of bad programming.

I will leave this right here for your education - https://www.bugsnag.com/blog/bug-day-ariane-5-disaster
GP doesn't say it's never happened, just that the typical programmer isn't going to kill someone with a buggy password complexity validator. By and large, the standard programmer does not hold life and death in their hands when navigating callback hell.
Tell that to citizens who can't register for unemployment or fill their taxes because the callback hell doesn't work as it should.
Again, the typical programmer doesn't kill someone when they write a bug. Judging from the backlogs of each company I've worked at, not a single PaaS, SaaS, BaaS, CaaS, DaaS, FaaS, GaaS, HaaS, JaaS, KaaS, LaaS, MaaS, NaaS, QaaS, RaaS, TaaS, VaaS, WaaS, XaaS, YaaS, ZaaS, or other would have a living customer base if one bug == one death.

There are edge cases and there are certainly plenty of times when software bugs can kill people. However, to say that the typical programmer holds life and death in their hands with every keystroke is an extreme over-exaggeration and I think you know that.

To GP's point, nobody died in that disaster. A much better example would have been the Therac-25: https://en.wikipedia.org/wiki/Therac-25
These two examples are interesting. They're both cases where what was being created was a system where software was an important component, as opposed to the software written by the vast majority of us where the hardware components of the system are always the same (monitor, keyboard, etc.) This is the same distinction in Diamond v Diehr for when software might be included in a patent. I always thought the US Supreme Court made a good decision there. Unfortunately they were later overruled by lower courts. (For legal experts out there about to correct me and say that lower courts can't overrule higher courts, I wish you were right.)
sorry, it doesn't matter
web apps are a small fraction of the software development world. Software Engineers are responsible for code that runs in hospitals, aircraft, power switching stations, and many many other safety critical systems. In many cases code that was never written for safety critical work is deployed in those environments. What OS and software runs the elevator controls in a hospital or military base? We never know the real impact of our work.
That's really not true. At NASA for example there are standards that need to be followed when designing a system, implementing the code for it, reviewing and testing it, and releasing it. [1]

Yes there will always be bugs but no practice or method is invulnerable to this.

Software in general, in these high risk environments, has been extraordinarily successful in terms of reliability and safety.

[1] https://sma.nasa.gov/sma-disciplines/software-assurance/2019...

At NASA, sure. You can't say that with any certainty for all the other systems in the world where software has a huge impact on daily life and human wellbeing. We can't know for sure because there is no regulation or independent monitoring.
Medical tech has similar standards as does flight control and many other mission critical code bases. Static analysis requirements, limits on certain trusted compilers, libs, etc.

I think you may need more time in the field and observing the reality here. There are unbelievably high standards and practices in many places. Maybe CRUD codebases for a consumer website has critical failures but that doesn’t really matter. People will stop using their site if it’s too large a problem.

Software is different than many technical and engineering fields. Codebases change over time as new requirements come in to extend functionality. Things can be patched. When standard engineering practices are required they are implemented. Yes, mistakes happen too but bridges fall down on occasion.

The whole point of my last comment was that the impact of bad software cannot be fully understood if we don't have ways to monitor and measure it. You are correct that many industries have high standards and many other industries have no need for any standards as market forces will decide, but there's likely a huge grey area in between that we don't know much about.
Unless, for example, you're writing software for civil engineers ...
> plumbers, electricians, civil engineers, architects, structural engineers, etc. All these occupations have licensing requirements.

These are almost exclusively local regulations, not US national requirements, and certainly not international.

So even if there were licensing, whose jurisdiction applies? What if you have distributed software development teams?

This is a solved problem per our tax laws. Just because you write code that runs on a server in another state, doesn't mean you pay the taxes in that state.
Different states have dramatically different taxes. Some states have no income taxes.

So in one sense, it's a "solved problem", with the solution being that licensing requirements would be dramatically different based on locality, but in the sense that people want — a uniform standard for hiring software developers — it's not solved at all.

> but in the sense that people want — a uniform standard for hiring software developers — it's not solved at all.

Exact same thing can be said about the hiring process in general. Taxes and employment legal contracts vary from state to state. I am sure employers would love a single contract, no matter where they hire an individual, but that is not currently the case.

It's complicated so we should just not care?
I think "Why is software different?" is the wrong question. Why is software the same? Most professions don't need professional licensing, and it's not clear that the economy would be served well by adding licensing requirements.
if you look at it economically, maybe. It's a complex problem. The economy doesn't benefit from contractor licensing either, but the consistency reliability and quality of our infrastructure does.
The reliability of licensed contractors is... questionable. ;-) In some cases it seems pretty silly. For example, beauticians need to be licensed, even though they make very low average salaries, so it's not particularly helpful to them, and it doesn't stop some of them from giving bad haircuts.

The mention of contractors brings up an important point though. Many people support software developer licensing because they believe (mistakenly IMO) that it would make hiring easier, but not all software development is done by employees. In a licensed profession, you cannot legally practice the trade, not even as an entrepreneur, unless you have a license. Are we to apply this same standard to software development? Nobody can write software without a license from the state? Is that even possible? What about the people writing consumer software alone at home? Can nobody even publish a web site with HTML and JavaScript without a license? A web site is essentially all you need to create a billion dollar business, so either licensing prevents that from happening, or licensing won't really be a uniform standard for the software industry.

Mark Zuckerberg was a college dropout. Thus, he wouldn't have a license. No Facebook. Maybe you're ok with that, if you hate Facebook, but nobody really thinks the problem with Facebook is that Zuck was an incompetent programmer. In any case, software development licensing would put up a major barrier to entrepreneurship in the tech industry.

All these roles have certain code they have to work to. A plumber can't just go into a home and install something outside of code.

Software is generally rather ephemeral and without a code to write or build to. We have "best practices".

Yes, some software is built under engineering assumptions - airplane software, etc. NASA has a standard they write code to and software engineers are expected to work within these confines. Part of the code requires reviews of written software, etc. [1]

[1] https://sma.nasa.gov/sma-disciplines/software-assurance/2019...

>A plumber can't just go into a home and install something outside of code.

That is....not true at all. A plumber/carpenter/electrician works to code under threat of losing their license. Additionally your building could be exempt from code for numerous reasons (grandfathered/historical, outside of city limits and no county building codes/etc.) Developers and Software Engineers don't have this threat.

Right, if they continue to do things short of code (when required, etc) they'd lose their license. They have to work within the confines of the code, where applicable.

Software engineers will certainly lose their job if they don't ship code to standards set by the company they work for. Someone writing code for an airplane is going to have a different type of standard than someone writing code for video game, however.

Why would it make sense for a government agency to set a code for software? It literally makes no sense as different problems have different requirements.

Left up to private enterprise they will set their standards to the lowest they can get away with to maximize profits and reduce the time to market.
So the makers of Candy Krush should ban heap allocation and dynamic memory allocation and perform rigid static analysis on all the code they ship?
In an ideal world, yes, at least to a certain extent. How many times has the security of entire phones been compromised because of an app?

Obviously software written for use in medical devices and banking systems should be held to a higher standard, but the same can be said for other licensed professions. A plumber installing a fire suppression system in a 50 story high-rise would similarly have their work held to a higher standard than someone setting up a rain barrel for their garden.

Personally I find the quality and vetting process of software designed to be installed on the same device that most people use to manage their online banking and carry on their most intimate conversations (often using said software) to be so low as to be considered criminally negligent by the standards of any other respectably industry.

> plumbers, electricians, civil engineers, architects, structural engineers, etc. All these occupations have licensing requirements. Why is software different?

There are plenty of journeyman carpenters that do not have a license, this is not a problem as long as they work for a company that is licensed.

You're making an argument in favor of software engineering licensing, just not that every individual involved needs to be licensed.
Because their fields are mature. Practitioner fundamentals haven't changed in decades, often not even in centuries.
How do you define mature? Is it about stability? There are newer and more modern methods of construction and engineering and the field is always evolving. Maturity in those fields is about consistency and agreements of best practices enforced by standards and regulations. Software is not mature because it's not regulated. If you want software engineering to mature and stabilize, it needs more regulation.
Yes, construction etc is evolving, but it's doing that as such a slow pace compared to software engineering.
Are you sure? Construction materials are evolving and changing every few years (engineered lumber, modern environmentally friendly methods, etc) whilst we still use base operating systems designed in the 60's for most of our services.
Take a look at a house built [100, 50, 25] years ago. Compare it to a house built today.

Then do the same exercise with some piece of software.

yep, both are significantly different in many way, houses built 50 years ago have a lot of differences to modern houses. Software from 50 years ago, is also significantly different but the fundamentals of both are the same, foundations, walls, roof trusses, siding, filesystems, operating systems, processes, threads, data structures etc. We may use Go instead of C and we may use engineered lumber instead of Douglas Fir for door headers.
And scope-limited in comparison.
exactly - it is time for the computer science and software engineering professions to have trade orgs and unions so those who are qualified can practice the profession and get paid and respected like other professions that require years of college education.