The Programmer’s Oath

This article first appeared on dev.to. You can find the original discussion here

It’s everywhere !

Software is everywhere. In our cars, our planes, our computers. Our banks use software. We use it to communicate every single day, every single second. Our governments can’t pass laws without relying on software at some point. Hell, my grandmother even use software! She has a bank account, a car and some insurance! No one escapes it.

We, as programmer, have the potential to create great things to empower people with technology. We can make their lives better. Unfortunately, where you can do good, you can also do harm.

What would happen to our profession if a disaster happened because of us? A plane crashes into a football stadium because of a defective software? I mean, we already wrote some cheat code to allow a car to pass some pollution test ( Wolkswagen ). In our jobs, we have no regulation at all. Libraries, tools, languages… we can use whatever we want. If we show that we are not responsible with the code we write, and because our jobs are so important, the people in charge will most likely do the only thing that they can do: legislate.

They will tell us what degree we must have to code, what languages to use, what tools to use…

With that in mind, you may have heard about Bob Martin’s Programmer Oath. Recently, FreeCodeCamp released a series of short videos where Bob explains its idea of a Programmer’s oath. You can watch the first video here.

If you don’t want to watch, here is a quick summary of the 9 short videos.

 

The Programmer’s Oath

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 number of programmers that write code that could kill people is small. I certainly don’t. But, software kills, programmers kills. Don’t we owe this to ourselves and the people we are trying to empower to make sure that we are doing the best we can?

Before something terrible happens, shouldn’t we, as a community, independently of any government or organisation, manage ourselves and make sure that the people writing code are responsible, mature and respect an oath, just like doctors or lawyers might do ?

Should we have the right to tell to a person violating our oath: you can’t code anymore, you repeatedly produce code harmful to other people ?

Shouldn’t we have the power to tell our bosses and managers: NO, I will not do this, it violates my oath. And say this without any fear of losing your job, or your ability to do great work ?

As Bob Martin said in one of its lectures, Software runs the world. We may not have grasped this concept yet, but programmers run the world.

The very nature of the job market makes it easy for people to get coding professionally. I know this, I’m a self-taught, and I have no fucking clue what I’m doing 95% of the time. What if a person like me writes the code for your car? Your bank account ? Would you trust me?

What do you think? Is this overkill? I believe the idea of ethics is a fascinating one, and sometimes I can’t help thinking about the worst case scenario.

Feel free to share your opinion on the subject, either here or on dev.to

Have a nice day!

Your email address will not be published. Required fields are marked *

*