What stops a bank teller from stealing money from a bank? These people literally handle lots of cash. It would seem that handling large amounts of cash can make them blasé about its value. I am also sure that most bank tellers are ethical people too. But I doubt that any bank would be happy with just these assurances that money was not going to be stolen by the tellers. Instead, the processes used by the bank would generate an audit trail, sufficiently detailed that theft by tellers would quickly be discovered. If tellers stealing money is seen as a risk, then the risk is minimised by the processes used.
Not all careers are able to be adequately scrutinised by processes to avoid unethical dealings. Doctors make the “Declaration of Geneva” – which is the modern version of the “Hippocratic oath” . This is a statement regarding their ethical treatment of their patients. Not being a doctor, I am not sure how seriously they take the oath, but, as a patient, I would like to believe that this is a binding principle for them.
Computer programming strikes me as a career that could do with an “oath”. Some programs have the ability to harm people, harm their finances or otherwise adversely affect human life. How seriously do the programmers of such systems take their jobs? Again, I would like to think that they take that responsibility very seriously. Would taking an oath make a difference here? Computer programming requires no formal education, and quite often the “rich and famous” leaders of the industry are mavericks without one. Without formal qualifications, do you know whether or not the programmer has produced good quality work? Unfortunately, these two aspects (“education” and “quality work”) are only tenuously linked in the computing field. I use this point as a defence for my claim that we are still very much in the infancy of the computer industry. In years to come, I hope the two are more closely aligned.
I believe that taking an appropriate oath could be an important aspect of computer programming in years to come. Such an oath would require several parts to it:
Part 1: To be honest and ethical in code that is written.
This includes things such as not writing Trojan horses, illicit collection of users’ private data and ensuring that computational output given is truthful and accurate to the best of your ability.
Part 2: To follow industry best practises with respect to producing high-quality code.
Whatever I write here will date the article, but things such as writing unit-tests for code and following an appropriate development methodology are along the lines of what I am referring to.
Part 3: To reduce the severity or likelihood of errors when they are discovered in software.
The whole notion of “Bug prioritisation” is based upon fixing the most serious ones first, and leaving more obscure bugs with less impact until later. This point in an oath is to ensure that bugs are not left behind for the wrong reasons. (e.g. Because there were “more fun” bits to write)
Part 4: To periodically update technical skills through on-going education.
The intent here is to ensure that code written is done on the strongest and most relevant platform. There is a balance required here. On one side the aim is not to produce code that “rots” because it is old and unmaintainable and on the other side, trying to avoid re-writing everything in the latest trendy language.
I suspect that such an oath needs to be complied with “in the spirit that it is written”. Programmers, by their very nature are constrained by binary logic. As such, I could imagine an extreme-nerdy glee some programmers would have in deconstructing such an oath. In this sense, “deconstructing” is exactly the right term to use: Applying a warped perspective on a literal interpretation of an oath would not be constructive for our industry. You have two choices when constructing something like an oath. You can write it in straightforward simple terms and use the phrase “in the spirit that it is written”, or you can write it so precisely that there is no room for interpretation. Precise wording undermines the effectiveness of a document by writing it in “legal-ese”. No-one likes reading such a document and people often hide behind the excuse that they didn’t understand such a document.
I have never made the “Declaration of Geneva”, but I do understand what it means, and I expect any doctor that treats me to have made it, or a similar oath. It could have been written with legal precision, but for the benefit of doctors and patients alike, it was not. Similarly, if the software industry was bound by an oath or affirmation, then it would need to be one that could be understood by both the programmers and the end-users.
Do end-users care about ethical programmers? I somehow doubt that it is as important to them as an ethical medical practitioner is, but they probably do expect that the software they use has been written by diligent programmers. If you were to point out that private information on their computer may be accessible by a rogue program, then I expect they would care about the programmers being ethical as well! Due to the all-pervasive nature of software in western society, you could wonder why the general-public has not started to care more, about such matters. With “public education”, you could probably raise the level of concern, but such an approach does seem to be way over the top. It is probably just as effective for those of us in the industry to care about such matters.