The ultimate software taboo

I have written before about the hidden dangers of unstructured or “flat” organizations. A microcosm of the structure wars is the debate over whether Open Source software projects should adopt explicit codes of conduct. These codes, if not an introduction of true structure, are at least the imposition of a “social API” of sorts.

One objection I’ve seen raised to codes of conduct is that we shouldn’t discriminate against people who write good code but who happen to be assholes. After all, as the argument goes, not everyone is blessed with social graces. And if we exclude those people, we will miss out on their essential technical contributions.

With regard to this argument, a study out of Harvard on “toxic employees” seems apropos:

A worker in the top 1% of work productivity could return $5,303 in cost savings, while avoiding a toxic hire could net an estimated $12,489.

Studies also show that an overall negative culture has tremendously damaging impact on health, productivity, and engagement:

…a large and growing body of research on positive organizational psychology demonstrates that not only is a cut-throat environment harmful to productivity over time, but that a positive environment will lead to dramatic benefits for employers, employees, and the bottom line.

Although there’s an assumption that stress and pressure push employees to perform more, better, and faster, what cutthroat organizations fail to recognize is the hidden costs incurred.

Emma Seppälä and Kim Cameron in Harvard Business Review

These studies are from the realm of business, but it doesn’t seem like too much of a stretch to suggest that the effects extend to volunteer associations as well.

And then there’s this. A new study has found that in a medical setting, rudeness might literally kill:

…a rude comment from a third-party doctor decreased performance among doctors and nurses by more than 50 percent […] “We found that rudeness damages your ability to think, manage information, and make decisions,” said Amir Erez, an author on the study and a Huber Hurst professor of management at the University of Florida. “You can be highly motivated to work, but if rudeness damages your cognitive system then you can’t function appropriately in a complex situation. And that hurts patients.”

This is consistent with what I learned from reading Thinking, Fast and Slow: the human mind draws from a single well of energy. This energy can be sapped in many ways, and processing negativity is one of those ways. Having an asshole in the room doesn’t just raise the bar to entry. It ensures that everyone who has made it into the room won’t be working at their full potential.

Whenever I hear that it is simply impractical to exclude contributions based on social, political, or ethical objections, I think about September 27, 1983. That’s the day Richard Stallman decided that the sociopolitical structures behind the software of his day were morally untenable, and launched a project to replace every single line of code he and others made use of with Free Software.

Discarding millions of lines of existing code. Excluding all of the brilliant programmers who were working within the confines of Free-Software-unfriendly organizations. Clearly, this project was doomed from the start.

And yet here we are, decades later, and this article was almost certainly delivered to you with the help of Free Software. Free Software powers millions of servers, phones, and devices. The GNU replacements for the classic UNIX utility stack, re-written from scratch to satisfy ethical constraints, are widely regarded as being superior to the ones that they replaced. Amazingly, counter-intuitively, rejecting existing work and existing contributors did not render the Free Software movement dead on arrival.

More recently Stallman himself has resisted codes of conduct, and has conducted himself in a way that contributes to exactly the sort of unsafe environment that codes of conduct seek to avoid. Should he be given a free pass because of all his contributions?

I argue no, he shouldn’t. If there are three things that Stallman showed the world, they are: 1) software has political and ethical implications; 2) a software movement built on ethics can survive and even thrive; and 3) eschewing people’s contributions on ethical grounds is no obstacle to progress.

I am starting to think that the greatest taboo in software development isn’t writing GOTOs, editing code in production, or even using tabs instead of spaces. No, the most dangerous, terrifying, unspeakable idea in programming is this: the suggestion that we—and all of the code we’ve written—might be replaceable.

This article was adapted from SIGAVDI #10, December 14, 2015.

Featured Video Play Icon

Alternative Ruby Symbol Literals

Periodically I take episodes from the RubyTapas archives and publish them for free. This episode from October 2012 is about symbol literals, and how you can use alternative quoting syntax to embed and interpolate any kind of character sequence in a symbol. And also: why you might not want to take advantage of this. Enjoy!

Read More

SIGAVDI #86: Fancy Ramen Edition

Hello friends,

Long time no write. I spent the summer at home with my kids. Quarantining in the woods with four small children turned out not be very conducive to writing. Or to doing most of my usual work, for that matter. I focused on keeping RubyTapas ticking along, and otherwise investing in family time, home improvements, and watching democracy fall apart.

Read More

Share .netrc with your devcontainers

I do almost all my development inside devcontainers these days. (I take the term “devcontainer” from VS Code’s .devcontainer/devcontainer.json. I think it’s a useful term, and I’ve adopted it into my vernacular for the general case of “development-specific container”)

Some developer service clients, such as Heroku’s CLI tools, store their sensitive API keys in a ~/.netrc file. This is a semi-standardized (or at least conventionalized) file used by a number of UNIX utilities.

Read More

SIGAVDI #85: Picnic Edition

Hello friends,

I'll Trade Ya!

Hey there! Archived SIGAVDI letters are for newsletter subscribers only. All it costs to join (and unlock this post) is an email address! I'll write to you weekly-ish with a few interesting links, some updates, and some reflections on the intersection of software and life. And I'll respond to your replies! Whattya say?

A photo of Avdi Grimm

First off, a special invitation: I’m throwing an experimental two-evening pop-up workshop on Investigative Debugging next week. The Big Idea is to stop hypothesizing about how code is working (or not-working), and instead leverage surveillance tools like strace, mitmproxy and docker diff to understand software behavior with hard data. I’m not an expert in these tools, but I’ve used them enough to get to the bottom of some mysteries. You’re invited to come explore them with me!

Read More