My thoughts on Rob Martin's Craftsman's Oath

My thoughts on Rob Martin's Craftsman's Oath

Contents
Share on:  
  

The oath (in the most recent form that I could find online) is as outlined below:

  1. I will not produce harmful code.
  2. The code that I produce will always be my best work. I will not knowingly allow code that is defective in either behaviour or structure to accumulate.
  3. I will produce, with each release, a quick, sure, and repeatable proof that every element of the code works as it should.
  4. I will make frequent, small, releases so that I do not impede the progress of others.
  5. I will fearlessly and relentlessly improve our work at every opportunity. I will never allow it to degrade
  6. 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.
  7. I will continuously ensure that others can cover for me, and that I can cover for them.
  8. I will produce estimates that are honest in both magnitude and precision. I will not make promises without certainty.
  9. I will never stop learning and improving my craft.

Here are my thoughts on this list. I think the list is necessary, but not sufficient. I mean no disrespect to Rob Martin or the others that have worked to refine this list. I think that Rob Martin sets a standard that we should all strive to achieve. I also think that, much like our code, we should fearlessly and relentlessly improve our set of standards for software development. I have noticed that there is a hidden beast that can also affect code quality that is missing from this list. That beast is communication. The surface is scratched with oath number 8, but I think it deserves its own bullet point. How often has bad code been produced as a result of bad communication? How often has a developer been blocked for weeks on end waiting for a deliverable from a stakeholder that should have been requested 5 weeks before it was even known about? How often has a business lead walked out a meeting without a clue of what was just explained? In my experience, the environment that produces the code has a profound effect on the quality of the code itself. So with careful consideration, I propose an addition to the oath.

  1. I will strive to find methods to effectively communicate with stakeholders. I will not allow stakeholders to be unaware of the technical aspects of the project, regardless of their technical knowledge. I will not allow myself to be unaware of the business and logistical aspects of the project.

You, the reader, may take or reject this addition as you see fit. I will be encorporating it into my oath like I have adopted the rest of this list, as well as the EGBC code of ethics. I still like the idea of ending this code of ethics with “I will never stop learning and improving my craft,” so my list eventually becomes:

  1. I will not produce harmful code.
  2. The code that I produce will always be my best work. I will not knowingly allow code that is defective in either behaviour or structure to accumulate.
  3. I will produce, with each release, a quick, sure, and repeatable proof that every element of the code works as it should.
  4. I will make frequent, small, releases so that I do not impede the progress of others.
  5. I will fearlessly and relentlessly improve our work at every opportunity. I will never allow it to degrade
  6. 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.
  7. I will continuously ensure that others can cover for me, and that I can cover for them.
  8. I will produce estimates that are honest in both magnitude and precision. I will not make promises without certainty.
  9. I will strive to find methods to effectively communicate with stakeholders. I will not allow stakeholders to be unaware of the technical aspects of the project, regardless of their technical knowledge. I will not allow myself to be unaware of the business and logistical aspects of the project.
  10. I will never stop learning and improving my craft.