Don’t get me wrong, I do believe that some set of basic rules must exist. What I don’t believe is that they are the only way of fixing things.
Warning: this article will contain some philosophical and economics boring stuff.
I would like to start my rationale with a quote about politics I recently found which I think applies perfectly to this scenario:
I think we can interpret this as something like
Laws are only needed when values are not present.
Given some thought, that might sound a little harsh, but, let’s explore the subject.
Values and Economics
A well known example of absence of values is the Brazilian “culture”. Here, we have a law for almost every stupid possible corner case of almost any stupid thing any stupid human being might want to do. The result is a book of laws that no one really knows nor fully understand, full of “design flaws” “hacked” to innocent bad people - or worse.
Those laws exist mostly because it’s common here to take shortcuts to do stuff (like stealing from other people to “become rich faster”). Looking for the bright side, people can be really creative. The other side is that a lot of people use all that creativity to do bad stuff.
Giving this lack of good citizen values in Brazilian culture in general - which is extended to the government, we end up having a lot of laws.
This issue is also addressed in a economics book from 1944, written by Friedrich Hayek, called “The Road of Serfdom”:
(…) De Tocqueville’s prediction of the “new kind of servitude” when after having thus successively taken each member of the community in its powerful grasp, and fashioned him at will, the supreme power then extends its arm over the whole community. It covers the surface of society with a network of small complicated rules, minute and uniform, through which the most original minds and the most energetic characters cannot penetrate to rise above the crowd. The will of man is not shattered but softened, bent and guided; men are seldom forced by it to act, but they are constantly restrained from acting. Such a power does not destroy, but it prevents existence; it does not tyrannize, but it compresses, enervates, extinguishes, and stupefies a people, till each nation is reduced to be nothing better than a flock of timid and industrial animals, of which government is the shepherd.
That’s exactly what how it feels in Brazil, and, if you ignore the government part, this can be applied to almost anything - including industry. I worked for a company that make me feel that way too. That rules were necessary, mostly, because, well… people suck.
It seems obvious to me that we, as an industry, must focus on improve the people, not the processes nor the tools.
After all, programming is still considered by many people as a creative process, like an art or a craft. How can an artist or a craftsman do “their thing” if they cannot clear their minds because of a “network of small complicated rules” above them clouding their judgment?
David West also wrote about this in his book, “Object Thinking”. He defends that the solution is, in fact, better people. His writing is way better than mine, so, I will just quote him:
“Better people” has been recognized as the most promising silver bullet for addressing the software crisis, and yet almost all of our energy has been spent on creating better tools, methods, and processes instead of better people?
And, well, there is XP with pair programming and other techniques that are made to, in the end, improve the people.
But, what does “better people” even mean? For me, values. Let’s go back to the citizen example. One might say that to have good values as a citizen is to be honest, to follow and respect the laws, to respect other citizens and the authorities and to contribute to the country in some way.
I like to think that, to have good values as a developer is to take responsibility for your own mistakes, to want someone to review your code because you know you are not perfect and might as well commit mistakes like anyone else, to know that, like a musician, you are not paid to practice, but to create value to their customers, and, maybe more that anything else, to always want to improve as a human being and as a professional.
That last one is the most important for me, because, if you want to improve, you will find a way to acquire knowledge, which is also necessary to be a good professional. In this way, if don’t have the required knowledge to do some task, but have the values, you will find a way. That’s better than having the knowledge - or worse, believe in that without really having, and for example, point fingers to someone else when you do something wrong.
For me it’s plain simple:
good values = good people.
Rules… and Scrum
I do think that some rules are needed. Even open source projects usually have some set of basic rules to maintain the order, like, tabs or spaces, 80c, naming patterns and so on. They usually don’t, thought, have a set of complicated rules that predict how to port yourself in front of all possible situations.
I like to think that good rules can be automated and almost everything else is secondary. That’s why I don’t like Scrum that much. For me, it’s a good tool to improve one or more aspects of a given team.
For example, if the team don’t talk to each other as much as they should, by adding “rules” - or ceremonies, if you like, like daily meetings, Scrum can induce the team to create the culture of talking, until they are mature enough to realize that the ceremony itself is now useless - even if it was necessary one time.
This is nothing more than a “hotfix” to the real problem: the team doesn’t talk to each other as they should. Remember the very first item of the Agile Manifesto: “Individuals and interactions over processes and tools”. Scrum is just a tool. Focus more on “Individuals and interactions” than “processes and tools”.
The People, again
Remember that CASE tools which were promised to allow anyone to create a software by dragging some arrows and boxes? Just a few millions of dollars spent in the wrong problem.
That’s why there were that flaming posts like “Agile Is Dead (Long Live Agility)”. That’s also why - I believe, Uncle Bob, after publishing the “Clean Code”, published the “Clean Coder”, which focus in improving people behavior as professionals rather than the code they write. I also like to think that that’s why Agile was created, and, ironically, was corrupted into a set of certifications and tools.
That’s why, after the Agile Manifesto and its “Individuals and interactions” thing, the “Manifesto for Software Craftsmanship” was created, stating, among other things, “Not only individuals and interactions, but also a community of professionals”. I believe that the main focus of a community of professionals is - or at least should be, to share knowledge and experiences between their members, so everyone can improve as a professional.
Creating a new process is usually easier than fixing the real problem. It also gives you a sense of accomplishment quickly than fixing the real problem - if ever - would. That’s probably why there are more work related to fixing tools and processes than focusing in improving people who uses them.
That said, I would like to recommend you something: as a team member, doesn’t matter in which role, think twice before adding that new “simple process” to your already existing set of processes. Do a root cause analysis of the problem, find the real issue and act on that. Maybe you can also do that in the already created processes and find if there is something that can be removed. Do a “clean code” in your processes. Sometimes the root cause will be just the lack of knowledge. Other times lack of communication. It might even be a one-time thing that - by definition - will never happen again. Let me know what you discover.
- Clean Code, by Uncle Bod;
- Clean Coder, also by Uncle Bob;
- Object Thinking, by David West;
- The Road of Serfdom, by Friedrich Hayek.