Developer Tea

The Value of The Third Option

Episode Summary

In today's episode, we talk about how important a third option can be in decisionmaking processes. Today's episode is sponsored by Codeship! Get started today with Codeship and get 100 free builds. P.S. - Codeship is 100% free for open source projects! Head to https://spec.fm/codeship to get started today!

Episode Notes

In today's episode, we talk about how important a third option can be in decisionmaking processes.

Today's episode is sponsored by Codeship! Get started today with Codeship and get 100 free builds. P.S. - Codeship is 100% free for open source projects! Head to spec.fm/codeship to get started today!

Do you have a question you'd like answered on the show?

Email me: developertea@gmail.com

Episode Transcription

If you're like pretty much everyone else on the planet, you listen to music. And you probably also have similar feelings when listening to similar music. In particular, if you're listening to, for example, classical music, you may feel a sense of happiness or positivity when listening to one piece and then perhaps a sense of a melancholy when listening to another piece. There's a very interesting reality at the core level of music theory that makes this happen in our brains. And some similar principles or similar ideas can be applied to our everyday work as developers. My name is Jonathan Cutrell, you're listening to Developer Tea. My goal on this show is to help you become a better developer. Sometimes we talk about things that seem totally unrelated to development and then we try to make a bridge between those two ideas. And part of the reason we do this is because by creating new contexts, by connecting what seem to be totally disconnected ideas together, we come up with new ways of thinking. This is why we'll never stop learning because there's new things to learn in the context of other things. We have new knowledge as a result of taking two pieces of existing knowledge and combining them together. You create new perspectives on your existing knowledge. And that's exactly what we're doing today. We've heard thousands and thousands of songs probably each of us in our lives and perhaps never have considered this very simple concept. And that is this concept of positive and negative sounding music. This really comes from a very simple reality of music theory. And that is the harmonization of the third interval. You can Google this to learn a little bit more, but basically there's a very simple shift between a major third and a minor third, right? The major chord and a minor chord. If you are familiar with music a little bit and you probably have heard these terms, there is a very, it's actually a half step interval difference. And I'm actually going to play these so you can hear the very simple shift that makes such a big difference in the way you perceive a chord. For example, first we'll hear the major chord, then the minor, and finally the single note that makes a difference. And then the chord that's neither major nor minor. Okay, so now you've had your music theory lesson for the day, but how does this matter to us as developers? How can we learn from something like music in adding this third note? And quite simply, I want to talk about how important a third option can be. How important a third element can be. And we're talking about music. A third note can create an entirely different feeling in that piece of music. We can take this same concept and apply it to so many other areas. We're going to talk about those areas in just a moment. First, I want to talk about today's sponsor, Code Ship. Code Ship allows you to have more confidence when you ship your code that it's going to work on the server. Now, if you're a well-disciplined developer, then you're writing tests locally and your tests are running and you're running those tests before you push any of that code. But the reality is just because it's working on your machine, just because your tests are running well on your machine, doesn't mean that that code is actually going to pass those tests on the production server. And furthermore, sometimes you're going to forget to run those tests locally or you're going to accidentally push the wrong branch up, you're a human. You're going to make these kinds of mistakes. And CoChip helps protect you from massive, expensive problems like, for example, shipping that code to your production server, even though it should never have gone to your production server. This is exactly what CoChip does. It's continuous integration. It's hosted continuous integration to allow you and all of the other people you're working with, all the developers on the project, to use a single standard, a single hosted testing server as the gateway to the production or the staging environments. What this means is you can push your code to, for example, GitHub and your code will automatically be tested. And once that test passes, that code can automatically deploy to your live or your staging servers. CoChip comes in two variations. The first one works for most people on most types of projects. It's called CoChip Basic. It takes just a few minutes to get integrated. And then if you have a more complicated project that you're deploying, for example, through something like Docker or Kubernetes, then you can use CoChip Pro. This is going to ensure parity between your production and your test servers. So go and check it out, spec out a film slash CoChip. You're going to get 100 free builds per month. And you can get those 100 free builds on CoChip Pro or on Basic. And that allows you to test out CoChip so you can see for yourself how this changes your processes. Of course, if you are an open source project, CoChip is free and it always will be free to you. Go and check it out, spec out a film slash CoChip. Thank you again to CoChip for sponsoring today's episode of Developer Tea. So in today's episode, we're talking about the effect of the third element. We talked about how it affects a core to music. But I want to talk to you more about how the third element, the third option, the third ingredient can totally change things in your career. Very simple example. If you are in a technical interview and you're talking to the interviewer and they provide you with a problem and you start to solve that problem, I want to challenge you to provide three separate options for routes of solving that problem. Of course, the problem has to be sufficiently complicated to justify or even enable you to have three options. But assuming that the problem has three possible routes for solution, what I want you to do in your technical interviews and what will impress your employer and we'll talk about why it's just a second. Because if you can talk about three different paths towards a solution and each path's associated pros and cons, why three, not why not one or two. If you choose one solution very often, it's going to it's going to be either different or insufficient to actually solve the problem holistically. Furthermore, as an employer, I want to learn more about how you are going to think on your feet. I want to learn more about how you solve problems. Now unfortunately, some technical interviews are not structured this way. Some technical interviews are only looking for you to come out with a specific algorithm or some specific answer and it's important for you to try to learn what kind of technical interview you're in. Ask the person that is interviewing you even ahead of time. Ask them if they are looking for specific answers or if they want to learn more about how you solve problems. It's very important that you understand that going in. But for the most part, as an employer, it's more valuable to me to learn about how you solve problems. So if you only present one answer, that's not really sufficient for me to see that you have a holistic perspective. But if you only propose two answers, then very often what ends up happening is you accidentally create a false dichotomy between answer one and answer two. And typically one or the other of those answers emerges as the more obvious choice. If you instead present three answers, then you allow for all three of those to have competing values. So for example, if you are asked to and will make the example very simple, if you're asked to sort a selection of items, then you can open up the discussion about different types of sort and when one kind of sort is better than the other. You can even substitute your own parameter set. So if your employer or potential employer provides you parameters that are numbers, then you can also say this may change if you provided me with strings or this may change if you provided me with some kind of mixed data. One sorting algorithm may be faster for this thing and another may be faster for another thing. You could also talk about the size of the sorting set. And what this does is it shows that your knowledge on the subject of sorting is not limited to your ability to sort in this specific scenario. But rather that you can understand how the various sorting algorithms work for various scenarios. This is so much more valuable as a potential employer for me to see that you have a grasp on the holistic perspective of a problem rather than on one specific scenario. But technical interviews are not the only place when a third option can actually provide more value to you, even exponentially more value than just the first two options. In fact, when you find yourself in a situation, especially if the decision is very important, when you find yourself in a situation where you have to make any kind of decision, then often people find themselves in a negative scenario where either they have one option, which means they can either do something or they can opt out of doing anything at all, the inaction option. So that's really the one active option scenario. A second scenario is the two option scenario. And once again, we've talked about how this creates a false dichotomy where you pit one entirely against the other. And the problem with both of these scenarios is that very often they are not complete. They don't allow you to think completely. They create a bias in your mind, essentially, of trying to elevate one option or the other, trying to either tear down one option and build one up or vice versa. Creating the third option creates a new complexity that requires you to think deeper. Now, I want to be very clear. If you add a third option, simply as a task, right? In other words, if you add a third option that you know you're not going to pick, then you might as well not have added the third option in the first place because you're creating kind of a straw man option. And what that means is you create something that's easy to say no to so that you're back to the original scenario of only having two options. What you'll notice when you actually genuinely have a third option included is you're going to notice a much more complex evaluation of these three options. It's going to emerge as a much more complex evaluation, which means that you can be more honest with yourself and more honest about each of these options because you're not really pitting them against each other as much as you are trying to evaluate them. So this happens very often in elections. It happens very often when we are talking about priorities, for example, this is actually a formal fallacy when we only have two options. This false dichotomy or false dilemma. And you can identify when you've placed yourself in a dilemma or in an either or scenario by simply watching out for sentences that start with the word either, for example, either I take the job that I don't want to take or I take a job that I like and I can't pay my bills very seldomly will you actually be in a genuine dilemma. This example cuts out every other dynamic opportunity that may be on the table by simplifying and distilling the two options. There may be a hybrid option where you work part time in a job that you don't want to work in, but then you work part time in a job that you do want to work in. Or it may be possible that you own some kind of assets that you can sell to help you pay some of those bills off. So we've discussed now why having a third option when you're making important choices is also important. And I want to discuss a final scenario when we're having a third can totally change the dynamic. And that is when you're working with other people from a purely scientific perspective, when you are working directly with another person, mapping the communication loop between the two of you looks something like this. You have you as the message sender. Let's say you want to do something on a particular project and you compose the message to the other person, whether that's an email or in person doesn't really matter, but you create some kind of message and you send that message to the other person, right? Whether that's through once again, some digital format or in person. The second person acts as the audience to that message. They receive that message and they decode it. They try to understand what you're saying. And then they provide some kind of feedback to you and you become kind of the secondary audience, right? So this is a direct communication loop. And what you'll notice is if there is noise between the two, in other words, if there's some kind of interference, something that prevents the message from being clear from one person to the other, it's kind of difficult to diagnose. However, if you add a third person, this third person becomes an observer in this communications loop. They act as a secondary audience with completely different decoding capabilities, right? So because you have this third person who is acting kind of as an observer or maybe a quality assurance receiver of the message that you're trying to send, the quality of that message, or at least the decoding process of that message feedback loop is going to increase in accuracy. In other words, you're going to be able to communicate better. So taking it out of this scientific terminology and talking more practically, this is why having a counselor, for example, or having somebody simply listen to your conversation with another person can greatly increase your awareness, especially when that person is playing the role of mediator. This is the whole point of counseling. Of course, I don't want to simplify counseling because counseling does also often involve highly trained specialists in that area. But even having somebody simply listening or being involved in that communications process may help clarify messages that are otherwise misconstrued. Ultimately, adding a third to any kind of system increases the complexity of that system. Sometimes this can have negative effects, but for the sake of today's episode, I want you to actively think about times when having a third element in the system, how that can increase the quality of that system, how it may open up new possibilities, open up positive trajectories for you as a developer in your career, in your personal life, even in your own aspirations, your learning aspirations. If you're stuck between two languages, consider a third language. If you're stuck between two job opportunities, consider a third opportunity. If you're stuck between two schools, consider a third school. I hope this discussion on the complexity and the positive impact that a third option or a third element in your systems, what that can do for your career. I hope this has helped you today. If nothing else, I hope this has inspired you to think about the interplay in the systems that you are participating in. Thank you so much for listening to today's episode. Go and check out today's awesome sponsor, CodeShip. If you are shipping code to production and staging servers and you write tests, then you can get more out of those tests. You can become more confident about the code that you're shipping with CoChip. Go and check it out, spec.fm slash CoChip. Thank you again for listening to today's episode. Until next time, enjoy your tea.