The Good, the Bad, the Ugly.
It’s an essay I *almost* agree with: We Programmers
“Every line of code represents an ethical and moral decision.”
Yes, absolutely.
… But whose ethics and whose morals?
… And what morals and what ethics should we adopt?
I would argue, by the way, that as professionals we have a moral and ethical obligation to our profession: to write clean code, to put our clients before us, to write code that can be easily transferred and maintained, to use tools which advance the customer’s needs rather than tools that appeal to us because they’re shiny and new.
We also have a moral and ethical obligation to cleanly communicate what we are doing, to write code that is “discoverable” (that is, code that can be easily searched and read, and whose functionality is obvious and not obfuscated).
And we have a moral and ethical obligation to push back on our clients–to indicate to them issues in design and architecture which may not advance the client’s long term goals, such as indicating when there is problems with security or maintainability.
Beyond that we have a moral and ethical obligation to the end-users of our software: that our software works correctly, whose workings are obvious (and not obfuscated), which may look pleasant but more importantly does exactly what it represents and does not represent functionality it cannot do. (That is, if your software does one thing, adding buttons and knobs and panels to make it look like your software does a dozen different things is not just poor design, it’s dishonest as well.)
Beyond that, as professionals we also have to remember that, to some extent, writing code can be a political statement.
I wrote “SecureChat” essentially as a political statement, railing against the impracticality of sovereign governments trying to regulate cryptographic “back doors” by architecting an end-to-end RSA-encrypted secure chat system, complete with iOS and Android front-ends as well as a Java JSP back-end–then describing how it works.
Even something that seems benign can be itself a political statement. One does not work on a dating app unless one accepts (and, to some extent, believes) that the dating app will be used by people having extra-marital affairs. For a country or a region of the world (such as the Middle East) where such actions are seen as a violation of public decency, dating apps are a political statement.
So I do agree with the idea “eery line of code represents an ethical and moral decision.”
But whose ethics? Whose morals?
And if you think you’re just writing code from an economics and logic standpoint–to some extent you’ve deferred the decision to someone else.
Now I get the contradiction of places like Google.
And I understand the contradiction that for most people, morality and ethics is only as deep as their aesthetics.
And I understand that aesthetic thinking (as opposed to philosophical thinking) leads to all sorts of problems, because when someone doesn’t share your aesthetics, you’re inclined to see them as ugly, unclean, disgusting. While someone who doesn’t share your philosophy may have a genuinely valid point of view.
And I even understand that most programmers have the philosophical depth of a gnat, and the aesthetic sense of a 12 year old boy looking at his first nudie photo from a magazine under his father’s bed.
But by pointing out that every decision we make has impact beyond just the immediate need of getting something working–I hope more programmers, developers, architects, UI designers, project managers and program managers will realize that what they are doing has an ethical and moral dimension.
And they’ll pause to reflect on the philosophical aspects of the work they’re doing.
Otherwise the world we live in will be eaten by software–poorly written, abusive to end-users, poorly designed, invasive and ultimately dehumanizing.