Codes of ethics for software craft?

A funny thing happened in the testing Twitter community this week. First off, Pedro Gonzalez tweeted a link to an article describing a recent multimillion-dollar settlement against Toyota for lethal bugs in embedded software. (This informative, interesting tweet was not unusual in itself… it’s what I’ve come to expect from testing Twitter.)

There is an industry standard for embedded software in motor vehicles … which is voluntary. According to the article, Toyota declined to follow that standard, and its software developers apparently proceeded to write “spaghetti code” much of which was untestable and unmaintainable.  The testimony of expert witnesses was compelling enough that had the case gone to a jury verdict, a much greater award for punitive damages would probably have resulted.

As I read the article on the Toyota case, I quietly wondered: even if your company declines to follow a standard, don’t you as a craftsperson have SOME kind of ethical responsibility to write solid code (or to test it with thought and care)? Many years ago, my law school classmates and I were required to take a course on professional responsibility and ethics, and were assured that if we behaved in a way contrary to ethical rules, discipline up to and including disbarment could result. If attorneys (and doctors, and accountants…) are bound to a code of conduct, why aren’t those involved in software creation?

Well, just as I was thinking that, another, separate conversation started on Twitter. “Uncle” Bob Martin has advocated recently for a code of ethics for software developers… in fact, he’s proposed a nine-point oath.

Just after Pedro tweeted the Toyota link, Lanette Creamer wondered (rightfully) about the rationale for and effect of such an oath. Why aren’t we routinely taking corporations like Toyota to task when they deliver bad software? If we impose codes of ethics and oaths for individual craftspeople, would we wind up making those people bear the cost of what often are corporate decisions? Why should an individual worker bear the brunt of the responsibility?

Why indeed? The reaction to Martin’s proposal has been mixed. Martin is working to raise the bar in general: he notes in an interview with Matt Heusser, “…you can be hired as a programmer if you tell someone you know something about computers.”

My honest response to that is … yes and no. Many software development shops strive for high standards in hiring. The developers I work with review each other’s code in detail. These practices are entirely voluntary and discretionary, though. I have been in the field as an observer (or tester, or documenter) of software for nearly 20 years. I have never heard of anyone being let go for writing substandard code. EVER. Aspersions about “spaghetti code” get cast but that’s about it.

I’m a software tester. Some people want to impose standards on testers that would minutely prescribe the way I do my work. Like Uncle Bob, I consider myself a craftsperson, and I think that far-reaching standards can inhibit the kind of creative thought that I need to be able to do as a tester. (It interests me that there is a set of standards for embedded software: it was in part by those standards that the expert witnesses for the Toyota plaintiffs established liability. I don’t know whether such standards have a chilling effect on creativity in software development.)

I’m not sure that highly specific standards work when it comes to a craft. But a code of ethics like the one Martin proposes is simultaneously less specific and more compelling than a set of standards. As an attorney, keeping a code of ethics in mind helped ensure that I took my work seriously.

In the United States, the doctrine of respondeat superior ensures that the financial penalty for civil litigation due to negligent acts by an employee (like creation of subpar software) is borne by the employer of the person who wrote the code. I don’t think anyone wants to see an individual software developer or tester be sued for millions of dollars (except, maybe, for some corporations who would otherwise be liable themselves!) But with a code of ethics or an oath comes an opportunity for a mechanism like a Board of Bar Overseers, which takes complaints against individual attorneys and imposes discipline (up to and including disbarment) where appropriate.

Software is everywhere today: in the cars we drive, in the medical devices that help us stay alive. I consult an attorney only on rare occasions and I see a doctor only a handful of times a year. I don’t have the same luxury when it comes to subpar code. None of us does. As we well know, many corporations will avoid successfully the consequences of their actions if they get a chance. As individuals, we might want to be better actors.

It takes a shtetl: a bevy of diversities and notes on Adacamp too.

Michael Wex, in his wonderful book Born to Kvetch, introduces those who can’t speak or read Yiddish to its vast palette of character archetypes. (I am one of those illiterates, so if I get any of the following wrong, don’t blame Michael Wex.)

If you have roots in Yiddish-speaking Europe, any one of your ancestors might have been called: a mentsh (righteous dude), a kohkhem be-layle (a “sage at night” a/k/a an idiot), a nudnik (professional bore), a pempik (short, squat person), a kochleffel (cooking spoon, or pot-stirrer/troublemaker) or a treyfener haldz (a glutton, or sometimes just someone with a sweet tooth who otherwise kept kosher). The list is just about endless.

There was also the beyre, or a skilled specialist. More on him or her later.

Many of these words and phrases aren’t exactly compliments. But the impression you get from reading the book is that most people to whom these epithets applied were accepted, if not always feted, denizens of the shtetl. Admittedly, the book describes a world that no longer exists. But there seems to have been real joy (or wicked glee) in naming and describing so many types of people… or facets of behavior and talent. Modern American English seems to pale in comparison. Perhaps it’s just a linguistic difference. But I think it goes deeper.

In the nineties, I was a tech writer at an ecommerce startup many of whose employees were… types that I don’t see around much anymore, at least at work. The UX department featured Wayne*, a whitebearded Unitarian Universalist in his fifties who padded around the office in bare feet or Birkenstocks and who gave me one of my all-time favorite questions: “What problem are we trying to solve here?” There was Terri, who had a doctorate in human factors and was one of my favorite people to laugh with offsite when we were faced with an especially backward UX design proposal. Marcia, another tech writer, and I kvetched about schedules or rhapsodized about Mandy Patinkin. Katie, the engineering manager and official company crazy cat lady, threw huge X-Files parties and later went to law school to specialize in patents.

Among the developers was a bona fide (local) rock star as well as a couple of vocal women who held senior positions. Many of us took the nerd purity test and got low scores (I was among the lowest scoring people, even among the tech writers — so was the rock musician, who was also a very well-respected lead programmer.)

Demographics: I was in my thirties at the time and was the youngest by several years of the tech writing group. The group numbered around 15 at its largest and was split 50/50 between men and women, most of whom did not have formal engineering educations. Same with the QA group, which probably numbered at least 50 people.

So… the company was a shtetl of sorts. It featured a welter of talents and types, and I believe the diversity was actively sought. (My college thesis in Romanian history played a major part in my hiring, or so I was told.) The company is no longer around, but few startups from that era survived.

In the early aughts, tech writing jobs dried up and I started doing software testing instead. Flash forward 15 years: I recently went through a job search… and the range of testing jobs I saw advertised even a few years ago had narrowed significantly. Most of the jobs in my geographic area were for “software developers in test” or automators. I was fortunate enough to find a job with a QE group that welcomes thinking testers of various backgrounds who may or may not write code.  But it seems that those jobs have all but disappeared in the United States.

The bottom line: your skills must now fit into a very narrow range, preferably backed by a C.S. degree, for you to have a decent shot at most jobs associated with software development (even testing jobs). Even 7-8 years ago, this was not the case. I wonder what we’ve lost.

As a palate refresher, I had the great pleasure and honor of attending the Ada Initiative’s Adacamp April 13 and 14 in Montreal. It was absolutely thrilling to see 100+ women gathered to discuss issues of open culture, technology, gender politics and equity, and… anything that was of interest to the group. Many of the women were highly placed technical leaders in software companies, but we also had a few linguists, a full-time employee of a feminist bookstore, several doctoral students, lesbians, straight women, genderqueer and trans folk… there’s a Yiddish word that almost fits what I’m talking about. (Sadly, Yiddish is more than a bit sexist.)

At Adacamp I gave a presentation on my life as a software tester and I spoke about the value of different mindsets on a dev team. There was enthusiastic discussion and interest, and I heard well-founded frustration from some of the developers in the group on how to go about hiring good testers. That frustration has led them to… hire junior developers as testers. I gently reiterated my point about different mindsets, but I fear it may not have been heard.

It is difficult to hire good technical people – I heard the same thing from the young developers with whom I had dinner the night of April 13. But… hiring the same species of beyre, over and over, to do jobs of different types? Focusing 99% of our efforts to get more women into the world of software on … teaching girls and women to program? It is critical to get girls and women who WANT to program into the field, but aren’t there other skills, talents, and mindsets that are of value in software development? And which groups of women are most likely to clear these hurdles?

Recently featured on Metafilter was an article about the “full stack employee.” Community member divabat wrote in response:

I – an interdisciplinary generalist type, which isn’t uncommon in the arts and activist worlds – has trouble getting jobs because my experience wasn’t “specific enough”. The tech industry has been especially flummoxed at why someone with my background would want to join in. Full stack but only in certain flavours?

(divabat, a/k/a Creatrix Tiara, would be thought of as “full stack” in a sane world. She is a gifted artist, writer, and community organizer. She just finished an MFA in Creative Inquiry and is open to new work opportunities. If I were a hiring manager I would contact her posthaste.)

A shtetl inhabited only by one type of beyre would be a very dull, oppressive place. Software, or any type of product or service, that comes from such a place? We’ll see more of it if things keep going as they are today.

*Names changed for privacy.