For our code of ethics, we divided the document into three sections pertaining to the different spheres in which we can talk about ethics. The first section deals with the personal sphere. In it we listed personal codes of conduct that we would follow in our work lives. This section was a lot of fun but probably read like the least ‘ethical’ parts of this document, as we usually understand that term, denoting the absolute good and bad. I would remind everyone that ethics derives primarily from the greek term ethos, which means something like custom or abode. Therefore, it is not our mission here to stay in line with the absolutely good (in which we might not include the ‘ballmer zone’) but certain practices that we find conducive to better programming and living habits. For most of us the ballmer zone could fall under that category, in the sense that it is a beneficial custom, part of the ethos of a programmer. We also added the important advice to not let this step over the line, to the point that we are coding under the influence. I think to not code and drive is great advice as well, as many of us are tempted to keep coding while doing almost anything (maybe not driving for me, but still). This is exactly the kind of limit that should be marked down in a code of ethics, so we can refer back to it and know some limit has been imposed, although it seems like a good idea at the time. I often code well while listening to music with more thoughtful lyrics and reflecting on them, and sometimes I will cook and still be thinking about code and writing some. However, this could be dangerous if I have a more complicated recipe, so I should consider whether my behavior violates the spirit of our code. In the personal section we also touched upon honesty, cheating and other matters of personal integrity. These are important principles for which we are personally accountable, for such dishonesty might go unnoticed and not clearly harm others, but it will hinder our development as persons.
The academic and societal sections tried to expand our ethical principles to include academic work and societal outcomes. The academic section was fairly straightforward, for there have already been many principles and customs set up to guide our behavior. I find the most important principle to be respect for our teachers, since outside of research they are only working to help us and improve our work, not just test us arbitrarily. We also advised that students think about their learning rather than how their transcript looks, which I see as related. When we moved on to the societal section, we began speaking in more general terms, enjoining more conscientious software that does not lead to harmful effects. Our imperatives became nonspecific, asking that we avoid software that could be harmful without illustrating what such harm would be, or how it could take root. We did manage to make a few clearer imperatives, like the call to not produce discriminatory software. However, I find that imperative misleading because discrimination will not be clearly inscribed within our code. It has to do with the socioeconomic environment in which we release the software, and how accessible it is to various groups.
This final section is the main weakness of our document. We generalize too much and try to speak about what is absolutely good in software development. I am not pinning blame on any writers of this code, for I would have done the same given this assignment. It simply becomes impossible to make sensible statements as the scope becomes broader, and we must speak about the broader effects of our software rather than our form of conduct as a software engineer. This is not something that we could revise and improve, however. Wittgenstein once said in his short lecture on ethics: “if a man could write a book on Ethics which really was a book on Ethics, this book would, with an explosion, destroy all the other books in the world.” Our language is meant to carry across statements about natural occurrences, circumstances that we must describe for some utility. Ethics surpasses those limits, so when we try to speak about the absolute good we run our heads up against those limits, which is what happened in our last section. Still, Wittgenstein says he cannot help but admire the effort, this particularly human striving towards those limits. That’s about how I feel after this exercise. It was helpful to list out what we take to be good conduct, and at least attempt to picture what we take as the absolute good for software. It was well worth the effort, for keeping those imperatives in mind could make us a bit more responsible and caring in our work.