Software is an employment rather than a profession. That distinction is important. Here is a definition of profession:
Traditional professions share essential characteristics. They provide a vital service to society, requiring expertise and skill developed through years of training, education, and experience. Professions establish standards of practice and certify that their members are qualified to serve the needs of society.
--US Army, ADP 6-22, Army Leadership and the Profession
Software does not have explicit standards of practice or a required body of certifications for its practitioners. Software, as an employment, is whatever an employer wants or is willing to accept at any given moment.
What do you find important about this distinction? To me it's a description of the normative relationship between practitioners and broader society but I don't really see the significance you do.
Hillel Wayne wrote a really excellent well researched article about software engineering compared to other forms of engineering a few years ago. It necessarily goes into a lot of this stuff but what emerges is that these definitions are regulatory and historical debris.
You don't need medical board or a bar to certify or constrain professional behavior and those organizations may not constrain as much as you assume anyway. The reasons we do have those institutions is as much a matter of historical accident as any modern need for it, and the reasons we don't have it for other high impact fields is pretty much an accident too.
And in a lot of the world software engineering does have professional certification and standards of practice. They still ship adware and racist loan denial algorithms too.
If they do, they're behind the curve. They don't matter anymore.
Systems design, architecture, database fundamentals, a bit of SRE. That matters. Not coding and syntax and toy problem solving with data structures and algorithms.
I think this is something where definitions and static roles might serve as a useful reference point. Is it really the case that the trillion-dollar frontier AI labs are behind the curve, and only some other group of people knows how to really leverage AI? It's not impossible - Nvidia employees aren't the best in the world at using their chips - but the hypothesis practically demands some analysis of who these clever curve-setters are and why we're hearing so much less about them than about Anthropic.
My own experience is that coding, syntax, and some kinds of toy problem solving are important skills to use AI coding tools most effectively. I routinely get PRs these days whose descriptions seem plausible but are clearly wrong from a glance at the code, and I've had times when I'm unable to communicate to someone why a PR is wrong because they're not able to form a sufficiently detailed mental model of what it's doing.
This makes sense, though. They have to be exceptionally confident in the performance of the product and work to continually improve its quality and efficiency. Many other companies can get by more just as consumers of it, but the makers of the product need some of the best coding skills available.
I just finished several months of interviewing and think that you must be projecting a bit. Every one of them included a coding interview with no AI use allowed.
If you have ever worked in almost any other industry your first question quickly answers itself. If you have never worked in an industry principally governed by ethical standards it would be challenging for me to describe it to you. I cannot give you what your perspective has never before imagined.
The IEEE has made some efforts to turn software engineering from an occupation into a profession — on par with civil engineering, architecture, law, medicine, military science, etc. A true profession requires a recognized body of knowledge, formal qualification criteria, and a code of ethics. So far most working software developers haven't shown much interest in this, nor is there much demand from employers or government authorities. I don't think we need to professionalize software engineering in the general case but it is an option for those who want it.
Be careful with military definitions. One near-universal aspect of a "profession" is that it be self-regulating. Lawyers have Bar Associations that dictate who can or cannot practice. Doctors have Medical Associations. So too accountants and engineers. These entities are granted monopolies but remain independent from government and set their own standards.
But by that definition, soldiering can never be a "profession" as a soldier is always regulated by the government they serve, and there is no professional association regulating mercenaries. But I would be very hesitant to suggest that the US Marines are not professional soldiers. They are. The definitions are messy.
> These entities are independent from government and set their own standards.
As they should. Industries should be self regulating. While these industries form their own standards of practice they do so with the blessing of government, typically under state government supervision/authorization in the US, and are held to account by government. A lawyer or doctor who violates their standards of practice could very likely be guilty of criminal law and find themselves in prison depending upon the violation even when no other criminal actions occurred.
Even bus drivers are held to higher standards of practice than software developers.
There are certainly things where you need to have an officially licensed engineer actually stamp the plans. That doesn't mean everything about the plans was done by someone who holds that stamp, just that they were reviewed and signed off by the person holding the license. Lots of people may work on those plans. They're still doing engineering work. And that's just for the kinds of things which actually require a licensed "engineer".
There's still tons of jobs which is often still called "engineering" which often don't involve anyone who has a stamp. Few electrical engineers, chemical engineers, mechanical engineers, or lots of others actually have any kind of engineering license. They still get degrees in things like "Bachelor of Science of Electrical Engineering" or "Master of Science in Mechanical Engineering". Their job roles usually have "engineer" in it. And yet it seems like the job people only really criticize as "you're not an engineer, engineers are licensed" is SWE.
In most (all?) US states, you need a license to be a _Professional_ Engineer. This is a legal distinction that carries weight _and_ legal liability. It doesn't mean that you cannot "engineer" without a license. There's legal distinctions on what work a licensed engineer can and cannot do, and what work must be done by or under the supervision of a licensed engineer. e.g. a junior's work has to be signed off by a supervising PE. To become a PE, a licensed Engineering Intern must have first passed a preliminary exam issued by the state and worked under a PE for a minimum amount of time with satisfactory performance (think apprenticeship).
It's the legal liability that SWEs don't want. e.g. You wouldn't be able to just slap "This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." on your software and walk away from it when lives are at stake. A so-called Profession Software Engineer would have to accept liability for their work product, and those of the juniors working under them.
I started down the road to becoming a Professional Engineer while I was in college as I studied Electrical Engineering and was more interested in hardware/power engineering. I took, and passed, the Engineering Intern Test in my state (which is the preliminary exam you take before you can start your journey to become a PE). Then life happened and job/career opportunities took me in a different direction/industry, and I've been doing software instead. So, I never became a licensed Professional Engineer. I'm still a licensed engineering intern, though. I'm still bound by the legal and ethical standards that it entails and could lose my license for violations.
Think about it like this: What makes software any more or less of a profession than working at your favorite burger joint in terms of industry wide criteria?
Those percentage of SWE working on critical infrastructure should be licensed and legally liable, yes. You shouldn't need a license to build a CRUD app, just like nobody needs a license to build a treehouse in their backyard. You should need a license to work on a car's braking system (https://safetyresearch.net/toyota-unintended-acceleration-an...) or radiation therapy machines (https://en.wikipedia.org/wiki/Therac-25), just like you need a license to engineer a highway bridge.
People do things based on motivation. People motivated by pride and passion know that their work reflects upon them, so they have an incentive to care about quality. People motivated by money know that their paychecks will keep arriving as long as they keep meeting a minimum bar, so they're not incentivized to care about quality, but they are incentivized to care about responsiveness and consistency. For critical software, adding in legal liability for one's work creates the quality incentive that's lacking in most professional roles, while retaining the accountability that we can't expect of volunteers.
I agree completely — the lack of proper professional licensing around working on what has become critical infrastructure astounds me. But even more so is the pushback I feel from within the field! It isn’t that the pushback isn’t understandable; its more that its disappointing.
>> Even bus drivers are held to higher standards of practice than software developers.
Because while there are some software developers that might be in a place to cause people physical harm, ALL bus drivers are ALWAYS in a position to cause great and immediate harm to others on the road.
Traditional professions share essential characteristics. They provide a vital service to society, requiring expertise and skill developed through years of training, education, and experience. Professions establish standards of practice and certify that their members are qualified to serve the needs of society.
--US Army, ADP 6-22, Army Leadership and the Profession
Software does not have explicit standards of practice or a required body of certifications for its practitioners. Software, as an employment, is whatever an employer wants or is willing to accept at any given moment.