Thought

My Programmer's Oath

Objective is to provide a public statement to state my aspiration and values similar to Robert “Uncle Bob” Martin’s Programmer’s Oath, on his Clean Coder Blog, in November 2015.

The Start

I realized I’ve been working on this idea though a variety of documents, tech talks, job postings, and profile descriptions.

I am committed to the continual learning and improvement of my craft as a Software Development Professional through the relentless pursuit of mastery in Extreme Programming (XP) principles of Test-Driven Development (TDD), Refactoring, Pairing, and Simple Design, and Clean Coding practices.

I want to use my time in this profession, to find ways of applying software and technology to worthy aspirations to help us be more human, more effective, and more intentional!

That’s a start, but there is plenty more to dig through.

Reflecting on the Original Oath

As I work through this thought process, I want to go through each of Martin’s original statements, documenting thoughts and questions with each reflection. Thinking about these as words we could offer as a promise to the world.

Uncle Bob frames the oath as a set of promises. These are the ones I am still working through, one reflection at a time:

  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 either in behavior 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 my creations at every opportunity. I will never degrade them.
  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 both in magnitude and precision. I will not make promises without certainty.
  9. I will never stop learning and improving my craft.

The first one I have started to unpack is the promise to cover for one another:

  • I will not create overly complicated code that cannot be maintained by others.
  • I will create code that can safely and efficiently be maintained and enhanced by others after I stop working on this codebase.

Open Questions

  • What if we had a “Programmer’s Warranty” that made a coder responsible for their code, even after employment?
  • Would that cause programmers to change how they work or make it easier to abide by the oath (skin in the game)?
  • Transparency: how I write my code, what resources I use, do I use machine learning, coding assistance from GitHub Copilot, ChatGPT, third party libraries like Resharper, Intellisense, etc.
  • How to address that most people appear to take on jobs or titles that are challenging, offer growth, and not necessarily that they have mastered? This causes conflict with getting into situations without having “done this before”.
    • When higher-level developers, architects, and leadership “try, but fail” is too tempting to find another job, abandon those who they were leading, and “try again.” Much harder and more painful to deal with the mess and then decide whether to move on.

References