During my time as an employee with Amazon Web Services, I learned about one of Amazon’s leadership principles): „Disagree and Commit“. Amazon describes this principle as follows: „Leaders are obligated to respectfully challenge decisions when they disagree, even when doing so is uncomfortable or exhausting. Leaders have conviction and are tenacious. They do not compromise for the sake of social cohesion. Once a decision is determined, they commit wholly.“
This idea became a crucial element for me also when it is about software architecture and design, specifically when you build a system with distributed teams and with many highly skilled and experienced people where everyone may choose a different design for a given problem. When it comes to making system wide design decisions in such teams, it is crucial that any decision taken is then also followed and implemented by those people who may have lost an argument. Not doing so may end up in systems that are inconsistent in the user experience, lack overall qualities or do not function at all.
You may now think, that it is obvious. I agree, but at the same time there is enough practical proof that in reality, people do not tend to follow this idea of „Disagree and Commit“. During my time at Amazon I underestimated the power of this leadership principle, today I now really understood what Jeff Bezos had in mind when writing this down initially.
Why is that a topic to discuss?
People argue and discuss different ways to solve a given problem or how to reach a common goal. That was the case since humans exist and will be the case in future, too, assuming that we continue to have a society that allows open exchange of ideas and values diverse opinions. So, all that is normal and valuable. Adding diverse experience and opinion during solutioning is crucial to find the best possible answer, but every discussion must come to an end at some point where decisions must be declared, otherwise there is no progress. And a lack of progress can end up in delays for hitting the right time to market or by not delivering enough value to customers. In a business context this directly relates to business outcomes, so consumed time for discussions is a factor of cost and it must generate a greater value on the other side to allow the organization to survive.
Once decisions are made, it is now crucial that all people involved follow the decision and do not silently follow their own agenda nevertheless. When situations occur where investments are done, going into different directions, the economic result can be very negative. Pieces of the system that do not really fit together, different strategic directions that may lead to inconsistent customer experiences and similar effects will be the result. Internally, such behavior destroys trust and collaboration with makes the workplace less attractive and generates a negative environment. Beside the negative impact on the human well being and cooperation, it so has a negative impact on the business result as well and ultimately can endanger the very jobs these people have.
So the problem is critical and it does not only affect the highest managers, but everyone in an organization who collaborates with others. And the issue became more relevant over the last years, where we curated a culture of collaboration with equal voices. As we do not want dictators who just direct the way alone, it became crucial to find a balance between spending time to find the best possible solution but also end this time, to not overspend. In my opinion, among all industries, this is particularly important in software engineering, since software is nothing else than ideas that are expressed in code. Brain to keyboard very direct.
Why it is hard for people?
In principle all this is easy. You discuss a software design or a strategy how to implement a system quality, a decision is made, you stick to it and code implementations follow the agreement. But humans do not work this way. Typically, in all such situations, there are people who lost an argument. They lost the discussion and other opinions won. This is a feeling of loss and defeat and your own ideas still stick in your head – also when you sit down and write your next few lines of code. Now it depends on the character of the individual how to cope with this. Do you feel angry? Is everyone wrong and you alone know it better? Are you able to let loose of your own convictions and can embrace the decision? Can you adapt to other people’s strategies and ideas? Does it feel like a lost battle or a chance to collaborate and grow your own skills? Not everyone has the mental strengths and discipline to accept a decision that does not go in line with own ideas and convictions. When we are honest to ourselves, we hate to follow other ideas, when we have a „better“ idea in our own head. It consumes a lot of energy to let go of our ideas and commit to the common decision, right?
And by the way, who made that decision? In an open and democratic approach, you would argue and discuss until there is a common sense or compromise developing, where everyone can more or less agree. You might write a paper that includes all different aspects and opinions and try to find a formulation that is very inclusive. This process can take a long time, depending on how far away the individual positions are. And often times, specifically in software designs, the smallest common denominator, the compromise, is not the most elegant technical solution. This is why most organization have clear hierarchies for decision making. There are developers, lead developers, architects, lead architects, product owners, chief product owners, line managers, senior line managers… all that, typically organized in a hierarchy that tells who may overrule whom with a delegation matrix. Modern management style, no matter if technical or business, should consider and mix different ways to come to decisions, but in the end somebody has to make a decision. It now depends a lot on how the decision is made, how it is communicated and how much was invested to motivate everyone to commit to it. Personal relationships play a large role in accepting decisions and how much of your own ideas where weaved into the decision making process. In the end it will be hard for people to commit to a decision when they don’t like the decision maker or where just not involved in the process and then don’t get good reasoning about the „why“. It will be hard to „disagree and commit“. Start with „why“ is therefore a great mental model when you are a decision maker and have to explain that decision to people who where not involved but now need to implement it. Simon Sinek became famous with this statement, see the original book here: Start With Why Book | Simon Sinek – Simon Sinek
An interesting personal observation – the more experienced and confident the people are who argue about the best way, the less likely is it that they come to a „disagree and commit“ conclusion. When you put three highly experienced and successful SW architects in one room (the best of the best), all coming from totally different areas of expertise and experience, to solve a system wide problem and define the solution architecture, how likely is it that this will end up positive with a common solution? To my experience, only if they are able to let go of some of their convictions and believes – so quite unlikely. It is another reason which makes it hard for people to disagree and commit: their own confidence, fueled by their vast successes of the past.
What can we do to make it easy to Disagree and Commit?
We are all leaders. At least we should all behave like leaders, unless you sit alone and do not work in collaboration with other humans at all. If not, everyone should strive for swift and yet well educated decision making. If you do not have the authority to make a decision, you can influence the people who have it and also work with your peers to ensure that all voices are heard. If you have the the authority, you can directly manage the process to make it easy for others to commit, even when they disagree.
I will not go deep now on which leadership styles you can use to foster inclusive and yet consequent decision making, for that I like to reference https://businessleadershiptoday.com/what-are-the-5-leadership-styles to get an impression. According to this article, the five leadership styles most commonly utilized are authoritarian (autocratic), participative (democratic), delegative (laissez-faire), transactional (managerial), and transformational leadership (visionary). Each style takes a different approach to leading others and has its own strengths and weaknesses.
Key to understand is, this works on all levels. When you write a class or component with another team mate, you can use these styles to discuss how to implement it, or which patterns to use. When leading a larger team of developers as a senior software architect, you can use these styles to navigate the difficult question how to reach security compliance to an ISO standard. As a top manager, you use these styles to find and define a business strategy for the next 5 years.
So, a common approach that typically works well, is to start with a very broad and inclusive style – the participative style for instance. Every voice is heard, nothing is excluded. Then, when time runs short and you need to shortcut the discussion, a more autocratic style might be useful where you say left or right, based on all arguments heard. Or you delegate that authority to someone else. This is a pattern I see often. But it only works, when you manage to keep an eye on the following:
- The broad collection of ideas and opinion is time boxed
- There is enough time and effort spend to derive conclusion and reduce the amount of options
- There is a clear time-line when the options must be reduced to 1 (or 3, which are presented to the next higher authority for decision making)
- You document the process along with the reasoning why you discarded some ideas and followed others. Trust me, people will forget the reasoning quickly, when they see a chance to change the decision later on…. And then you better have it documented – see 9 – Architecture decisions | arc42 Documentation .
- You are sensitive to detect dead-end discussions where no further information is added but the same arguments are repeated.
Now, when you finalize the decision making process to actually start implementing things (which may be after 10 minutes or 10 months, depending on the size of the problem), you need to explain it to people. Start with WHY this decision is important, why it came to this solution and why it is now crucial to follow the concept. Also tell them HOW they can act when they figure out that the solution does not make sense. There is always a chance that shortcutting a discussion in the interest of time, leads to bad decisions. Respect that and open a path for people to change the decision with good arguments. Keep the door open and use a mental model like this: „We stick to the plan unless we have a better one. And we change the plan only together, based on new facts.“.
Be sensitive for people who still disagree or resist. You need to spend time to convince them to get hands on the solution and give it a chance. Active coaching might be required, but also do use active listening to help people to find their own answers, not just tell them. If they cannot commit despite all of your efforts, it may be a good situation to consider if a move to another team or topic may be the better choice. Also that is a legal option.
What can you do as the person who has to „Commit and Disagree“
First of all, become aware that you are in a disagree and commit situation. Not everyone is always self-reflective enough to realize it, specifically if there is anger in the play about a lost argument or rejection of own ideas.
Monitor your own behavior. When you meet a trusted colleague in the kitchen, will you start talking badly about the people who made the decision? Will you undermine and discredit the people or decision? Or do you defend the decision and argue that it is not your favored way but you go with the plan anyway? You can learn best about your non-rational, emotional position for the topic when you talk to others, maybe over the weekend with your friends over a dinner.
Be aware that your emotional position and your rationale position may be out of synch for a while – even when you say „I disagree and commit“, your inner workings may object to that statement. That’s ok, try to explore the reasons. Do you trust the other people who made the decisions, or those who’s idea is now the preferred way enough? If not, why? Ask 5 times why when you sense that you don’t want to follow.
Get your hands dirty on the solution. Write code, draw diagrams and models, and give the decision a chance to materialize. Maybe you learn that the ideas maybe not as bad as you though (or felt). Often we resist against other people’s ideas until we actually try it out, because our brain invents stories that support our own position, which may not hold true once action takes place.
If you, after all of that, still can not commit, you need to take action. And there a 3 big options:
- Build an argument that explains – based on facts and experiments – why the decision was bad and which other way would be better. Talk to the decision maker, they should have an open ear for it. It is always an option to change plans based on new facts, but you need to invest time and energy to change the direction again.
- Accept it – that mean’s you just ignore your resistance and overcome the barriers mentally. This might kill motivation for a while, but be open and transparent about it with your peers and manager so that they know. Your Environment will support you and your motivation will come back.
- Leave the place – it may sound radical, but when the chosen way is so much different from what you want to support and work for, then it is valid option to consider this option. Nobody wins when your hang around demotivated or even start undermining agreed strategies and decisions. It will only end badly. So, be clear and transparent about the fact and maybe new, better options pop up unexpectedly. My advise here, try 1) and 2) before, really, before considering 3) to easily, or you might end up leaving places every 6 months – which also does not work.
In any case, speak up! Staying silent with your concerns is as bad as loudly discrediting other people. We need to stay respectful, inclusive at any time, but challenge the status quo with good facts and arguments. Standing in for your believes does not mean to be mean and without respect for others. And: respecting hierarchies and role authorities also is not a bad thing, in the favor of the greater good. Only open, honest and respectful communication will lead to the best results.
So, I like to invite you, everyday, try to reflect where you stand and if you are honest with yourself and your peers. Do you really „Disagree and Commit“?
Conclusion
„Disagree and Commit“ sounds easy but can be hard for individuals. If we fail to make it easy for people to commit, even if they disagree, we may run into substantial problems for the organization and the business. Everyone need to self reflect on the question if they really commit to agreed strategy or decision and take action from their own state of mind. Everyone is a leader and with that we all have the responsibility to be very inclusive in getting all the opinions, we need to embrace transparency about how all this opinion gets distilled and how a decision is derived from it. And finally we need to establish a culture of open, honest and respectful debate, to hear out those who have still the biggest concerns and struggle to commit. For those who can not commit, we should be sensitive to accept that in an respectful way; and discuss a way out. Sometimes it is better to move away and not stay in a place where you cannot commit and would start to undermine the agreements. Either commit and act like that, or challenge the decision publicly with new facts and try to find arguments to change the decision. But never, never undermine the organization by silently follow your own plans – it will only end in bad ways. Accept it, Change it or Leave it for the better.
