Professionalism/Ian Bogost, Nadia Eghbal, and Software Engineers

From Wikibooks, open books for an open world
Jump to navigation Jump to search

Introduction[edit | edit source]

In 2015 Ian Bogost, a video game designer and Professor of Media studies and interactive computing at Georgia Tech, wrote an article called “Programmers: stop calling yourselves engineers” in The Atlantic discussing his opinions on using the word “engineer” to describe software engineers[1][2]. Bogost argued that modern software engineering principles and methodologies have diverged from those of traditional engineering fields such that the term “software engineer” should no longer be used and doing so is a disservice to the engineering industry. Nadia Eghbal wrote an article in response to Bogost’s, stating that Bogost’s ideas, while partially true, do not consider the software engineers that have allowed the field to have changed in such ways.[3]

Job Title Discrepancy[edit | edit source]

Bogost highlights discrepancies between software engineering and traditional engineering principles as the reason for his opinions on the term “software engineer”.

Traditional Engineering[edit | edit source]

Bogost defines traditional engineering disciplines as mechanical, civil, chemical, electrical, and environmental engineering, emphasizing their focus on infrastructure and public welfare and safety. The design process in these engineering fields is a very careful and thorough process that depends accuracy and precision to ensure success of the product in the real world as mistakes can lead to disastrous consequences.[2] Examples of failures include the multiple collapses of the Quebec Bridge, one being the result of load miscalculations, and NASA’s Climate Orbiter which crashed into the surface of Mars after engineers failed to correctly convert units.[4][5] Bogost states that because of this, engineers have a responsibility to “get things right the first time”. The engineering code of ethics also strongly emphasizes public welfare and safety.[6] Engineers in traditional fields now must have various requirements in order to practice including educational degrees and professional certification tests.

Software Engineering[edit | edit source]

Bogost argues that software engineering does not follow the same principles as traditional engineering and should not use the term “engineer” in the job title. When software engineering was first developing in the 1960’s, it did exhibit more characteristics of traditional engineering as Bogost describes it. Physical infrastructure required for software development was put in place and software repairs were expensive, sometimes even requiring physical intervention. This meant that software engineers, like other engineers, had to carefully and methodologically write code to minimize the chance of having to fix and debug after implementation. However, as personal computers starting becoming more available, software development became more accessible to the public. Bogost believes that this made software engineering a more informal practice that had two consequences. First, it reduced the pressure to make correctly working software on the first attempt. Software engineering education now focuses on rapid iteration of writing and testing, then fixing later. Bogost compares this to civil engineering, stating the discipline would never have such a principle. Secondly, it has isolated the discipline from other fields including other engineering fields. While many computing systems still are interconnected with other fields in society, Bogost states platforms like social media only depend on software. This lack of cooperation with other fields goes against Bogost’s definition of traditional engineering. Current software engineers no longer need to worry about or even know about the digital and physical infrastructure behind software engineering and solely focus on the code. This can allow for code to be more reliable, but also creates a larger gap between the software engineers and other parts of engineering. However, Bogost also states that modern software engineering problems are becoming larger scale and more prominent in everyday life indicating its importance, high stakes, and consequent need to adhere to traditional engineering methods.[2]

Connotations[edit | edit source]

According to Bogost, the connotation of the word ‘engineer’ carries a prestige that comes from the skill of designing and maintaining complex, large scale systems. He believes that the use of the word in software engineering has “cheapened the term” and is being used to appeal to Silicon Valley investors to appear more prestigious and trustworthy. Bogost calls this concept “engineerwashing”.[2]

Certification[edit | edit source]

In engineering, it is usually a norm that workers are certified in their area to prove their expertise. Groups such as the National Society of Professional Engineers (NSPE) and the American Society of Quality (ASQ) both provide certificates proving this. Bogost particularly focuses on what a Professional Engineer (PE) is, which is a certification given by the NSPE.[6] He goes over topics such as why someone that is in engineering needs to have this certification. To acquire this certification, as stated by both Bogost and the NSPE, you are required to:[2][6]

  • Hold a 4-year degree from an accredited program in your discipline
  • Pass both the Fundamentals of Engineering exam and the Principles and Practice of Engineering exam
  • Complete four years of experience under someone already qualified as a PE.

Bogost also makes an addition by stating that not all engineers need a degree, however, to have the ability to open a consulting practice or claim that you are a formal engineer requires you to have one. This statement is also reiterated directly from the NSPE where they state that PEs are the only engineers allows to create public plans, teach engineering to students, and it has also been found that PEs also might a higher salary on average.[7] This degree, as said by both, also holds an ethical standpoint. When a person takes on the role of a PE, this means that they are responsible for the lives they are responsible for what happens if something goes awry. So this certificate is a sign that they are responsible engineers that are here to uphold people and help support their profession of being engineers.

To a client, it means you've got the credentials to earn their trust. To an employer, it signals your ability to take on a higher level of responsibility. Among your colleagues, it demands respect. To yourself, it's a symbol of pride and measure of your own hard-won achievement.

-National Society of Professional Engineers

Certification in Software[edit | edit source]

For software engineers, there exists certification but rarely are they a requirement. Groups like NCEES or the IEEE have collaborated to create a certification system for Software Engineers. In 2013, the first certification similar to a PE certification was being offered. There was a test for Software Engineers to complete and receive their certification in the field. Up until its discontinuation in 2019, it has been administered five times and has had a population of 81 candidates that have taken the exam. In January of 2018, the Committee of Examination Policy and Procedures recommended to NCEES to discontinue the exam. Next month, February 2018, NCEES accepted the EPP committee decision and decided that April 2019 would be the last exam administration. In April of 2018, only 19 people signed up to take the exam showing the lack of need for a certification of this kind in the Software Engineering field.[7]

Aside from certifications for Software engineers, there does exist other forms of certification to show mastery of programming languages or computer programming services (eg. CISCO or C++ Certifications). In particular, businesses like Amazon are offering Amazon Web Services (AWS) certification, and there are even businesses that particularly search for this particular trait. So while there is no requirement similar to Engineering in computer engineering, there exists some particular fields that people can show mastery over which may be worth applying for.

Degree Requirements in Software[edit | edit source]

In terms of requirements for the vast majority of jobs, it's extremely common that a requirement for many entry level programming jobs. There are definitely holes in this statement as companies like Google and the U.S. Army offer jobs that actually do not require a CS degree.[8] This, however, does not mean it is easy to get a job by hitting the minimum requirements. Job applicants then look for other requirements and are usually heavily focused on what they have done without formal teachings. It is definitely more difficult, but this whole idea is definitely a huge difference to the norm of engineering requirements.

Digital Infrastructure[edit | edit source]

Nadia Eghbal's 2015 response to Ian Bogost, entitled "The Atlantic Was Wrong. Software Engineers Do Exist", provided a rebuttal to his points on why software developers are undeserving of the "engineer" title. Eghbal argues that true software engineers exist, but that they constitute a minority of programmers. Eghbal claims that the distinction between a true software engineer from just a "developer" or "programmer" is tied to what she calls "digital infrastructure," which she defines as "the layers upon layers of developer tools, languages, libraries and frameworks that make it so easy for “programmers” to code today."[3]

An example of digital infrastructure utilized by many modern software developers are integrated development environments (IDEs). IDEs are highly augmented source code editors that provide helpful features such as syntax highlighting, error-checking, debugging tools, and a host of other features that vary depending on their implementation. IDEs can take complicated processes such as compiling large programs into executable files ready to be ran on a typical computer, and hide that complexity behind the click of a single button. A popular IDE designed for the Python programming language called PyCharm, which is developed and maintained by the Czech company JetBrains, comes with "pre-installed intelligent Python assistance that provides a variety of functions like smart code completion, code inspections, on-the-fly error highlighting and quick-fixes, along with automated code refactorings and a plethora of navigation capabilities."[9] Along with PyCharm, JetBrains also maintains IDEs that can be used to develop in over twelve other programming languages, extending their help to developers of diverse groups of technologies.[10] The software employees at JetBrains are exactly the type that warrant the "engineer" title by Eghbal's definition, as the tools they have created assist millions of programmers worldwide in the software development process.

While contributing to digital infrastructure may seem to place one in a class above the common programmer, those responsible for some of the most critical parts of modern day software infrastructure are not necessarily rewarded with much, other than the respect of those who recognize their contributions. A clear example of this is the development team for OpenSSL. OpenSSL is a secure network communication and cryptography library that’s used by two-thirds of web servers today. OpenSSL is used by banks, firewalls, weapons systems, smart phones, government agencies, and other organizations that deal with sensitive data. Despite its critical functionality, OpenSSL is maintained by a team of eleven volunteers, and brings in less than a million dollars in revenue a year.[3] While the OpenSSL team might have earned the respect of their peers, and pride in their technology impacting billions of people, their situation shows that there is little incentive for new developers to take the path to earn the title of engineer.

Conclusion[edit | edit source]

Despite software impacting the lives of nearly everyone in the world, software engineering is still an extremely young occupation that is constantly evolving. The immaturity of the profession in comparison to more traditional engineering disciplines has sparked debate around whether or not programmers deserve to be called engineers. However, the terminology used to refer to those who create and maintain software may be inconsequential, as it is the regulations and professional standards attached to the term "engineer" that impact public safety. The consistency of software that drives anything from long-standing institutions such as government and banking to modern phenomenon such as social media directly affects the quality of life of billions of people. Ensuring high standards for those entering or already within software-related occupations, whether that be through government regulation, educational certification, or a shift in public opinion, stands at the center of software engineering's future.

References[edit | edit source]