Software Engineering Profession – What Needs to Change for Formal Recognition?

engineering

Unlike other professions (such as Accounting, Law, Medicine, etc.), there is no profession-wide certification for Software Engineering.

I am well aware of the multitude of technology and methodology specific certifications that aim to serve as proof of specialisation and experience, but there is no public Software Engineering society / governing body that sets (and has the power to legally assess) generally accepted professional standards.

I understand that software is a dynamic beast – that is part art, part science – but I'm wondering whether Software Engineering has the potential to become a formal profession.

What needs to change for this to happen, and would it even be a good thing?

(If anybody knows of formal research into this topic I'd greatly appreciate references)

Update

I agree with many of the good points raised below regarding the current level of certification in Software Engineering. I also find it very interesting that some countries treat Software Engineering as a profession whilst others don't.

There does however seem to be a bit of shroud surrounding the term "formal profession", and how it would apply to Software Engineering. I think the key issue with Software Engineering – and the primary reason it is not a full-blown profession – is that if you're a certified Software Engineer, and – for example – some software you wrote for an elevator malfunctions and kills people, your certification and / or membership to a formal professional body won't get revoked.

Sure, your company might get sued for millions, and you personally might lose your job and earn a bad reference, but generally speaking, you personally are protected by the shield of limited liability as a result of being employed by said company. In other words, and as far as I know, there is no legal assessment / enforcement in place (unlike other formal professions and their governing societies) which have the mandate to officially bar you from trading once you've made a colossal stuff-up.

I quite liked the answer that touched on the fact that Software Engineering – as it stands – is a meritocracy, which doesn't need to be a formal profession, and that this is a good thing that shouldn't change. At the same time, I think we need to make a clear distinction between Software Engineers of mission-critical software versus developers of miscellaneous / non-critical software.

To those of you who work / have worked on mission-critical software – is there any personal liability? Surely there is a need for formal repercussions in the event of the Software Engineer making a costly mistake?

Best Answer

Based on available information, I believe that Software Engineering is already a formal profession. It may not be widely accepted as such, but it is meeting the generally accepted criteria for the characteristics of a profession.

From Wikipedia's article on Profession:

There is considerable agreement about defining the characteristic features of a profession. They have a "professional association, cognitive base, institutionalized training, licensing, work autonomy, colleague control... (and) code of ethics,"[18] to which Larson then also adds, "high standards of professional and intellectual excellence," (Larson, p. 221) that "professions are occupations with special power and prestige," (Larson, p.x) and that they comprise "an exclusive elite group," (Larson, p. 20) in all societies.

This quotes Magali Sarfatti Larson's The Rise of Professionalism: A Sociological Analysis extensively. Searching for "characteristics of a profession" tend to lead similar results.

How does Software Engineering stack up against these characteristics?

  • Professional Association There are numerous professional associations for software engineers. The IEEE and more specifically the IEEE Computer Society serve professionals working in engineering around the world, with the IEEE Computer Society focusing specifically on computer and software engineers. The ACM is another professional organization for professionals working in computing, generally in the Americas. There's also the British Computer Society, which caters to various aspects of professions in information and communication technology, generally in the UK.

  • Cognitive Base The Software Engineering Body of Knowledge is sponsored by the IEEE, Boeing, National Research Council Canada, Raytheon, Construx Software, Canadian Council of Professional Engineers, the MITRE Corporation, NIST, Rational, SAP (for the 2004 version). It was started specifically as a step toward "making software engineering a legitimate engineering discipline and a recognized profession".

  • Institutionalized Training In the United States, Information Technology, Computer Science, and Software Engineering programs can be accredited by ABET. In Canada, Computer Science and Software Engineering programs are accredited by CIPS. These organizations define minimum standards and expected outcomes for students graduating from an accredited program to enable them to function in a professional environment. The IEEE also offers two exams based on the Software Engineering Body of Knowledge - the Certified Software Development Associate exam for undergraduates (or recently graduated undergraduates) and the Certified Software Development Professional exam for mid-career professionals.

  • Licensing As of April 2013, NCEES offers a Professional Engineering exam in Software Engineering. It is offered on a state-by-state basis in the United States. However, the Software Engineering PE exam is not currently offered by every state, and even fewer require the license. This article, published in the November/December 1999 issue of IEEE Software, discusses licensing requirements in the state of Texas and a brief discussion of licensing in Ontario and British Columbia, Canada and the UK. In Texas, a license is only required to work on the design, testing, or implementation of embedded or real-time systems that "require a detailed understanding of the engineered electrical or mechanical components" and for software systems for "mechanical devices, electrical devices, and power systems" - a relatively small amount of software development work. In states that offer licensing, the worst case scenario is disciplinary action, sanctions, or loss of your license should a client or employer file a complaint. However, the only real harm comes in states that require a license - unless the license is required to do the work, losing it doesn't mean anything.

  • Code of Ethics The ACM and IEEE Computer Society created a Software Engineering Code of Ethics and Professional Practice. In the United States, graduates of ABET accredited engineering programs, including Software Engineering programs, can also join the Order of the Engineer, which maintains a code of ethics that generally applies to professional engineers.

  • Work Autonomy, Colleague Control, High Standards of Professional and Intellectual Excellence These are frequently visible in an environment where software engineering is treated as an engineering discipline. That is to say that not all employers (or freelancers) treat software development as engineering.

Related Topic