Software engineering does not have worldwide recognition as being a profession but is a fully licensed discipline in Texas, Australia, and large parts of Canada. Since 1993 there have been numerous groups trying to lobby for software engineering to be recognized as a profession but so far their efforts have not been realized.
Despite having some of the same characteristics, software engineering has not yet received widespread acceptance as a profession. There are several associated societies and professional associations but none have come together to define what software engineering would look like as a profession.
There is even an argument to be made that software engineering is a trade rather than a profession.
Let’s take a closer look at what a profession is and whether software engineering meets the requirements to be a profession. Then we’ll look at the reasons why it doesn’t quite fit the mold of a profession.
What is a profession?
A profession is a group of people who have special knowledge and skills recognized by a governing body that licenses their work. They typically adhere to a strong set of ethical standards and apply their training and education in the interest of others in society. They are accredited by various organizations that uphold the group’s high standard. A profession is not a trade or an entire industry.
Magali Larson defines a few characteristics of a profession these include:
- Having a professional association
- Having a cognitive base or set of knowledge
- Institutionalized training
- Colleague control
- A code of ethics
- High standards of professional and intellectual excellence
- An elite group with special power and prestige
- Requires prolonged specialized training in a body of abstract knowledge
Various governing bodies have claimed occupational specialization these include: mechanical engineering, veterinary medicine, psychology, teaching, nursing, social work, and optometry to name a few.
Is software engineering considered a profession?
Software engineering is not considered a profession and is not a projected job title despite having many of the hallmarks of a profession. Software engineering is still a relatively young occupation and the various bodies within it have not been able to agree on a set of standards to define the job.
Let’s explore some of the characteristics of a profession and look at how software engineering compares.
- Professional Association – Software engineering has some professional associations including the IEEE Computer Society in the U.S. and the British Computer Society in the UK. They cater to various aspects of professions in IT and technology.
- Cognitive Base – The Software Engineering Body of Knowledge is sponsored by IEEE, National Research Council Canada, Boeing, Construx Software, Canadian Council of Professional Engineers, the MITRE Corporation, Raytheon NIST, Rational, and SAP. It was created to take a step toward making software engineering a legitimate discipline that has a recognized body of knowledge.
- Institutionalized Training -Training for software engineers in the USA can be accredited by ABET. There are also two exams based on the Software Engineering Body of Knowledge – the Certified Software Development Associate exam for recent graduates and the Certified Software Development Professional exam for professionals.
- Licensing – Licensing is only required in Texas to work on embedded or real-time systems that “require a detailed understanding of the engineered electrical or mechanical components”. However, apart from that, there is no single professional body that licenses software engineers.
- Code of Ethics – There is a code of ethics for software engineers. The IEEE and ACM created the Software Engineering Code of Ethics and Professional Practice.
The other aspects like work autonomy, high standards, intellectual excellence, and colleague control can be observed in most top-end software engineering environments. However, not all employees, employers, or freelancers treat software development as an engineering profession.
So even though software engineering has many of the characteristics of a profession there are a few specific things that may make it difficult for the occupation to be fully accepted as a profession.
Why software engineering is not a profession
Software engineering is not considered a profession because of the relatively low barriers to entry, the lack of accreditation and a single body of knowledge, and the speed of change in the industry. Software development is also a relatively new field and suffers from an unclear job definition.
There are so many different areas to programming that it is hard to pinpoint exactly what software engineering is. It differs depending on the stack you work with and the company you work for.
Let’s take a look at a few reasons why software engineering is not deemed a profession.
1. Ease of entry
Software engineering is easy to get into. You don’t need a degree to be a successful software developer and can teach yourself at home. Development is a competitive field but largely due to the sheer number of junior developers.
For software engineering to become a profession it would need to license developers and restrict the flow of people into the industry. Most professions require their members to acquire abstract or specialized knowledge, which programming could fall under. However, the availability of such knowledge removes its allure.
2. Rapidly changing field
Coding standards and practices change rapidly. New updates and releases of certain languages change the way people write software. Most professions have a set of standards and practices that rarely change. In software engineering, developers can’t even agree on a set of best practices between languages.
3. No licensing
There is no licensing in software engineering and any attempts to implement it would likely be unsuccessful. The industry is just too broad. There isn’t a single body of knowledge that once a developer knows would allow them safely or effectively write code. The journey to being a great developer is never endingnever-ending and changes with innovations in the various coding languages.
4. Short learning curve
One of the core tenaments for an industry to become a profession is that it requires prolonged specialized training. Granted it can take years to become a proficient coder but the initial learning curve is quite short. You can go from a complete beginner to job-ready in six months, could the same be said for a doctor or lawyer?
5. Not a service
For an occupation to be considered a profession it should be service orientated. There is an argument to be made that software engineers help society but they don’t serve people in the same way teachers or nurses do.
The reason for high standards in a lot of professions is because they serve the public or groups in some manner. It’s important that bridges are built to good standards and that people are sold correct eyewear.
You only have to look at codebases created by contractors to know they aren’t doing it with wider public use or greater good in mind.
The best thing about software development is that you don’t need endless accreditations or certificates to prove you are great. You only need to prove you can get things done and have a portfolio of your work and you are good to go.
The entire industry is a meritocracy that feeds off people’s ability to produce great code, not pass a specific exam, and becomes certified. It works in software engineers’ favor but the lack of a widespread professional body that credits developers may be a hurdle to it becoming a profession.
Software engineering is not a profession because it lacks a governing body, accreditation, licensing, and has virtually no barriers to entry. The knowledge you need is specialized but does not require intellectual excellence, and some of the standards within the industry are pitifully low.
The movement to make software engineering a profession began nearly three decades ago and has succeeded in introducing part of professionalism in many areas of software engineering. However, there may not be a great appetite for it among developers and there is still a long way to go for software engineering to become a profession.