Summary: GOTO 2017 - Robert “Uncle Bob” Martin - The Scribe’s Oath
In ancient times reading and writing was considered a highly specialized skill. This skill was practiced by Scribes. This allowed laws to be passed on, stock to be kept of grain stores, planning to be done of crop rotation.
Today programmers are the modern scribe. Almost all our important interactions happen through software that programmers have created. Interacting with a television, microwaves, computers, phones etc.
Scribes, as a profession, had an oath, a code of conduct and ethics as a group of professionals. We as programmers do not have these yet.
Since 1946 the number of programmers has been rising, Bob says to around 100 million in 2017. And he poses that this doubles every 5 years.
The facts say there are only 13 million, but growing with 20% each year. This means that there is a doubling in the amount of developers each 4 years.
That also means that the craft of software development gets continuously diluted by the influx of new developers. Which also might erode the ethics and standard implicit to software developers.
Our mishaps as developers are more and more visible. An example of this is the code written for Volkswagen to cheat the clean driving test machines. It’s a game of probability to wait for an incident that kills a considerable amount of people directly. He expects that more and more legislation will be introduced to govern software development.
Other professions like Doctors of Medicine, lawyers and bankers govern themselves. They do this with oaths, codes of conducts. These are generally used as guidance when creating more legislature. Bob thinks it would be great if we introduced this for programmers too.
He then continues to propose a Programmers Oath himself:
Programmers
Oath of Uncle Bob (link)
I will not produce harmful code (I will not release a defect & I will not make code for others harder to understand or change.
The code that I produce will always be my best work (I will not willingly release code that is defective either in behavior or structure).
I will provide with each release a quick, sure and repeatable proof that every element of the code works (write tests).
I will make frequent and small releases
I will fearlessly and relentlessly improve the code at any opportunity
I will keep productivity of myself and my team high (I will do nothing that decreases that productivity, I will not damage the code, I will not make things worse)
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
Comments
Post a Comment