ยซ All Episodes

Give Random a Chance

Published 10/13/2021

Random choice may actually be your best bet. At the very least, starting with random is a good exercise in self control, and will help reveal information more easily than intuitive guessing might.

Give random a chance!

๐Ÿ™ Today's Episode is Brought To you by: Auth0

Auth0 is here to solve your login problems, for good. Auth0 provides simple, secure, and adaptable login for applications and businesses, freeing you up to focus on the problems you are best suited to solve in your product.

You can implement Auth0 in your application in as little as 5 minutes. Head over to auth0.com to get started today!

๐Ÿ“ฎ Ask a Question

If you enjoyed this episode and would like me to discuss a question that you have on the show, drop it over at: developertea.com.

๐Ÿ“ฎ Join the Discord

If you want to be a part of a supportive community of engineers (non-engineers welcome!) working to improve their lives and careers, join us on the Developer Tea Discord community by visiting https://developertea.com/discord today!

๐Ÿงก Leave a Review

If you're enjoying the show and want to support the content head over to iTunes and leave a review! It helps other developers discover the show and keep us focused on what matters to you.

Transcript (Generated by OpenAI Whisper)
What do you do in the absence of information? How do you make decisions? In today's episode, I'm going to propose one possible answer, an abstract answer to this question. My name is Jonathan Cutrell listening to Developer Tea. My goal on this show is to help driven developers like you find clarity, perspective, purpose, and their careers. I want to paint a common scenario, a project planning scenario for you. You've probably faced this maybe even this week. Let's say you have a pool of optional pathways. You need your way to visualize this might be cards in your Gira backlog or a list of tasks. Or even a list of features that you're considering implementing in your product. Now, let's imagine that as you look through these features, they all seem relatively similarly sized, maybe some are slightly more involved than others, but there's no way for you to know for sure that any of them are in order of magnitude larger than any of the others. And there is no particular reason to believe that any one of these is going to yield more value than the others. What I'm really taking away is all of the grip that you might use for prioritization of these particular tasks. None of them are dependent on each other, for example. Oh, it's important to note that as I begin to list these things off, notice what you try to use as a prioritization metric. Or any of these tasks, something that, for example, maybe in your organization, might garner political favor or has some kind of interest beyond your team. And again, I'm going to take that away from you. Let's say that they're all politically similar and maybe the last piece of the puzzle, at least rationally speaking, might be that you look forward to doing one task or the other. Now, this is somewhat of a hyperbolic version of this scenario. More than likely, you would have one or two of these things. But it's very likely also that you would have competing interests. For example, you really want to work on one thing, but politically, you might gain favor by doing another thing. And maybe you have some data that says that a third thing would be the most beneficial to your organization. And you have to prioritize with those varying factors that are on different axes. But that's not the problem that we're solving today. We're solving the idea or we're talking about the idea of trying to prioritize any absence of information when all else is equal. How should we go about this process? We're tempted to add more meaning. We're tempted to create a justification. Very often this is the way that we approach prioritization, especially in the absence of information. Say, that we feel like one thing is going to be more valuable than another. We have a gut intuition. This is a very common kind of tool that product developers, product managers, and engineers all use. I feel like if we choose this particular tool, we will be better off than if we choose a different one. I feel like if we implement this feature, then it will be better than this other alternative we're considering. But I want to present another option, another way to make these decisions. And I'll give you a little bit of a hint before we go to our sponsor break. If you have worked with any kind of machine learning algorithms, in particular, a linear regression setup or even a neural network setup, you might already have an intuitive guess for what this method is. But first, let's talk about today's sponsor. Developer Tea is thankful for the support for today's episode from Auth0. Identity is the front door of every user interaction. Login experience is critical to a user's experience with your app. And as a software engineer, you've probably spent countless hours on this incredibly important interaction. And it's still not done. If you're like most teams, you don't want to spend all of your time on the login. In fact, you'd rather spend almost all of the time that you were spending on the login on your core product, something that differentiates you from other people. Maybe you don't have the expertise you need to make your login experience seamless or maybe you're concerned about security and the constantly evolving nature of login. And this build versus buy decision on login is really a no-brainer, especially as you start to scale your application. It's even better if you can solve this before you adopt a bunch of technical debt or hidden security issues with the homegrown login solution. This happens all the time, even when you think you've got your bases covered. Auth0 is here to solve your login problems for good. Auth0 provides simple, secure and adaptable login for applications and businesses, freeing you up to focus on the problems you're best suited to solve in your product. Auth0 supports virtually every style of login you could want. Social login, multi-factor authentication, single sign-on, password list, and much more. You can implement Auth0 in your application in as little as five minutes by heading over to Auth0.com slash DevT to get started today. Auth0.com slash DevT a thanks again to Auth0 for sponsoring today's episode of Developer Tea. In the absence of information, we often try to add artificial information. What this tends to do is buy us a decision in a particular direction. But in the absence of information, perhaps the best thing we can do is rely on chance. In other words, assign a number to each of the tasks or each of your options and then using something that is essentially random, doesn't have to be perfectly random. It's very hard to achieve, but something as simple as a little random number generator to pick from that pool. Why is this even an option? This seems like a crazy idea. But in fact, it's just as justifiable as choosing intuitively or adding information to the pool in order to choose randomly. Because in the absence of information, a random choice is just as good as any other. The important factor here is that you don't necessarily stay random. You use a random choice as a good starting point. In other words, you choose your first task randomly and then you try to evaluate if that particular task is producing the value that you expected. Maybe you learn quickly that it's more complex than you expected it to be. Perhaps there's another alternative option that's less complex. The important thing is not necessarily the specifics of what you're learning, but that you are learning and adjusting as you go. I mentioned before the break that if you've worked with machine learning algorithms, linear regression, neural networks, setting those up at a mathematical level, then you know that the initial waiting for a given regression model is random. You choose a weight that is random and then you allow the learning process in the case of a machine learning algorithm. This is some kind of back propagation or some other process, but you learn from the feedback that you get from the system and you adjust accordingly. There's a lot of conferred value from using a random choice. We'll talk about a couple of these things. The first conferred value is that you're relying on the statistical reality that over the course of time, a random choice nets out to somewhere in the middle. In other words, let's say that all of your tasks, maybe you have five tasks and they're each valued six, seven, eight, nine, and ten, you know, arbitrary points of value. But with a random choice, you're going to net out somewhere in the middle over time. If you were to average all of these options together, then the value ends up right in the middle and choosing a random option over time is going to distribute evenly across all of those tasks because you don't know which one is worth six points and which one is worth ten points by choosing a random option. You're giving yourself a better chance of distributing across them equally. The other thing that's important to recognize is that if you use a random choice generation process, you give yourself the opportunity to unearth information that maybe you hadn't considered. If the random generator chooses a task and you suddenly realize something that you didn't necessarily realize before, in other words, as you're talking about the task that the random generator chose, you quickly realize, maybe you have kind of a initial response that tells you more or less that this is not the correct choice, that there's something more important. That's information that wasn't necessarily available before. So it acts as kind of a forcing function if you have any latent opinions that you haven't shared, for example, to bring those out. Another thing that random generation and random choice of, you know, otherwise equal tasks provides is a speed of decision making. The speed of decision making is an asset in and of itself because you're saving yourself time. If you're trying to deliberate between things that are very close or at least you can't estimate a significant difference between them, choosing one to buy back your time, choosing one quickly is probably more important than choosing the most perfect option. Finally, on a bit of a more philosophical note, if you're listening to this and you feel uncomfortable with the idea of letting a random number generator choose what work you're going to do, but you don't have a reason why then this is probably a good exercise in testing your own ego. We all like to believe that we don't bring our ego to work. This would be something that we would be embarrassed to sell somebody that we choose our work based on our own pride or whatever other metric that has nothing to do with the outcome at all. And if we are testing our ego against this random number generator, then it becomes pretty quickly apparent. We'll feel a sense of a version to doing this based on an illusion of competency. The illusion is that we can somehow intuit the right path. But if you can't explain that intuition, it's very likely that the intuition itself is an unreliable metric at best. As you use a random choosing scheme, whatever tool you use to do this, it makes sense over time to introduce secondary ideas, introduce information, introduce data to help you make those decisions. But it's very likely that we can all benefit from a little bit more of a random voting mechanism in the work that we do to avoid pigeonholing, to avoid this cascading. We talked about in the last episode the illusion of agreement, the cascading ideas of group think to take over the way we make decisions. Thanks so much for listening to today's episode of Developer Tea. Thank you again to today's sponsor, Auth0, head over to Auth0.com. To get started today, you can get your application integrated with Auth0's super easy to use, log in system with pretty much every kind of log in you could want. That's Auth0.com. Thanks so much for listening to this episode and until next time, enjoy your tea.