Conf42 Chaos Engineering 2022 - Online

Learning to overcome the choice paradox

Video size:

Abstract

The focus of this talk resides in helping to diminish the anxiety of those working with software development. Here I focus on two aspects. The first, founded on learning and consolidating new ways of doing things. And the second on exploring and amplifying the options and contexts and how to apply them. These two aspects will be developed according to three levels of decision-making.

  1. Daily: Covering the small decisions that accumulate over time. From bad variable naming, small refactorings. It consists of those 30 minutes to one-hour detours that can make a difference (or not) ahead.
  2. Short-term: This consists of choosing the best tool for the job, learning how to calibrate and change the route midway, and avoiding investing more time than needed where you don’t need to.
  3. Long-term: This topic is about the challenging art of prioritizing and choosing. Here I’ll cover different ways your brain works and the main frameworks on making choices and feeling optimistic about it (even in the chance of making a bad one).

The most crucial point here is to allow the audience to have a healthy discussion about the uncertainty of results. I’ll cover how our brain works, lay down the basic frameworks that enable us to not freeze in front of the choices ahead of us. And so, move forward, adapting and learning with the outcomes we face.

Summary

  • Fabrizio is the CTO at Bxblue. He talks about how to overcome the choice paradox. Most of what on his talk will be based in the Paradox of Choice by Barish Watts. How can you avoiding CTO end up in these paradox of choice?
  • Our brain is very plastic, so it can adapt to its shape. The first component is our prefrontal contexts. The second part of our brain is the hippocampus. These two parts work together to help you make decisions. The best way for you to help is to make these two parts of your brain feel safe.
  • There is not always a clear choice and you have to work with other people to model your problem. You weight your choices and choose using one or more methods. There are hundreds of methods of choice or choosing. The modeling of these three criterias is what will help you guide you and choose in the end.
  • Remember to always store your information, take notes and always have a slot of time saved. Evaluate different methods of choosing and in the end, don't overthink. If you're overthinking, you are not choosing. It's better sometimes to make a choice and go with it.
  • Thanks a lot and I hope, hope you can reach me out and talk about your choice. I'm free to receive any comments. Reach me out on Twitter. Would be fun.

Transcript

This transcript was autogenerated. To make changes, submit a PR.
Jamaica make up real time feedback into the behavior of your distributed systems and observing changes exceptions errors in real time allows you to not only experiment with confidence but respond instantly to get things working again. Those hi, my name is Fabrizio and I'm going to talk today about how can we learn to overcome the choice paradox. Let me just begin introducing myself. I've been in love with code since 2002. This led me to can entrepreneur career. In 2005 I started my first company. It was a software company, ended up entering in these academia. I have my life as a researcher since 2008 needed up getting my phd and since 2011 I've been working with startups, both mine and some consultancy work. Right now I'm the CTO at Bxblue and I will share a bit of my experience avoiding and how to handle decisions in this environment that we live in. So why does this matter for us developers? So when we think about problem solving, we think about an analytical process that is used to identify the possible solutions to the situations that are in our hands. And part of the problem solving process is making decisions. So that's why I'm talking about the choice products today and problem solving and decision making. They are very intertwined and I'll show you here with an example. So imagine that you have to handle some payments and you right away is presented with a choice. You can choose to implement the solution of handling payments directly with your choices. So you can integrate directly with visa, with the banks, with many other credit card companies, or you can use some kind of gateway like stripe or PayPal. There are some advantages, there's some disadvantages with each of these choices. So let's say after you waiting everything up, you decide, okay, I'll go with PayPal. So right now you have another choice, how you scale this gateway, your payment options, there are so many different solutions and you decide, okay, I would use some kind of messaging system and you have other options for messaging system. You can use rapid Miq redis, you can use AWS sqs, you can use Kafka, that's so used right now. And you decide, okay, after waiting all these options, you say okay, I'll go with Kafka, and okay, so then you go to the team and say we're going to implement with PayPal, we're going to use Kafka. So what language should you use? Should we use Ruby, that is the main code that we're using today. Or should we use Java because we think it's more stable? Or should we try something new like closure or python that some of the members of the team want to try it out. After every new decision, you're presented with more options. And that's how we solve problems with code nowadays. You are always making choices and you are always making decisions. And how can you avoiding CTO end up in these paradox of choice? So most of what on my talk today will be based in this book, the Paradox of Choice by Barish Watts. It's a controversial book, so I'll try to stay focused on the main points of the book. So the book starts talking that we try to correlate autonomy and freedom of choice with our own well being. And we think that choice is also a critical component of autonomy and freedom. So we need autonomy and freedom to feel well, but we also need to have the ability to choice to feel that we have this freedom and autonomy. But experience shows that having more choice doesn't give us more freedom and autonomy. And we don't seem to be benefiting from this increase of choice psychology in our minds. So how can we see this? So the first way that we can experience things effect is with the so called buyer's remorse. So it's that sense of regret that we have after making a purchase, especially when it's something very important. And usually the choice paradox happens because we are trying to avoiding the buyer's remorse when we're trying to make a choice. We don't want to feel that after making that choice, we are going to feel bad afterwards. So things is one of the main hardships that we have when we are making choices. So let's see can example. So imagine you're looking CTO paint your house, and you have infinite amount of colors at your disposal. And you can think like if you make a simple choice, like, I'm going to paint my house gray, but there are so many different choices of gray. You have yellowish gray, you have saint gray, and you have many, many other options. And you can freeze when you're trying to choose this kind of what kind of paint you want. CTO paint your those. And you can try to avoid this kind of situation if you just have a simple palette to choose from. And this is what most people think when they are trying to choose. So when you're trying to paint your house, you start with a small palette or the color choices that somebody or your architect gives to you. They try to limit your kind of options so you can choose better and you spend less time choosing how to paint your house. And this amount of options can lead you to what is called analysis paralysis. Is when the fear of making an error outweighs the realistic expectation in making that decision fastly is the famous adash, perfect is the enemy of good. So you're trying to be perfect in your decision, and you end up making no decision at all. And what the book says CTo us, is that after these two components, we learned that having more choice does not equate CTO having more happiness. Why that? Because we think that freedom is the opposite of commitment. Because when we have the freedom of choice, we can choose anything. But after we choose, we have to commit with that choice, so we lose that freedom. That's why we fear so much. And we usually things that having less rules means a lack of choice. But that's not true, because when you have no rules, sometimes you cannot choose, because there are so many options that you don't know where to start. And sometimes having rules, like less options, can help you make that choice. For example, when Twitter started, they have only 104 characters, and it was just after the rise of the blogs. And you have so many creativity in Twitter because that restriction of 140 characters helped people to make more choices and CTO create more. And we see this every day with new platforms and other kind of rules that we create for ourselves and help us choose more. And lastly, the fear of missing out. So when we make a choice, we fear what we don't know, like which other choices that I should be considering, and I did not. So that's the last part. So let's look now how our brain handles choices, because it's very important for us to understand what mechanisms are inside our head when we're trying to make these choices. I want to start saying that I'm not an expert in neuropsychology, although talk about some parts of the brain. It's worth knowing that our brain is very plastic, so it can adapt to its shape. Not shape, the use of its shape according to its use. But I'll focus here on two main components. So the first component is our prefrontal contexts. It's the part of our brain responsible for reasoning. It's usually a part of our brain that consumes a high amount of energy. Our brain itself already consumes a lot of energy, but it's the most energy intensive part of our brain. Usually we believe that this part of the brain works very synchronous, which means that when we're thinking, usually we are thinking about this part of the brain because it respond to what we believe as our ego. But also it's a part of our brain that it's very low on memory. And when I'm talking about memory, it's about which concept it can hold at each single time. But you can be thinking, like, how can it be low on memory when I can remember so many things and I can hold these thoughts, these complex thoughts in my head? That's because the prefrontal cortex works with a concept of choosing. So when you're thinking about something, you don't hold that whole concept at once. You try to break it into smaller parts. So let's say I talk to you that I live in brazilian. So how can you hold things thought that I live in brazilian in your head? So you can imagine that we are in planet Earth. Brazilia is in Brazil. So it's in America, then Brazil, and then in the center of Brazil, it's where I live. And when I say that I want to travel to Lisbon, you make your head okay, so he's getting out of Brazil. He's going to go to another continent. Things other continent. It's Europe. In Europe, there is Portugal. In Portugal, there is Lisbon. So this chunking that we do with maps, when you're trying to locate ourselves, is the same thing in your hand. So we aggregate different contexts in different sizes, and we hold these small thoughts not at once, but in small chunks at each time. The second part of our brain is the hippocampus. So the hippocampus is usually where we store our memory. Our memory is not very selective because you can connect different kinds of information. You can connect and smell with an image, with a feeling, with a sound, and disconnections is what makes our memory work so well. Usually our long term memory, it's a synchronous. So when we are trying to remember something, not necessarily, you're going to get that information right away. So your brain is going to process that information. And that's why sometimes you're just out of the blue, you remember something, or a feeling overwhelms me, overwhelms you, because it's your hypocampus working asynchronously and bringing that information to you. So these two parts of your brain, they work together to help you make decisions. And there are some ways that you can help these two parts to work better. And the best way for you to help is to make these two parts of your brain feel safe. And when we say safe, is to ensure that they're using the best of their capabilities. Because when you don't bring the best of your memory CTO work, your brain is going to still be worrying about things. So that's why sometimes you're just working and in the middle of your working session, you remember that you forgot to buy milk and your whole flow state is broken. So how can you help your brain feel safer? So there are three things that you can do. The first is to store information outside your brain. And why that? Because your brain is not a very reliable place to store information, because it's going to always be worrying about what you forgot and try to bring it back for you in your prefrontal cortex. So write down somewhere that you believe that is going to be safe and you can find some later. This will calm your brain. Also have a process to review and reevaluate these notes so your brain knows that it's really safe. What you wrote down and these way you wrote down is understandable. So if you write down your notes and sometime later you come back and you don't understand, your brain will start worrying about what you wrote, so you will not feel safe. And the last part is to delay decisions. When you delay decisions, you're telling your brain, calm down, you dont need to worry about this right now. We can work with that later. But it only work if you can review and reevaluate. And you are storing these delayed decisions. So your brain doesn't have to worry that you forgot what you are delaying. So let's see some examples. So the first example is the most common for every programmer is variable naming. It's very hard thing to do, even though it's simple. So here, let's say I'm avoiding a method to evaluate a loan, and I have to evaluate the amount that a payment has. And I think that payment is not a very good choice of words, but I could not things of something else. So I'll just make a mark here, I'll just call payment avocado. And why that? Because I know that if I try to get things pr to production, I will not make it through code review. Even my own code review won't accept this. So it's just a mark for me to remember that after I finish my code, I have to come back here and I can just keep coding, finish what I have to do. And after that I can reevaluate this choice of words and can come with a better choice of words like stomach monthly value, it's much more clear. It tells me the time slot of that payment, and it's called installment, so I know it's related to the loan, so it's much more clear. So I delayed this choice and I made a better choice later. Instead of just breaking my flow of work and these small decisions, I find it helpful CTO work using the Pomodor technique because it follows the same process that we are talking before. That helps our brain to work better. So you have small work sessions, you write it down and you review afterwards and you have these time slots like every break your brain has some time to breathe and review what you're working with. So I find it's very helpful. So let's see a second example. Like imagine you have to deliver a new behavior in an existing feature and there is some code that you don't feel great about, but you are not sure how to act on it. So let's say it's again our evaluate long method with lots of code that you don't feel great. So my first choice is I'll just isolate the old code and code my new code because I'm sure how it should be done. And after I do that, I can then look at the code and see the pattern of what I think it should be and then I can just rewrite this code. In this case, I find that it'd be much better to use in this case observable pattern and just change the code to be more clear. But I delayed this choice later, after I just inserted my new code and I was sure about what change should be done. And let's go to my third example where imagine you are tasked with adding a new steps to a purchase flow and you should decide, should I go top down, bottom up or just go vertically slicing these problem? And let's see, imagine that you have this flow, you have a cart, and then you go straight to a payment flow and you are requested to start a new two steps in the middle that you should request documents. Then you have to process the information and you can go many ways. You can go top down and you first develop the front end for these two steps and you validate, then you develop the back end and you deploy everything at once. But imagine that these team is requesting that you should deploy it faster because they are having lots of problem with fraud. So you can say, okay, so I'll develop the whole request documents at once. I can give these documents to the antifraud team, they can start processing it manually while I've developed the automation about this, so I can give some value to the team and later on I can automate that. But they can say, okay, you cannot do that. We already have some documents here. So I can start with the automation and then go to the request. So there are many ways that you can approach this problem, but to depend on the context that you are within. And there is no clear choice here. And that's how we work. There is not always a clear choice and you have to work with other people to model your problem. And that brings us to how can we choose if most of our decisions, they are so complex. So there are some things that we can do. But I'll be honest, there is no single way to choose and no one knows how to make you go to a better choice, to a single optimized choice. But there are ways that can help you. So the first one is to use these same way that your brain works. So it's chunking you brain big things into smaller things. And these you can solve smaller problems into a bigger problem and compose that. Also you can ask for advice, ask for people that already worked in similar contexts and how they solve it. This will inspire you in how you can solve that problem. Not necessarily use the same solutions, but you can be inspired to bring your own solutions and know how their hardships can be met to yours. And lastly, you weight your choices and choose using one or more methods. And there are hundreds of methods of choice or choosing. You have pros and cons, you have AHP, you have contract analysis and many others. In my opinion, most of the methods, these are specific types of AHP, analytic hierarchy process. And I'll show you here how it works. It's basically a matrix where you have your options, your criteria, and in the end you weight your criteria to get to a ranking. In my opinion, the best part of doing this kind of process is to come up with criteria. When you're working towards establishing the criteria that will distinguish your alternatives, you come up with your problem model. And this is the best part, because when you're modeling your problem, you find out what really matters and it will guide you towards a better decision. Not always you have the best decision in these end, but you can find the best decision at that time. And also when you wait your criteria and you come up with the ranking, you can compare that and you can find out if that matches what you expected. So let's bring the first example of this talk. And let's say you wanted to choose which payment gateway you should use, and you end up with these three criteria. Familiarity of the team with that payment gateway, the coverage, consolidating the business and how pricing can affect you. And let's say you end up with this score and in this case, you have a tie in the second place, but you have a clear fourth place and a clear first place. And this model can help you understand how you can choose one here. You can say, okay, so people it is, it's the first one, you should choose it, but not necessarily. You can go and talk with other people and they say okay, so pricing is good and everything else, but I believe we can negotiate and get something better because I have someone that I know at stripe that can help us out. There is things incentive because we're a startup, so you can choose it or something like, oh, the coverage is okay, you give a tree, but it's not necessarily a these. And discussion can go even further. But the modeling of these three criterias is what will help you guide you and choose in the end. And you can negotiate with other people and end up with a better solution. So let's review what we talked today. So first, to calm your brain and bring safe safety into your mind. Remember to always store your information, take notes, always have a slot of time saved to review and reevaluate what you wrote and replan and establish a cadency of when you're doing this, when you're delaying your decisions. Also, don't overdo it. Look for help when you need it. Evaluate different methods of choosing and in the end, don't overthink. If you're overthinking, you are not choosing. It's better sometimes to make a choice and go with it. Experiment sometime and then you can come back and make a different choice. Remember, choosing, not always is a commitment. Sometimes it's just an experiment and you can come back and try other methods. So that's it. Thanks a lot and I hope, hope you can reach me out and talk about your choice, how you're doing, what you think, about, what we talk. Today. I'm free to receive any comments. Reach me out on Twitter. Would be fun. Thanks a lot.
...

Fabricio Buzeto

CTO @ bxblue

Fabricio Buzeto's LinkedIn account Fabricio Buzeto's twitter account



Awesome tech events for

Priority access to all content

Video hallway track

Community chat

Exclusive promotions and giveaways