A professional oath for programmers?
Do you solemnly swear to produce good code? That’s what Agile Manifesto co-author Robert C. Martin wants you to do, in his newest endeavour to create a list of ethical guidelines for programmers to follow. The Programmer’s Oath has been met with mixed feedback.
Doctors, judges and soldiers are known to take solemn oaths or promises to adhere to certain basic rules of conduct, with the betrayal of these oaths sometimes having serious consequences. Robert C. Martin, affectionately known as “Uncle Bob”, has some experience with this. The well known co-author of the Agile Manifesto has written a set of ethical principles for programmers that has generated a sizeable amount of controversy.
Martin’s Programmer’s Oath includes nine items:
I Promise that, to the best of my ability and judgement:
- I will not produce harmful code.
- The code that I produce will always be my best work. I will not knowingly release code that is defective either in behavior or structure.
- I will produce, with each release, a quick, sure, and repeatable proof that every element of the code works as it should.
- I will make frequent, small, releases so that I do not impede the progress of others.
- I will fearlessly and relentlessly improve the code at every opportunity. I will never make the code worse.
- I will do all that I can to keep the productivity of myself, and others, as high as possible. I will do nothing that decreases that productivity.
- I will continuously ensure that others can cover for me, and that I can cover for them.
- I will produce estimates that are honest both in magnitude and precision. I will not make promises without certainty.
- I will never stop learning and improving my craft.
Some developers are somewhat surprised that Martin’s idea is causing such a ruckus. For example, web developer Stefano Torresi on Twitter:
— Stefano Torresi (@storresi) November 18, 2015
While Torresi’s tweet highlights the meaning and intent of the principles, the majority of responses to Martin’s ideas are negative. Software developer Mikhail Gusarov has shared his feelings on the oath, noting that the completed list is missing something very important:
Uncle Bob’s The Programmer’s Oath is awesome, but it is missing the final part:
11. I will not beg for food on streets after being ousted from 17th place of work in 4 months.
Over on Lobsters, a technology-focused link-aggregation site similar to Hacker News and Reddit, many critical voices are to be found. The practicality and selectivity of the oath has been troublesome for them in particular:
This is an oath about things 99% of programmers have 0 control of. If this oath is meant to make us all feel bad about the current state of software “engineering”, it does a good job.
That’s the oath of a programmer without deadlines.
Perhaps for some, but I found the Oath as clear as a foggy day
Users go even so far as to reject Martin’s attempt at guidelines:
I admit to submitting this primarily because my immediate reaction to it was disbelief and annoyance. That probably means that it’s a good discussion topic, right?
Developer Ariel Caplan was a bit more conciliatory on his blog however, agreeing that Martin’s undertaking in itself is a good idea. But Caplan believes that formulating a list of ethical guidelines for programmers shouldn’t come default with Agile principles, since some passages (especially points 5 and 7) contradict Agile software development or practical requirements.
For this reason, he has adapted Martin’s idea and come up with his own 10 points for the oath, similar to the Hippocratic Oath, and even involves aspects of society as a whole:
10. I will always consider myself a regular member of society with access to extra information and power. My skills give me no right to exert greater influence on other human beings.
What say our readers? Could you live by the established Robert C. Martin rulebook? Should we demand ethical guidelines for programmers? Or are both Martin and Caplan’s ideas over the top?