We may be "small-e" engineers, but we aren't Professional Engineers[1]. That requires a license, a degree, training, and an organization that spells out what a discipline is competent at doing.

Generally, a licensed PE is required to complete a four-year degree, and four years of engineering experience, after which rigorous testing confirms their qualification. This ensures a fundamental body of knowledge, in addition to the wisdom and experience of practicing under other experienced professionals. The Professional Engineer takes on a legal responsibility for their work, in part because they are trusted to ensure the welfare and safety of people and property.

Based on my 18 year career, I've only met a few SWEs that I would consider having both the requisite body of knowledge and experience to be called a Professional Software Engineer. Most of the SWEs I have met have lacked some fundamental knowledge that is required to complete a Software project to a high standard of quality and reliability. Even if you exclude networking hardware/software, computer architecture, systems engineering, embedded system design, and other niches (which aren't that difficult to learn, but anyway), most SWEs I've met over my career lack basic knowledge about software engineering.

Often, they simply don't have the experience of working in professional organizations. This is not taught to them in school, and you often have to work at a specific kind of place to learn these standards and processes on the job. But these standard and processes are necessary to coordinate work amongst teams in such a way to avoid common problems, such as lack of documentation, incorrect assumptions about how something works, delivering the wrong solution at the wrong time, etc.

Another thing that's become extremely common in the past few years is lacking a basic body of knowledge about software design. The history of software, its uses, algorithms, techniques, standards and protocols. This fundamental lack of knowledge leads to making mistakes that the industry learned to avoid decades ago.

Most SWEs I've met today are working off a body of knowledge from the 1990s or early 2000s. They have not learned modern software design or implementation techniques, outside of whatever is specific to one or two programming languages (and even then, their knowledge of the language is inconsistent). In addition, most of them have not taken training to teach them how to manage their work within a team effectively, which is especially important with the rise of Agile and Scrum.

It seems that most of what the average SWS knows today was learned from random blog posts submitted to tech forums, which were written by laymen, submitted by laymen, upvoted by laymen, and commented on by laymen. It's the blind leading the blind. And those blind people then go on to work for companies where they hire the blind.

I believe that the Software Engineering industry is almost entirely made up of people who don't understand their own ignorance, bluster their way through jobs and projects, and move from one company to the next, rarely ever significantly improving themselves, mostly leaving companies with shoddy work.

I know this isn't everyone's experience. But I have worked at enough places in enough different industries that it cannot be pure coincidence. HN is a good example: many of the comments on technical articles are often clearly from ignorant and inexperienced people who pass their assumptions off as fact. I can't count the number of blog posts upvoted here whose entire premise was fundamentally incorrect, yet a whole chorus of people chime in to agree, not really knowing what they're saying.

The point of the study, experience, and testing of engineering is to ensure that the people who claim they're engineers, actually can walk the walk, because in Professional Engineering, the result matters, and there are real world consequences.

SWEs are lucky that most of the projects they work on don't have as dire consequences as Professional Engineers. But the more software takes over the world, the greater their impact on society is. Software has lots of real world impacts - from charging electric cars, to suggesting when someone's gait might make them a criminal, to preventing someone from getting credit to buy a house, to creating addictive habits for young impressionable minds, and more. If the world cares about the impact of software, then it needs to hold digital engineers to a higher standard, the same way it did to physical engineers over a century ago.

[1] https://en.wikipedia.org/w/index.php?title=Professional_engi...