Software engineering is considered an engineering discipline that encourages the design, development, maintenance, testing, and evaluation of computer software. However, its status as an engineering discipline is contested and varies from country to country, and it is not a protected job title in most places.
Despite its detractors, software engineering has many of the hallmarks of an engineering discipline and the industry is flourishing. There are 1.8 million software developers in the U.S. and the field is growing incredibly fast.
We’ve spoken before about software engineering not being a profession and how it aligns nicely as more of a trade or craft. But let’s take a look at the reasons why software engineering is considered engineering and some of the explanations against it.
Is software engineering considered engineering?
Software engineering is considered an interdisciplinary engineering approach that draws from a few different branches of engineering. The establishing lines for software engineering to get official status are not as clear-cut as other disciplines. Many people around the industry argue over its status as a true engineering discipline.
Let’s take a closer look at some of the reasons why engineering is considered engineering.
1. Training and education
Software engineering has officially accredited training and education programs like other engineering disciplines. ABET accredits college and university programs that provide a stamp of quality for students and employers.
Formalizing and accrediting specific training programs is important to ensure that there is quality and confidence throughout the industry. It makes sure that the degrees software engineers study are industry-relevant and high-quality.
However, a degree is just one way into the software engineering field. Many people either go the self-taught or coding boot camp route. It muddies the water in terms of official training and certificates because anyone can take up the mantle of a software engineer.
2. Professional organizations
Like other branches of engineering, software engineering has a professional society in charge of managing the profession. The IEEE Computer Society is a society whose goal is “to advance the theory, practice, and application of computer and information processing science and technology.
They have more than 200 chapters worldwide and are responsible for uplifting the whole software engineering, their main tasks include:
- Education and Professional development
- Conferences and activity - they run 2000 conferences a year and also develop communities based on specific topics
- Technical communities - they current have 31 specific technical communities including the Technical Committee on Computer Architecture (TCCA)
- Awards - handing out industry awards that include the IEEE Women of the ENIAC Computer Pioneer Award
3. Body of knowledge
All major branches of engineering have a specific body of knowledge that they require their members to know and understand to become accredited. Software engineering has the Software Engineering Body of Knowledge which is sponsored by the IEEE I mentioned above.
The body of knowledge is used to make it difficult to enter the industry. The difference with software engineering is that it isn’t a protected title. Many people are considered software engineers even without learning the knowledge and passing an exam.
It’s one of the reasons the status of software engineering is so hotly contested, the ease of entry into the field is at major odds with other engineering disciplines.
4. Licensing and regulation
Licensing to be considered a software engineer isn’t universal. Only Texas and parts of Canada and Australia require any form of licensing. There is also no overarching regulatory body for software engineering. You can code software in whatever manner you like which means there is incredible variety in the quality of code.
The licensing and regulation of software engineering is an area of the industry that isn't that well developed yet. It flies in the face of what most people consider to be standard practice for an engineering discipline.
Software engineering can largely be considered an engineering practice based around the general software development process. Developing software doesn’t require any raw materials like a bridge but the overall process is relatively similar.
Whether you are designing a bridge or a software product, you will need to:
- Make designs
- Define subsystems and components
- Make prototypes
- Evaluate outcomes
- Specify and execute tests
- Provide long term maintenance
Software engineering detractors often cite the fact you don’t need to design everything before you start programming, as you do with other engineering disciplines. The reality is that for an enterprise-level product you’d be hard-pressed to find a solution that hasn’t been well planned before a single line of code is written.
Why is software engineering not considered engineering?
Software engineering is not considered engineering because of the lack of quality and regulation, limited accreditation, and ease of entry into the industry. The term is also not a protected job title and lacks a governing body which many believe rules it out of contention as an engineering practice.
For some, the issue is just a semantic one, and software engineering has every right to be a protected discipline. For others, the rampant poor quality throughout the industry and a general lack of standards mean it just misses the mark.
When creating software there is a large degree of creativity and flexibility involved in the process. There are virtually no constraints on the approach you take or the quality of the code that is written. Any limits are self-imposed via company best practices or developer experience.
In contrast, in Civil Engineering, there is little to no creativity. Work is completed in a standardized way that meets set industry standards. If these standards aren’t met it will fail inspection.
The lack of well-defined standards in the industry is a key reason why many people don’t consider software engineering to be engineering. Anyone can put together software in any manner they see fit with virtually no oversight. Although in the context of tech I think this is a good thing because it breeds innovation, it's definitely a sticking point.
At its core, engineering is about understanding a problem and then providing the best solution available - this is also at the heart of what software engineers do.
Software engineering is considered an engineering discipline by plenty of people inside and outside of the tech industry. It has many of the same establishments and processes as other engineering disciplines and has looked to formalize requirements into the field.
However, there is a general lack of oversight for it to be an engineering discipline. No single organization is in charge of accreditation or licensing, and this leads to poor processes and quality.
It's largely semantics at the end of the day. But as software engineering matures it may become more standardized and widely recognized as a proper engineering discipline.