Doug Slater 10月02日
软件工程师应获执照以提升质量和安全
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了为何应效仿传统工程学科,对软件工程师实施执照制度。作者指出,AI的普及降低了软件开发的门槛,导致质量问题频发。借鉴历史上因设计失误导致重大事故(如圣弗朗西斯大坝坍塌)后,工程学科引入了执照制度,这有效提升了公共安全和产品质量。文章论述了软件的潜在危害,并强调了执照制度能确保从业者具备基本能力、遵守职业道德,并赋予他们抵制不合理要求的权力。尽管存在成本增加等疑虑,但长远来看,执照制度有助于降低因质量问题带来的高昂代价,保护公众利益,并提升软件工程行业的专业性和信誉。

⚖️ 软件工程需要执照制度以保障公共安全和质量。如同桥梁和药品设计受严格监管,软件的广泛应用及其潜在的广泛影响,使得缺乏监管的软件开发成为风险。作者以圣弗朗西斯大坝坍塌为例,说明了工程失误的严重后果,并指出执照制度是确保从业者具备必要技能和责任感的重要机制。

🚀 AI加速了软件质量问题的暴露,但执照制度能提供制衡。AI降低了软件开发的门槛,使得不具备专业知识和道德约束的个人也能开发软件,从而加剧了质量隐患。文章认为,执照制度能够确立一个最低质量标准,并为专业工程师提供抵制降低质量要求的杠杆,从而提升整个行业的“纳什均衡”水平。

🛡️ 执照制度有助于保护从业者、客户和公众。对于从业者而言,执照提供了在面对不合理要求时拒绝的法律依据,避免了因违反规定或危害公共安全而被解雇的风险。对于客户而言,执照意味着更高的质量保证和潜在的追索权。对于公众而言,这能有效防止因软件缺陷造成的生命财产损失,例如近期出现的重大系统性故障。

💡 执照制度并非限制创新,而是引导健康发展。作者强调,执照制度主要针对商业软件,而非个人实验或开源项目。它旨在通过确保专业工程师对最终产品负责,来管理高风险和大规模应用软件的质量。这种监管方式类似于其他领域,如农业,允许个人种植自用,但商业销售则需遵守规范。

Society restricts who can design bridges or prescribe medicine, but it lets anyone market their software. AI accelerates the problem. It's in everyone's interest that states require licensure of software engineers.

AI has dramatically broadened who can create software.

Why I care

I almost became an engineer. From 2008, I spent three years pursuing a degree in computer engineering. I sat in engineering fundamentals and ethics courses with people who became engineers: mechanical, electrical, aerospace, nuclear, and others. We all planned to graduate, pass the FE exam, work a while, pass the PE exam, and become licensed professional engineers.

Then I switched to computer science. At the time, the thought of government adding red tape to my career path angered me. You don't even need a degree to become a software engineer. You just have to convince someone to hire you into that role.

Fast forward to 2025, and the barrier to entry is even lower. AI lets anyone ship software, and it's causing an avalanche of quality issues1. The classic engineering disciplines have spent centuries learning hard lessons about cost and quality. My profession could learn a thing or two from them.

Why do we have engineering licensure?

How the US got started

On March 12, 1928, the St. Francis dam near Los Angeles had stood for just under two years when it collapsed with almost no warning. Flood water surged down the San Francisquito Canyon, drowning over 400 people and causing extensive damage to man-made structures and the environment2.

The St. Francis Dam before its collapse

The St. Francis Dam after its collapse.
Just a small section of the wall remained, nicknamed "the tombstone".

The immediate cause was the material on which the dam rested essentially dissolved and eroded away when it became wet.The proximal cause was the dam's designer was not qualified to design dams, and being self-taught, made critical errors in judgement.The root cause was a public policy which permitted the design and construction of dams by unqualified people and without independent review.

Just over a year after the collapse, California enacted its Civil Engineers Act, making it the second US state to regulate licensure of engineers. By 1947, all states had created similar licensure laws for Civil, Mechanical, and Electrical engineers.

Licensure lifts quality

Market forces exert a downward pressure on cost and therefore on the quality of products and services. Licensure of professionals, combined with the standards they must follow, protects public welfare by exerting a counteracting upward force on quality.

Licensure sets a minimum bar for quality and upfront cost.
Read more about cost in Objections.

For example, the International Building Code specifies a minimum load a roof must be able to hold up. Without this requirement, structural engineers might cave when pressured to find ways to make a building cheaper.

Another way to look at it is, competing firms find themselves in a prisoner's dilemma where they all could cooperate and offer high quality goods. If any one of them defects by offering a lower price, then to maintain market share, all firms must follow suit. A Nash equilibrium emerges where nobody offers quality goods. Markets do segment; it's how Jones soda can exist in the same world as Coca Cola and Pepsi, but they all follow FDA standards for water quality.

Licensure lifts the Nash equilibrium to a higher level of quality, since no participant has the choice to cut certain costs.

Why license software engineers?

Software can Harm People

The collapse of a dam, bridge, or building is tragic when it costs lives. Bad medicine is also insidious: it promises a cure but delivers none or actively harms the patient.

Software is less tangible, but it can also cause widespread harm. For example:

Most of your line-of-business software isn't going to kill people, but software supply chains are complex: a library maintained by some guy in Nebraska5 can show up in surprisingly mission-critical situations.

Society wants it

Professional licensure ensures both adequate competence and a commitment to public good.

Physicians take countless exams and traditionally recite some derivative of the Hippocratic oath, promising to do no harm with their practice of medicine. Engineers take the FE exam and the PE exam. Both professions follow their respective code of ethics.

If software engineering had had any serious commitment to the ACM's 1999 code of ethics6, I think the world would look different today. The profession has exerted herculean efforts enabling these societal harms:

Nonpractitioners want it

By practitioners, I mean people who were already writing software for a living before LLMs or who could continue to do so if all LLMs were turned off.

AI lets anyone write software, even if they don't want to or are not qualified to.

Mr. Big Boss can now ask Suzy Secretary to write a bossware app that tracks remote employees' app use and keystrokes. As of 2025, Suzy can no longer say "I don't know how to do that" because with Claude Code and a 30 minute YouTube tutorial, she can. She has no code of ethics by which to say, "I won't do that". She also doesn't know that the AI-generated spyware transmits company data over the web in plaintext. Suzy shouldn't do this job, but she has no power to decline.

Mr. Big Boss could never ask Suzy to write him a pharmacy prescription. Why can he do that for software?

Practitioners want it

In the US, the titles "Professional/Licensed/Registered Engineer" are legally protected7. Without a license, it's unlawful to market oneself using them.

In the U.S., most employment is at-will, meaning you can leave or be fired at any time and for any reason, but many states and federal laws create exceptions that can make a termination unlawful* when an engineer is fired for refusing to break the law or for protecting public health and safety. Many statutes are derived from the NSPE Code of Ethics.

I personally witnessed a professional engineer successfully sue our former employer which fired whim when he wouldn't sign off on a medical device he didn't think was ready to treat patients.

* I am not a lawyer.

Customers want it

Licensure protects consumers, too. The threat of license revocation encourages responsible conduct.

If you want to build a house, your architect has to convince a licensed structural engineer to sign off on the mechanical soundness of the structure. If the house later collapses, you have legal recourse against the engineer.

Objections

Licensure doesn't make software better

It does improve outcomes for the existing professions, and in three ways:

    It ensures a minimum level of competence.It holds professionals accountable to a code of ethics.It provides leverage for professionals to push back on forces that compromise quality.

In a world where I hold a license to practice software engineering, I hold the keys to shipping legally. I have leverage when my project manager pushes back against unit tests and tech debt. They don't hold a license, so they can't ship without me.

Licensure will get abused by political actors

On the contrary, licensure would give our profession a backbone and a voice. There's no real unifying body for software engineers. For the vast majority of them, IEEE and ACM are irrelevant.

The AMA and NSPE respectively serve that role for physicians and engineers. Their age is measured in centuries, and they serve as nonpartisan beacons of ethics and professionalism.

Software will get more expensive.

The upfront cost will increase, but a long tail of costs stemming from quality issues will decrease.

What's cheaper: to build a dam right or let it collapse and kill 400 people?

What's cheaper: Adding adequate driver awareness detection to Teslas or a fatal accident rate that's twice the industry average?8

What costs more: Adding automated tests now or years of tech debt?

How can engineers without a license find work?

The same as unlicensed civil engineers: behind the name of a licensed PE (professional engineer) who signs off on their work.

Can Suzy still write software?

I think Suzy should be allowed to write her own apps and even share them with friends. To sell them or use them commercially, she needs a PE to sign off.

Like agriculture, you can grow your own tomatoes in your backyard, and you can bring a bag of them to share at work, but if you start selling them, the FDA might come visit.

When it comes to private activity, there are edge cases and nuance. It often comes down to scale and risk.

Is software free speech?

In the US, yes9, but causing public harm or encroaching on others' rights is not protected. For example, DeCSS was ruled to be illegal10 even though it was free, noncommercial software.

Will some committee tell me how to do my job? (What language to use, where the curly braces go, etc.)

I think some recommendations are to be called for. These would provide some of that upward force on quality against the market's tendency to push it down.

There is already pressure e.g. from NIST to use safer, more secure languages, like Rust or C# instead of C or C++. To that I would add QA standards like automated testing. Just like a structure must undergo inspection, it simply should not be a business's choice to skip QA of software.

However, the software profession has a great deal of variety in the work it does and the tools it uses. It also changes very rapidly, since the field is extremely young compared to e.g. civil engineering. We shouldn't enforce things we aren't certain are beneficial.

What mechanisms will there be to obtain licensure?

Like the existing PE, there would be training and exams. There would be statements to sign, like a code of ethics, as well as continuing education.

Grandfathering and exemptions were common in the early days of the PE. These would be awarded based factors like education, length of career, and reputation.

Isn't this overkill? What about open-source projects?

What I'm proposing is only for commercial software, at the end of the supply chain. A professional software engineer signs off on all of the packages and dependencies used in a product. Nothing changes for the guy working for free in Nebraska.

One of the differences between e.g. structural and software engineering is with the former, there is a clear distinction between design and construction, i.e. between idea and tangible artifact. A structural engineer doesn't necessary even see the constructed building whose structural designs he approved. Software engineers handle both.

I considered conceding that we could require sign-off just for certain high-risk classes of software like automotive, medical, and aerospace or high-scale classes like social media, but that does not address the problem of everyday people selling or commercially deploying AI-generated software whose quality they aren't able to ensure.

What about versioning? Do I need a sign off for minor revisions and bugfixes?

Each public release of commercial software needs a sign off.

So my WordPress blog needs a sign off for each post?

That's publishing, not software, and requiring sign off on writing would encroach on free speech.

How would it be enforced?

Probably via courts. We should look to the existing engineering disciplines for guidance and precedent.

Conclusion

Consider supporting licensure of sofware engineering. My aim is to protect:

Next...

Subscribe to my email list below. I plan to write more.

References

    5 Vibe Coding Failures That Prove AI Can't Replace Developers YetTotal Failure of St. Francis Dam Renewed Calls for Oversight2024 CrowdStrike-related IT outagesList of Tesla Autopilot crashesXKCD: DependencyThe Software Engineering Code of Ethics and Professional PracticeRegulation and licensure in engineeringThe 23 Most Dangerous Cars On The RoadBernstein v. United StatesUniversal City Studios, Inc. v. Corley

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

软件工程 执照制度 AI 质量保障 公共安全 职业道德 Software Engineering Licensure AI Quality Assurance Public Safety Professional Ethics
相关文章