Why do we do what we do? Beyond needing to pay the bills, a developer should want to create software that helps people. The specifics of what exactly this means will vary from person to person, but I propose that software engineers should adhere to the principle of “do no harm,” like physicians and other medical professionals. In fact, I believe this principle should apply to all people, regardless of profession, but for the purposes of this essay we will stick to the realm of software engineering.
“Do no harm” sounds like a pretty simple thing: just don’t hurt people. In practice, though, it becomes much more complicated. Consider the case of Facebook. I doubt Mark Zuckerberg in 2004 had any inkling of what his simple social media site for university students would turn into in the decades to come. And yet Facebook today has become a bastion of misinformation chock full of echo chambers, and as fewer new users join, preferring newer social media, their need to hold onto their existing users increases. Thus they “steer into the skid,” so to speak, and groups promoting things like vaccine denialism are allowed to thrive, playing a part in the deaths of thousands during the coronavirus epidemic. What started out relatively innocent has morphed into a monster.
On the other hand, maybe you’re not convinced that Facebook deserves any blame for the state it’s in today. After all, Facebook itself is not directly responsible for the content that it hosts. It’s moderated, to an extent, but its users decide what they post and what pages they join.
So perhaps a more impactful example of the importance of ethics in software engineering would be to discuss military contractors. Modern weapon systems are essentially entirely computerized, and require a lot of work from a lot of developers in order to function. Regardless of how confident a developer feels that the use of their work will be justified, you can’t get around the simple fact that its primary function is either to directly take lives, or to support operations that do so. Therefore, a responsible developer must give serious consideration to whether what they are being asked to create is acceptable and aligns with their values.
One way that selfless developers can do some good is by designing and maintaining open-source software. Most software that falls into this category is also free to use. Some prominent examples include the LibreOffice suite (a free alternative to things like Microsoft Office), the image editor GIMP, and, of course, Linux-based operating systems. Linux especially is a great example of success using the open-source model. There are many different operating systems based on the Linux kernel, and this is only possible because all of the source code is freely available for people to experiment with and modify.
The most popular distribution is probably Ubuntu, but Fedora, Debian, RedHat, and Linux Mint are also popular choices. Linux has something to offer even to users already running Windows. I myself have dual-booted my laptop with Windows 11 and Ubuntu 22.04, because I wanted the option to use a Unix-based system for scientific work, but didn’t want to spend the money on a Mac. After all, I already had perfectly good hardware. All I wanted was some different software, and the open-source model was able to provide me with a simple, free option.