#51: Professionalism in Software Development - The Programmers Oath

In this episode I start to look at professionalism in software development.

Software development doesn't have the same level of professionalism & accountability found in Doctors, Lawyers or Architects.

In this episode I talk about why it is desirable, but unlikely to happen.

And I introduce the Programmers Oath - an attempt to start the conversation

Or listen at:

Published: Wed, 12 Aug 2020 16:03:16 GMT


The Programmer's Oath


[00:00:37] I want to talk about professionalism within software development.

[00:00:43] Within software development, there isn't really an understood form of professionalism, and it's something I want to talk about through the lens of an article by Bob Martin called The Programmer's Oath.

[00:00:56] Let's take a step back. What is professionalism? Well, for me, professionalism is a set of ethics, expected behaviors, expected quality, accountability. If you look at industries and professions like doctors, lawyers, architects, you expect a certain level of all of those characteristics. You expect a level of ethics. You expected a certain level of quality outcome. You expect accountability.

[00:01:28] Now to getting to one of those roles and to start practicing, you have to do a lot beforehand. You have to go through all of the processes, procedures, training to be effectively certified, that you live up to those standards and that you will then be held to those standards.

[00:01:48] Same isn't true in software development.

[00:01:52] Now, that actually might be a good thing for software development at the moment, certainly at the moment there are more jobs than there are developers, so making the bar higher to entry would actually make it very difficult for people to get work done.

[00:02:09] However, certainly I think there may be an expectation within employers that software developers are bringing that set of ethics. Are bringing that expected level of quality, that accountability, but ultimately there is no similar scheme that you'd get for a doctor, lawyer, or architect. Where a software developer can be held to those standards. And I think part that gets worse over time, because there's such a big move to software development, there's so many ways of getting started in software development at the moment, it's very easy to self teach yourself or go through a boot camp. Many, many software developers, including myself, never went through a university degree. We never went through a prescriptive course to talk us through any of this, any of the set of ethics, any of the expected behaviors, the quality, the accountability. None of us have been through.

[00:03:04] Even those have gone to university. They may have gone for this as part of their original syllabus. They may have gone through it then. But there's no way of holding them accountable to it.

[00:03:16] Let's talk about Uncle Bob Martin. He's colloquially called Uncle Bob because he's been around for a while, bless him. And he's a well-known software development thought leader. He's written prolific books and articles on code quality, how to get your software development to a better place. And he's unapologetic about his attempt to improve the quality and indeed the professionalism of software development. He was also part of the team that produced the agile manifesto that I talked about in Episode eight.

[00:03:53] Back in 2015, Bob tried to address professionalism within software development by writing the Programmer's Oath. It's a short article and I include a link in the show notes, but his intention was to use it as a starting point for conversation about professionalism within software development.

[00:04:16] So I'll read you the Oath;

In order to defend and preserve the honor of the profession of computer programmers,

I Promise that, to the best of my ability and judgement:

  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. 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.

[00:05:55] There's actually quite a lot to go through in that. That's nine separate elements that he talks about, some of them actually have much deeper meanings than maybe first seems obvious as such. I plan on looking at each one in its own episode over the course of the coming weeks.

[00:06:13] One thing I do want to talk about, though, at the moment is Uncle Bob's work will produce conversation and that's what it's intended for, is intended to spark debate. And as such, unsurprisingly, there are detractors to some of the items within the Programmer's Oath and indeed the Programmer's Oath itself. So I wanted to touch on some of those and just give you an idea of where people might deviate from Uncle Bob's thoughts.

[00:06:44] Some of the actions can seem to be prohibitively expensive. Some of these items potentially will cost more to actually follow through than any negative impact would cost. You could almost think of it as being a negative ROI to carry them for.

[00:07:05] And I can understand that some of these may seem like diminishing returns. And at some point, there will be almost for every single one of these, there will be a point where if you keep going, you're not going to see a return on it. That being said, I think you have to take into account the statement right at the start of the oath "to the best of my ability and judgment". Now, judgment really comes into this. You have to really be thinking about, OK, at what point is that enough?

[00:07:38] And I think that leads sometimes for people to consider some things that software developers are asked to do as gold plating, and it'll be interesting to see as I go through these in more depth over the coming weeks, which ones you personally would consider as gold plating, where software developers are asking to do too much, where there's minimal ROI, if anything, possibly even negative ROI. And certainly if your think there is back to me, I'd love to hear that conversation.

[00:08:07] However, in practice, I rarely find it's the case. I rarely find a system that has been gold plated to the point where they went too far. It's more often the case that people have used the gold plating argument and done almost nothing.

[00:08:23] So you think about this as a spectrum of being one end where you really are in danger of the system being unmaintainable, difficult to maintain, difficult to operate, difficult to release, full of bugs - all the way to the other end of the spectrum, which is gold plating. Most are much further at the beginning end. But that comes from personal experience. And again, it's knowing how far you need to take it, that sometimes there's ways and means of knowing, we talk about some of that as we go through some of those particulars oaths

[00:08:57] Bob unashamedly looks to try and encourage craftsmanship. He wants to make better developers. He wants them to develop the craft. He sees it very much, and I agree with him, that there is a level of craftsmanship that you can gain.

[00:09:11] So think about this in the same way as furniture making. You can start a very junior level and you can put together a table. You can go to IKEA and you can put together a table, but you have then a level of craftsmanship. If you look as you work your way up where people can make almost works of art out of furniture and OK, that might slip back into the gold plating conversation as to how far do you take that table. But you look at the quality of some of those tables and how well they work and how long they survive over the period of time compared to a piece of IKEA furniture, then you start to see the returns on them. And obviously, software development is a lot more complex than putting together a table.

[00:09:56] But again, I think that does come back to the best of my ability and judgment. So at some point, again, you need to be, as a developer, thinking about at what point I go, is this too far? And again, I'll come back to what I've said before, more than likely probably not.

[00:10:18] In the next episode, I want to pick up on that first Oath;

I Promise that, to the best of my ability and judgement:

  1. I will not produce harmful code.

[00:10:31] Thank you for listening. I look forward to speaking to you again next week.