First, align the vision and where you want to get. Then, just try to make things happen!
At Nubank, we have to deal with complex problems to deliver the good experiences that our more than 70 million customers expect. We need, by the end of the day, guarantee that our hypergrowth doesn’t generate bottlenecks. When we make growth projections, and when we compare them to our platform’s current limits, we face the need to anticipate solutions in order to avoid future problems.
Besides that, we also have our way to make things: something that we make very evident about our culture, which is composed of 5 main values. One of these values says that “we are hungry and challenge the status quo”, which means that an already existing solution may not be good enough, so we need to experiment based on the care of searching for the best approach and using it wherever it makes sense because we recognize the value of canonicity.
It’s true that these challenges become easier when we work with people that we admire because of their skills and high efficiency, as happens here at Nubank. To guarantee that these people collaborate in solving problems, it’s important to have a very good decision making, to benefit productivity and collaboration, avoiding unnecessary wear.
Having an aligned vision and priorities
There are a lot of possible problems and opportunities to work on, so the first step we always take is to align the vision of where we want to get with our priorities. This helps everyone involved to direct their energy to what matters the most, what enlarges focus and objectivity to the decisions we make. What would you do if you had to choose between targeting the main problem or choosing what to prioritize in a decision that brings trade offs?
We move fast
Sometimes we have data to base our decisions upon. But sometimes we work in scenarios that demand evaluation of every possibility, defining hypotheses and expected results. To keep experimenting, we often ask ourselves these questions:
- Is it possible to mitigate risks with a quick test?
- Is it faster to experiment a solution than to search for the data that can help making the decision? This way we’ll have learned that experimentation can help us.
Experimentation also works well with easily reversible decisions, such as the feature flag, making a feature available for a small group of people, something very common amongst nubankers.
Some decisions may be more complex or may have a lot of risks that won’t be mitigated easily. Even though experimentations, in this context, may help in the journey towards a better solution, a better alignment on the problem might be necessary to solve it, like looking at the decision criteria, thinking and evaluating multiple alternatives to agree on a solution before trying anything. Let’s check all of these factors calmly.
First of all, we’ve got to dedicate time to explore the problem space. We have to go deeper, surpassing the superficial problems, to evaluate the context under many perspectives, because, as our engineering principles say, “multiple perspectives build better software”. There’s a necessity to agree over the root of the problem and our main goals before exploring possible solutions. If people aren’t convinced of the problem, they might not be resilient when facing the multiple obstacles that can appear.
When you have a lot of creative people facing a problem, it’s very common to see diverse opinions. This, when conducted correctly, enriches the process. In order to keep the discussion collaborative, you need to make sure that you aren’t anticipating yourself and diverging when it comes to possible solutions. The team has to focus on converging about the problem and its priorities.
Decision Criteria and exploring Multiple Solutions
Now that we have agreed over the problem, should we choose the best solution? The answer is not yet. Defining the decision criteria of the better solution and the priorities can help solve future deadlocks. Having this attitude towards the problem brings objectivity.
When the people involved in the process understand what is solving problems successfully, they’re able to think of different alternatives.In this case, even a bad solution alternative can inspire different points of views and even give birth to a new good solution, when combined with a better one.
We are also used to create documents like Request for Comments (RFC) and Decision Matrix, to share the context, decision criteria, solution alternatives and, most importantly, to bring more people to the conversation.
RFC is a technical document used to describe context, problems, evaluated alternatives and the solution to be adopted. When we share this document, we clarify in which stage it is in: draft, under review or finished. RFC helps to organize the team’s thoughts, to ask for comments and to make it easier for future nubankers to understand the decisions taken, without having to investigate the decision made.
On the other hand, Decision Matrix is a table in which the columns are different solutions and the criteria for choosing the decision, ordered by the most important, are rows. The cell’s content is a brief explanation of how the solution can solve the selected criteria. It’s also possible to use the colors green (for good), yellow (for not so good or attention points) and red (for blocked cells), to make it more visual.
This discussion is also helpful to anticipate possible problems, improving the quality of the decision and bringing more confidence to everyone involved. This helps to both rationalize and recognize the tradeoffs.
When you have a Decision Matrix as the one above, it’s possible to see that the solution number 2 is better in some aspects and that the solution number 3 is better in another one. It’s even possible to think of a fourth solution, combining what’s best in the other options, to explore new paths.
Disagree and Commit
In the complex and ambiguous environment of this choice, it’s not always possible to find the best evident solution. However objectivity is sought, various factors can bring up subjectivities and preferences even in an unconscious way, such as unknown paths.
Whenever you’re choosing, it’s important that everyone has a chance to contribute and disagree. This way, whenever the solution is chosen, all the people will put energy into making the decision successful.
Obstacles will appear during implementation. Mature teams, however, will evaluate them as something that may justify rethinking the decision or not. If this is really necessary, the team just has to review the already existing documents to add a new criteria of choice in the Decision Matrix, from what we have learned with those difficulties.
As said by Michael Nygard in the article Documenting Architecture Decisions, architecture for agile projects has to be described and defined differently. Not every decision will be taken immediately, nor will it be made at the beginning of the project. Besides that, agile methods aren’t against documentation, they just give it less value. Whenever updated, it’ll always be helpful for the team.
Every person can and should be creating decision making strategies, because it saves the team time in the long run, by investing a little more in the beginning. That’s why we created a culture in which the most senior people and the leaders avoid being prescriptive. At Nubank, they develop people in discussion and decision making, growing teams prepared for the frequent, ambiguous and complex challenges that are part of our growth.