DevQuestions with Tim Corey
I am Tim Corey. I teach coding online and my inbox is full of questions from current and future developers. I wish I could sit down with each of you and share the answers I know will help you go further, faster in the world of development. This podcast is the next best thing. On this podcast, I will answer the biggest questions people are asking! Send us to your suggestion for a future Dev Questions at https://suggestions.iamtimcorey.com/ To keep the podcast coming, like, subscribe, rate, and share it with your friends and colleagues. See why thousands of students have chosen to learn to think and code like a professional developer at www.DevForge.com.
DevQuestions with Tim Corey
214. Understanding How Opportunity Cost Affects Software Developers
Use Left/Right to seek, Home/End to jump to start or end. Hold shift to jump forward or backward.
What goes into making a great choice? How do I mitigate the negative impacts of the choices I make? These are the questions we will answer in today's episode of Dev Questions.
Website: https://www.DevForge.com/
Ask Your Question: https://suggestions.iamtimcorey.com/
Sign Up to Get More Great Developer Content in Your Inbox: https://signup.iamtimcorey.com/
What goes into making a great choice? How I mitigate negative impacts in the choices I make. In this episode, we're going to talk about opportunity cost and how to account for it when making decisions.
SPEAKER_00Welcome to the Dev Questions Podcast with Tim Corey.
SPEAKER_01Software development is more than just writing code. So let's talk about the rest of it. Opportunity cost is something a lot of people forget to consider. The easiest way to describe it is this. If you spent a month training in C sharp full-time, you've lost the opportunity to train in other languages. Every choice we make in life is at the expense of other options. If you go for a state dinner, you give up the opportunity to eat leftovers at home. That doesn't make the choice bad, but when making major decisions, it should be something that you consider. So let's look at some major decisions developers make when opportunity costs should be definitely considered. Now, the first major decision a lot of developers get into is how to become a developer. So the default choice I often hear is I need a college education. And that may be the right choice for you. But let's talk about that opportunity cost and what it might cost you in the long run. So a college education is going to take you probably four years. And if at least you're in the US, it's going to cost you a significant amount of money. Whether that is $40,000 or $140,000, it's going to cost you something. It will also take away time that you could be doing other things. So I actually have a training calculator on my website where you can go through and kind of play around with what does the opportunity cost look like? So let's think about this for a minute. It's going to take you four years of time. In that four years of time, you'll get an education, but you're going to pay $100 or you know, $40,000 to $140,000 or more for that education. So four years, let's say $80,000. Let's make it an easy number, right? So $80,000 four years, what could you have done instead? Well, one option is a boot camp. You could have gone to a boot camp in year one and spend $10,000 or $15,000. So now you have three years of time to get a job. And you have the experience of the boot camp, which costs you less than 25% of what your college education costs, maybe a lot less than that. So that's a big difference. And maybe that's a good opportunity for you instead of the college education. Or maybe it's not, but you should at least consider it. Another option is maybe you are pretty good at self-motivating and you decide, hey, Tim has courses. So I could take a course, I could spend $500 on a C sharp master course, do it with a course of six months, and then have three and a half years to get a job based upon that. And I will have paid $500 instead of $15,000 or $80,000 or more. That's another opportunity. A final opportunity is maybe you're even more self-motivated and you are able to kind of figure out and navigate the online free training landscape, and you say, you know what? I'm going to do things for free. And I'm going to go through Tim's YouTube, I'm going to go through the.NET YouTube, I'm going to go through other YouTube channels and kind of piece together my education. Maybe it takes you a year to get all that done, but you've saved the $15,000, the $80,000, or the $500, and you've got three years left to play with. So there's different options for you, and you have to consider the opportunity cost of each. Now, if you go through the college route when you graduate, what do you need? You need a job, right? And so four years later, you need a job and you have no work experience. So you're going to have to figure that out. Now, maybe you had an internship or something else, but let's just say you have no work experience at the end. Well, now you need a job and you're going to have to get a kind of a lower end job in order to get that work experience. Well, what happens if you went through the boot camp? Well, they usually try and help you get a job, and you get a job maybe two or two and a half years earlier than you would if you'd gone to college. So at the end of that four-year period, if you went through a boot camp, well, you've got two and a half, three years of work experience where the college graduation leaves you with no work experience. Or maybe you did the learn on your own or learn through a training course. Well, the same kind of thing can be true. You can go through that, spend less money, and potentially have up to three years experience by the time you would have graduated college. You see a different opportunity cost? Now, there's dangers here too, because maybe it's harder to get a job without a college education for your first job. That may be true. And so you have to have less opportunity than you would if you had a four-year degree. The question is, is that lesser opportunity okay? Can you still get a job somewhere? Or does it mean it keeps you out of the market entirely? What if it keeps you out of market for an entire year? So whether you go through boot camp, self-learning, or learn from a course, let's just say you have go through it in one year. Any of those options? Well, let's say it takes another year to get a job where you just can't find a job you're working at Starbucks. Well, okay, you're making something, you're not making nothing, but you're not getting work experience in software development. It takes extra time and effort and continual training and practice and building up your skills, but maybe you get a job in what would have been your junior year. So you have two years work experience, and you didn't pay that $80,000 in order to get that education. You saved at least $60 or $65,000, if not more. So there's pros and cons to weigh here. It may be the right choice for you to get that for your degree and pay that $80,000. Or it might be the right choice for you not to do that. The key is not to say this is the right thing. What you need to do is evaluate for yourself, because every situation is different. You need to evaluate for yourself what's right for me, what can I afford, and what am I going to give up intentionally? Because you know what? If that college degree is right for you, cool. You are intentionally giving up the other opportunities, but you're saying this opportunity outweighs the benefits of it, outweigh the benefits of other opportunities. And the downsides are less than the downsides of the other opportunities. So you just need to make an informed choice, but just saying by default, a college education is the way to go isn't a great idea because you're not considering the opportunity costs. So that's step one is when you're getting your education, figure out the opportunity cost. Now, this may be true for even a smaller section. Maybe you're just looking at, hey, I want to boost my skills in web development because I've been doing desktop development. Well, okay, you can learn on your own. You could, you know, take an online course, or you could go through a boot camp or go to a college and pick up a couple of classes. Which one has the best upside and the lowest downside for you? What works in your situation? It's up to you, but you need to evaluate those opportunity costs. The number two area that developers need to start thinking about the opportunity cost is building an application, which may seem odd because developers build applications, right? Well, yes and no. Developers know when to build an application and when not to. I worked at a university for a while, uh, about six years. And part of that time, I was the majority of the time, I was the IT director. And so we had to, we had a custom-built software application that ran most of the systems on campus, from admissions to academics to other things. It was a custom-built system. And part of my role was to maintain and improve that system. But I evaluated the opportunity cost and said, you know what? It's better in our case to buy this application. And you know what? It's not gonna be perfect. It's not going to be exactly what we want. And sometimes people get caught up in the idea of, but I want exactly this. And no one does exactly this, so I need to build it. The problem is you're not evaluating necessarily the opportunity cost. Yes, you could build an application. I could have built the application that did what I wanted to do. I could have improved the current application. You know, we could have built something custom that fit exactly what we wanted. But that would be the opportunity of being able to spend that time, energy, and money in other areas of the organization. And it really wasn't our primary job to build software. Our primary job was to train students. And so that wasn't what was best for us. And so the opportunity cost of building our own was just too high compared to buying something. This needs to be true for you as well. You could build tools for helping you do what you need to do. Sometimes it's the right choice. Sometimes maintaining those tools, the build timer initially and the main maintenance of it, is just too high compared to what you lose by doing that. For example, maybe you don't like JIRA. You say, you know what, I could build a better tracking system for issues and managing sprints and all the rest. I could build something better than Jira. It's simpler, it's it's easier to work with. And by the way, it's free. Let's put that male quotes, because no, it's not. Because if you spend one month, two months, three months building the system, that's one month, two months, or three months that you could have been building your product instead. And you might say, well, yeah, but it's it's reducing the friction of our application, our organization. Is it though? Because once you put that in place, what's going to happen next? It's not going to be, oh, I put it in place and everything's good, we're done. Well, no, you have to continue to update that. Maybe a new version of.NET comes out, you have to update that. Maybe new features are requested. You have to evaluate if you do them or not. It becomes a continual drain on your resources. That's why, as a company, I have a software developer, I have a web developer, I have a design team, and we think very carefully about what we build versus what we don't build. There are things that I want that we have not built. There are things that I want that I have purchased instead. Because the more things we build, the more time is taken up by maintenance, which means there's less time that I can devote to new projects or new things that I want. And so I have to look at what's the best use of our time, what's the best opportunity, and move towards that instead of focusing on I could do this, I focus on what's best. What's the cost of each opportunity and which one do I need to focus on? So that's number two, building an application. Number three for developers, you need to think about the opportunity cost of learning a new language. This is a really common drive, especially when you're starting out in software development. You have this kind of shiny object syndrome where you say, hey, there's a new language. Oh, I want to learn that. You know, I've heard great things about Go. I want to learn that. Oh, there's Rust. I want to try that. There's JavaScript, and now there's all these frameworks inside JavaScript. Let's go with those. What's the cost of doing that? You might say, Well, there's no cost. I'm just learning something new. Yeah, there is a cost because instead of learning how to use your primary language better, you're learning how to learn or how to use a new language at a very high level, at a to-do application only type level. Well, think through what those costs are. Because it's not just, oh, I learned something new, but I'm still at a you know an early level of it. It's okay, you got laid off in your position. How good are you at any language? If you say, well, I kind of specialize in C sharp, but I I've learned Python and Rust and Go and all these other things. And so you don't really have anything of depth anywhere. Well, you're kind of a new developer then. And that's how you're treated in the industry. Is you're treated as if you're a new developer rather than a skilled developer because you haven't gone deep in one language. So the opportunity that you gained was I learned something new. And that might be useful on a resume. It might be useful to say, I know JavaScript, even though I'm a C sharp developer. But you give up then the opportunity to learn your primary language. Let's just say it's C sharp. You give up that opportunity to go a little deeper into your primary language. And that depth will be really important when it comes to trying to promote yourself as a mid-level and senior developer. So you have to balance those two opportunities and think through what's best for me. Again, learning new languages can be valuable. And that might be the right choice for you. But just doing so because of the positive benefits without considering the opportunity cost can leave you with a really bad situation when it comes to switching jobs or losing your job because you're not in a position to move forward and advance your career because of the fact that you really didn't take a good accounting of that opportunity cost. So that's number three, learning a new language. Number four is when you focus on your current work. I see this a lot. Companies, you know, get so busy. I've got so much backlog. I'm I'm so busy at work. And so you focus on your current work. And you say, well, you know, am I in my job working on win forms in.NET Framework 3.5. That's what you have to do. So that's what you do. And you focus all your time and effort in that area. But then you don't grow your skills and you don't work on prepping for your new job. Just like the previous point, what ends up happening is you hurt your future in order to satisfy your work today. So focusing too much on your current job can cause problems when it comes to leaving that current job. So you have to balance that out. And sometimes that means that you look at your opportunity cost of your free time, where you say, you know what? I've got free time. I could be, you know, watching reruns of the office, or I could be learning to grow my skills in order to modernize what I can do. And sometimes the right choice is watch the office, relax, kick back, and you know, decompress. But sometimes that opportunity cost is too high because what ends up happening is that's all you ever do, and you never advance your career, which means you get further and further away from being relevant. And so you have to balance those two and find a balance there instead of trying to just only look at what I want to do right now and what's the positive instead of the positive and the negative of that choice. So this can also be true for companies where you focus on your current work, you focus on the current project, and you focus on the current way you do things, instead of picking your head up a little bit and saying, but the industry is changing. Let's change with it. And there's a balance there because when you focus on just what you currently do, what ends up happening is you get left behind as an organization. I've worked with organizations like that. They brought me in to say, hey, we put our heads down 15 years ago and all of a sudden we took our picked our heads up and we've been left behind. And it's kind of too late for a lot of the stuff we've done. How do we move forward? It's much more expensive at that point. And because of the day-by-day not thinking about the opportunity cost and focusing just on the current work, what happens is that cost builds up and builds up and builds up until it's a very expensive proposition that you need to at some point pay for. So thinking that those things through and evaluating the balance here is really important, both personally and at your job. Now, number five, the fifth thing that I think that is a big thing to evaluate the opportunity costs for is adding new features. So when you build custom software, and I'm speaking developers mostly here, so we build custom software, right? So when you build custom software, you're going to have bugs. You're going to have your the versions of.NET will need to be updated at some point. But you're also going to have a list of new features that people want. And those features will be important. They may even drive the business. So you need to figure out the opportunity cost of only ever pursuing features versus only ever fixing bugs and continue to upgrade your version of.NET. There has to be a balancing act there, and you have to evaluate the opportunity cost of every single feature. This is why open source projects typically do not allow you to just throw in new features as pull requests. They sometimes reject working good features. It's not because they don't like your feature. It's not because they don't want to have that in their application. It's because they know it's not just a new feature. It's a new feature with potentially new bugs, and it's something they have to maintain long term and continue to upgrade. There's opportunity costs there that are greater than zero. So you have to think about those opportunity costs and not just focus on the cool things you'll get with these new features. So those are the five major areas I can think of that almost always hit new developers or developers in general. But when you're thinking through anything you do, you should evaluate what's the opportunity cost here and what am I going to miss out on if I don't do this? And what are the alternatives and the positives and negatives there? Okay. So I hope they answered the question. Thanks for listening. And as always, I am Tim Corey.
SPEAKER_00Thank you for joining us for this episode of Dev Questions. When you're ready to learn to think and code like a professional developer, head over to IamtimCorey.com and enroll in a course.