Programmers: Continue Calling Yourselves Engineers
As Ian Bogost clearly thinks about words it was surprising to read his piece in The Atlantic titled, “Programmers: Stop Calling Yourselves Engineers” in which Bogost makes an ill-conceived argument that programmers are not in fact engineers and sends a bizarre and demeaning message to the software and broader engineering communities.
His basic thesis is that software developers are not engineers because they don’t fulfill the following criteria: they did not receive formal education, they are not certified, they are not part of a guild, and/or they are not held to delivering a standard of infrastructure held to public scrutiny (ie. for the public good).
I was immediately (and remain) unconvinced by his argument, but felt compelled to think through (a) whether Bogost’s criteria are really what define an engineer; and, (b) if his criteria are valid, do people who write software not meet it as he claims? As a fellow lover of precision in language, I’d argue Bogost’s conclusion doesn’t hold up on either count.
Definition of an Engineer
If we’re going to argue semantics then we should start by aligning on definitions. Mrs. Merriam-Webster says that an engineer is “a person who has scientific training and who designs and builds complicated products, machines, systems, or structures : a person who specializes in a branch of engineering” and she goes on to add (in the “full definition”) these concepts “a person who is trained in or follows as a profession a branch of engineering” and “a person who carries through an enterprise by skillful or artful contrivance”. Mr. Wikipedia adds to the definition, “practitioner of engineering, concerned with applying scientific knowledge, mathematics, and ingenuity to develop solutions for technical, societal and commercial problems. Engineers design materials, structures, and systems while considering the limitations imposed by practicality, regulation, safety, and cost.” Most definitions (one of my favorites is from this aptly named domain) include that last part about the constraints of practicality, regulations, safety, and cost.
The National Society of Professional Engineers says “[Professional Engineer] licensure is the engineering profession’s highest standard.” A golden standard! While the definitions vary state-to-state, I’m in New York where the standard for PE licensure is 12 credit years, which can be earned through a variety of combinations of education, experience, and testing. This license defines by law who is an engineer.
In summary, both the language authorities and the legal authorities define an engineer as someone who:
- Has scientific or mathematical training or specializes as a professional in a branch of engineering (ie. training or experience)
- Uses ingenuity to design and build complicated products, machines, systems, or structures
- Considers the limitations imposed by practicality, regulation, safety, and cost
So how does Bogost’s definition stack up against the actual definition given to us by authorities? Poorly. Bogost (seemingly arbitrarily) adds criteria like being in a guild. Also, glaringly absent from the real definition is of any mention of the necessity for an engineer to have a graduate degree or PhD and that engineering work is for public good and open to public scrutiny.
So regardless of definition, is it possible to be a great engineer without going to school? Is it possible to be a a great engineer if your work is not held to an institutionalized or governmental standard?
Software Developers Meet the Standard
As someone who has directly hired and managed many hundreds of people who write software, and have reviewed thousands of resumes and conducted thousands of interviews, I am expert in reviewing the credentials, experience, and skill of software builders (purposefully avoiding questionable terms here). Interestingly these three are the fundamental of what we seek in every hiring process. We interview and test for these exact items. We give structured tests, we put people in front of a panel, we work through practical problems, we look at past experience, we look at future desired behavior; you might say it’s like we’re operating a mini, high-speed certification.
Based on the technical caliber and professional capabilities of these candidates, I have no qualm calling them engineers. But let us apply Bogost’s standard and see how they measure up.
Bogost says for a person to be considered an engineer they must be: formally educated, certified, a member of a guild (professional body), be held to a standard / public scrutiny.
Regarding formal education: the people who write software have often studied for years in both structured and unstructured environments. If you consider books (why wouldn’t you?), Google returns 23% more results for books on software than on engineering (although I guess it doesn’t mean anyone is reading them). And what do we consider “formal education” these days? Just because it was four years in a public/private university for so long doesn't mean that's what an education looks like today. There are online courses, other formats of education, and more advanced training at the middle and secondary levels.
Regarding certification and guilds: there are a number of certifications available for professional software engineers from MCSE to A+ to IEEE. Speaking of the Institute of Electrical and Electronics Engineers (IEEE), in addition to providing certification they are a leading professional body (a guild) as is the Association for Computing Machinery (ACM).
Regarding public scrutiny and public accountability: remember when Facebook made a layout change? Oh the scrutiny. They might have the largest public infrastructure in the world supporting 1.6 BILLION users. How about Twitter supporting 320M active users, to put that in perspective, the largest wireless carrier is Verizon Wireless who has “only” 102 million monthly users. Anyway, Verizon runs on software too.
It’s worth considering famous counter-examples: software writers whose software now power most of the infrastructure of the planet written (at least initially) by people who didn’t even have undergraduate degrees. (I’m killing two boards with one stone — an ingenious design — public scrutiny and education). Bill Gates. Various versions of Microsoft Windows are the top four most popular desktop operating systems today, with over 86% of the market. Larry Ellison. Oh, well that’s the #1 database on the planet, outpacing almost 300 other options. Michael Dell. Well in addition to building and selling some of the most popular computers ever they have also acquired EMC which powers a massive portion of the enterprise storage space. Not bad for the uneducated. These are great engineers, by Bogost’s standard, and they are not formally trained.
Summary
The bottom-line is that our world runs on highly sophisticated software systems. The software writers who make airplanes fly and space shuttles launch are required to produce the most fault tolerant code on the planet. And while there are software that simply make trumpets blast Trump’s toupee,j either way they are confronting and meeting the constraints in front of them. Both are creating innovative and ingenious solutions to new problems, leveraging necessary years of study and practice, and delivering capabilities humankind has never seen before. And all of us, including Ian Bogost, are benefiting from these Software Engineers.
Ninja-Edit:
My friend Margot makes these additional, very good arguments:
- There was a time when the engineering field wasn’t as regulated and certifications weren’t necessary. Could one argue software is a type of engineering that is just younger, nascent, and that regulations will continue to be imposed (as in phone systems, utility, electricity) or things like self driving cars… etc. where people’s lives are at stake.
- Bogost makes points in his article about how software development used to be engineering (ex: spreadsheets) when iteration was harder. I guess what makes “planning” engineering and “iterating” not? Is waterfall project management/development then engineering?
- Bogost says it’s only engineering if it’s collaborating with the world, not “institutionally hermetic”- why? Why isn’t collaborating with a business environment engineering?
- Bogost makes a lot of arguments about how real engineering is about “bridges” and “buildings” where it had to be made “right.” But there are lots of examples of buildings and bridges being made wrong. Even under public scrutiny. They were still made by engineers, just bad ones.