3 Problems Every Developer Will Face
Published 3/14/2018
Every industry has its problems, and this is also true for developers and the people in that industry. In today's episode we're talking about three problems developers face in this industry
Today's episode is sponsored by Linode.
In 2018, Linode is joining forces with Developer Tea listeners by offering you $20 of credit - that's 4 months of FREE service on the 1GB tier - for free! Head over to https://spec.fm/linode and use the code DEVELOPERTEA2018 at checkout.
Transcript (Generated by OpenAI Whisper)
In every industry, there are common problems that people in that industry deal with on a regular basis. This is also true for developers. And you probably are associated with some of these problems. But the idea is that the industry is shaped in such a way that certain problems emerge. And they emerge not just for one person or for a few, but for almost everyone who becomes somebody in that industry in this case, a developer. So what are some of these problems? That's what we're talking about in today's episode. My name is Jonathan Cutrell and you're listening to Developer Tea. My goal on the show is to help you connect to your career purpose so that you can have a positive impact on the people around you. It's kind of the shortened version of the mission of the show. But truly it is to help you connect to your career purpose. And on the other side of that, to do better work so that you're going to connect even more closely with that career purpose. An interesting thing that will happen as you become better at what you do is that you'll start seeing your own purpose with more clarity. You can test me on this one. If you have kind of outlined your personal purpose, then there's kind of this reciprocal effect where you're going to do better work because you're more energized, more motivated. Whatever things that cause that, you know, I don't have a perfect explanation for all of the science. But certainly there is some research to show that if you feel connected to that work, you're ultimately going to perform better. But on the flip side, if you are performing good work, then you will start to realize your own purpose. It's kind of a strange dichotomy, a chicken and egg maybe, understanding what your own purpose is. Sometimes that comes as a result of you becoming better at what you do. That's what we talk about on this show, kind of vacillate back and forth between these two sides of the same coin and hopefully by pursuing both of these, you can come out of the other side having a positive influence on the people around you. So in today's episode, we're talking about some of the problems that you are almost certainly going to face as a developer. I want to take a step back before we talk about these, I'm going to give you a list of three problems today that you all certainly will face if you haven't already faced it as a developer. But I want to take a step back to remind everyone who's listening to this show of a few simple truths that hopefully will help you as you face some of the problems that we're going to talk about in today's episode. The first simple truth I want to remind you of is that you are not alone in the problems that you have almost without a doubt. Just from a statistics perspective, there is someone who has faced something very similar to what you are facing. And more importantly, there are probably a lot of people who have faced it and have persevered and come out on the other side. And if you are facing some kind of anxiety today, take a moment to realize that you are not isolated. This is such an important reality to remind yourself of. It's easy to tell yourself a story of isolation, to tell yourself that no one else is facing the same things that you are facing and ultimately you are alone. And you are an edge case that no one else knows how to deal with and therefore you're going to fail. The final outcome of this of being alone is that no one knows how to fix your aloneness, whatever issues that you're facing that make you isolated. And these are just simply untrue assertions. And almost every single scenario someone has faced either a problem exactly like yours or something that is so similar that all of the same principles apply. So I want you to take that moment, take a big breath, take a moment to recognize that you're not isolated in the issues that you are facing. The second thing I want to remind you of before we jump into these three problems that almost every developer faces is that your problems are not static. The people around you are changing, you are changing. The work is changing, the market is changing. And so the problems that you have today, well, they're changing too. And even if you feel like you're facing the same problem every single day, because change is inevitable, it is very likely that something is happening. Some kind of change is occurring. So there's a little bit of comfort in this because sometimes it can feel like we're running up against kind of a brick wall as developers are really as humans. We can always run into these things that feel immovable. But if we look around us, there are constantly changes happening in every part of our lives. Sometimes they are extremely small, but sometimes they are indeed drastic. So if you feel like you're stuck in a rut, then don't worry. Things are changing around you. Things are changing out from underneath your feet. And something will happen as a result of those changes. This show seeks to understand those changes, to predict them, to sometimes take advantage of them, and at the very least prepare for those changes. And the first way that you prepare for change is by knowing that it's going to happen. So you're already winning a battle today by recognizing that problems exist, but that everything surrounding those problems and the problems themselves, it's all changing as we speak. So again, you are not alone in your problems, you are not isolated, and things are always changing. So there's so much reason for hope in the face of the problems that you have today. We're going to talk about our sponsor, and then we're going to come back and give you these three problems that every developer pretty much every developer is going to face. Today's episode is sponsored by Linode. Some of my favorite services are the ones that keep it simple. Linode keeps it simple because the product is Linodex in the cloud. Now everything else that Linode provides makes that product better than the other providers of Linodex in the cloud. So they provide 24-7 customer support, for example. They also give you some extra tools to support your efforts on your Linode boxes. So you can actually get started for $5 a month. This will give you a gigabyte of RAM. And basically you pick your size, you pick your distribution of Linux, and then you pick your location. Now if you're wondering what location means, Linode has nine data centers around the world. This means if you have, for example, most of your customers are in the United States, then you can pick a location in the United States, which will reduce latency. And every single time somebody contacts your server, right, somebody actually connects to your server, they experience some level of latency. And sometimes this can be a major factor, especially if you require a lot of connections to your server. And having a geo-located server near your users can make a substantial difference in the performance of whatever application you are building. Linode provides so many other things, so many other features that are worth checking out. For any developer, whatever size your project is, they have something that you can use to host that project, to deliver that project efficiently and performantly to your users. Go and check it out. Have respect out of him, slash, Linode. Linode is providing you as a developer to you listener with $20 worth of credit. That's essentially a $20 bill in your pocket just for using the code developer to 2018. That's all one word developer to 2018. Thank you again to Linode for sponsoring today's episode of Developer Tea. So we're talking about problems that all developers will face. And this is hypothetical. Of course, it's possible that there's a developer out there who isn't going to face one of these problems. But I certainly have faced each of these multiple times in my career this far. And I expect that most of you have as well. I'm really excited to point these out. We talked about this stuff on the show before, but it's important to remind yourself and for new developers who've come to the show, these are problems that, you know, they don't go away. They don't just stop. You don't defeat these problems. These are recurring problems. This isn't like a common bug that you're going to find in your software. This is stuff that's going to affect your career sometimes in very substantial ways. You can make entire decisions when you're facing these problems. Entire employment decisions, major kind of career shifting decisions can happen as a result coming out of these problems. So I'm going to list them and then want to go into detail in each one of these. The first one is what should I do next? What should I do next? This happens both at the micro scale. Maybe you are listening to this podcast and you're procrastinating and you're wondering what you should do next today as in the next task you should complete. But it also happens at the macro scale and everything in between. What should I do next on this project? What should I do next in my career? What career moves should I make next? What thing should I learn next? We're going to talk about that more in detail. What do I do when I feel burnt out? What do I do when I feel burnt out? Number three, what do I do when I feel incompetent? These are incredibly important questions, incredibly important problems that you're going to face in your career at some point. And now that I'm reading these again, I can confidently say that at least everyone will face the first one. What should I do next? What should I do next? And this is such a difficult problem to answer. We did an entire series on this developer career roadmap. It walks you through. It's totally free. It's just episodes of this podcast. If you go to spec.fm, you can go and find the episodes of Developer Tea. We abbreviated DCR in some places developer career roadmap. If you Google it, you can find it as well. But this is a very simple roadmap to give you a tangible answer. But the truth is, no answer is going to be perfect. No answer is going to be a silver bullet. And you have to think of all of the decisions that you make, not in terms of trying to generate certainty, but rather in terms of a sliding scale. Figuring out what things you want to optimize for. Figuring out the things that you want to achieve. The outcomes that you are striving for. These are the ways, kind of the parameters, if you will, that you're trying to optimize for. So what should I do next? Well, there may not be a perfect answer to this question. For example, if you're listening to this around the time that it airs in 2018, if you were to come to me as a junior developer and ask me what programming language you should learn, I would probably tell you either Python or JavaScript. But the truth is, neither one of those necessarily is going to be the correct language for you. And in fact, your career could take a totally different path. You could learn closure or you could learn elixir. And those are both more functional oriented languages. You could learn Java. Java is actually still the most popular language when it comes to repositories on GitHub, for example. And there's a lot of answers to this question. No one is going to give you the perfect answer because you could learn a language that almost no one has heard about and so be successful. The question that you have to ask as a follow up is what goal am I trying to achieve by learning a language? Am I trying to achieve a new perspective? Maybe you already know a programming language? Am I trying to get a job? You can look at the marketability of programming languages. Am I already adept to thinking in a particular way? For example, if you are a scientific thinker, then you may lean more towards statistic-oriented languages. Perhaps one of the most important things to consider with languages specifically is what field do you want to end up working in? So these are the types of questions that you have to ask beyond what should I do next. Instead of asking what should I do next and leaving it at that and trying to get the opinions of everyone around you and relying on the latest thing to decide those, the answer to that question, I encourage you to take a step back and make a more formal definition of what you're going after. What are your goals? What are you trying to achieve? What is the outcome that you actually want as a process of your next step or as a product rather of your next step? Problem number two, and this is formed in another question as well. What do I do when I feel burnt out? What do I do when I feel burnt out? And the reality again is that there's no silver bullet answer to this question. But there are some things that science can tell us about burnout. The first thing that you need to do when you feel burnt out is take care of yourself and this starts at the physical level. If you haven't established a healthy diet, we won't get into details on that. But if you haven't established a healthy diet, an activity routine where you're regularly active, if you are staying closed in, if you aren't relating with friends and family or whatever other positive relationships you have, if you are only working and sleeping, then that can take a serious toll on your body. Now I'm not going to get into specifics here because this isn't a life hacking podcast. This isn't a nutrition podcast. It's none of those things. But I encourage you to stick with the things that have been widely recognized as positive health moves. Don't try to hack your sleep when you're in burnout phase. Don't try to go six days fasting when you're in burnout phase. Don't attempt some crazy new diet, some controversial practice. Don't try to overexercise. Even if some of these things could be beneficial in the long run, even if you do want to experiment later when you are at a more stable state, which I encourage you to do, I would not encourage you to experiment when you're in burnout phase. Recognize the unhealthy habits, the things that are obviously unhealthy. For example, if you are sitting at a desk, mostly uninterrupted for eight hours straight every single day, then you probably need to shift something, especially if you are in burnout phase. So this means getting away from your computer every 20 or 30 minutes for a minute or two even can make a huge difference. And very simple, simple things. If you are eating terrible food, if you're eating takeout for every meal or if you're staying up super late and waking up early, these are all obvious signs of unhealthy patterns. So listen to what your body is telling you, make sure you establish some of these healthy patterns. That's the first thing to start dealing with your burnout. Because burnout is a physiological thing. It may feel like it's only mental, but as you start to take care of your body, your brain will also be taking care of. Now again, I'm not a nutritionist. Don't trust the words that I'm saying directly. Don't try to establish your entire diet and lifestyle based on this podcast. That's not what we're trying to do here. What I do encourage you to do is recognize and change your unhealthy habits first. And again, we aren't talking about this being easy. I encourage you to listen to other episodes of this podcast and there are a ton of great episodes on other podcasts about forming new and better habits of replacing bad habits. So by no means is this going to be easy, necessarily, but dealing with burnout starts with focusing on taking care of yourself. And sometimes taking care of yourself is actually the only remedy you need. You may feel energized and excited once again, reinvigorated to do the work that you had already been doing. But if you are taking care of yourself and you're still feeling burnout, it's important to try to recognize what the source of that burnout is. So when you're feeling tired, when you're in a moment of pain or frustration, try to take note of the things that are frustrating you in that moment. And this may mean quite literally keeping a notebook that gives you that information later when you're kind of looking back on that moment. It's very difficult to recognize the source of pain well after the event occurs. So it's very important that as you experience these various emotions, these various frustrating points, then you take note of what is causing them and try to be as honest with yourself as possible. It's very easy to write something that sounds, you know, marketable for lack of a better explanation, marketable so that when somebody asks you, you know, what are your issues, what are you frustrated about? You can easily list this to them and it's not offensive. But your problems, your frustrations may actually be stimming from things that aren't really very attractive to deal with, right? They aren't easily packaged up. You may have some animosity or jealousy towards a coworker and it's important that you're honest with yourself so you can deal with those root causes of burnout rather than trying to perform through the burnout. And that's not going to get you anywhere. So it's important that you recognize that source of pain, recognize that source of stress and take note of it when it occurs. And ultimately that you're honest with yourself about that source of pain, source of stress. I would also highly recommend that you take on some kind of mindfulness practice. When these painful moments occur for you, when you feel that stress of burnout, if you have been practicing some kind of mindfulness technique, then you will be much more likely to be able to identify those things as they happen. And kind of see your mind from an observing perspective rather than an experiencing perspective. So it's very important in that burnout to recognize, first of all, take care of yourself. If you need to and that taking care of yourself, it may be that you need to recharge, take some time, go on a vacation or even stay-cation. Don't try to force yourself to leave town if you need a vacation from work. Sometimes the best place to vacation too is to your home. I've heard of a lot of people actually taking time to try out a new hobby that they've been wanting to try out. And this can definitely be kind of a rejuvenating practice. To try something new, to have a new experience, have something memorable, something that is totally different from the work that you've been doing that you can dive into with your mind. And then only taking a vacation and relaxing and ultimately being aimless, you may consider on that vacation, especially during burnout, doing something that fully engages your mind in a different way. And again, as we said with the first problem of not knowing what to do next, really this problem is kind of a sub-problem of that, right? Not knowing what to do next, when you are in burnout, you kind of ask that question, what do I need to do next to get out of burnout phase? And it could be that you need to reassess your own goals. You may need to take some time, take a step back from the work that you're doing or take a step away from the TV at night, for example, and spend some time looking at what your personal goals are, what your motivations are, and figuring out if maybe the difference between your personal goals and what you're doing on a daily basis, if maybe that's the source of your stress. And ultimately, what this ends up doing is that either solves the problem or it generates for you a clearer picture of the problem. And you need one or the other. You need to either solve the problem, which may be a very simple physiological change, the result of reestablishing a good workout routine or jogging on a regular basis or something like that. It could be as simple as that, or it may clarify the problem to you and you may need to have a crucial conversation with your employer, or maybe with a coworker that you're having issues with, or whoever it is that you have to talk to, but it may come down to a problem clarity as a solution. So the final problem that you're going to face most likely as a developer is what to do when you feel incompetent. What to do when you feel incompetent. Now, if you are a junior developer, or if you're a beginner developer, especially you probably resound with us, but surprisingly, as we covered in one episode, if you are an older developer, if you're a more experienced developer, you very well may go through this feeling on a regular basis. And I go through this feeling at least two or three times a week where I feel like my capacity to solve problems with code is not where it should be. And the strange thing is most Developer That I've talked to have gone through this regardless of their ability. Now, why is that? Why is it that we can feel like we're light years behind one person, and then when we go and talk to that person, they feel like they're light years behind as well. And as we talked about in that previous episode, I mentioned some of this has to do with your perception of your movement. In other words, you may be in a high velocity phase, but your acceleration has stopped. So what does that mean? Well, velocity is your movement with reference to something. So with reference to the non-coder, you're still a very capable programmer. You're still a very capable developer. But your acceleration rate is how much are you changing with reference to the last period of time that you changed. In other words, you're becoming a better developer. So it's not about necessarily about how good of a developer you are today, but rather how much better of a developer are you today than you were yesterday. So this can be the source of a lot of frustration. It can be the source of a lot of fear. And ultimately, kind of one of the driving reasons for imposter syndrome most definitely. So what can you do when you feel incompetent? The first thing I would recommend that you do is get some perspective, go and talk to another developer or listen to this podcast. Remind yourself that developers feel incompetent all of the time. Part of the reason we feel incompetent all of the time is because most of the time, the code that we want to write is broken. In other words, as we develop until we finish a feature, most of the time, our code is either incomplete or there's a bug in it. A lot of our time is spent taking that code from an incomplete or broken state to a fixed state. Most of our time is not spent looking and kind of meditating on the fact that our code is actually working. Very little time spent looking at that. Instead, a lot of the time that we spend is fixing things, looking at broken code, looking at failing tests, dealing with bugs, feeling like we are failing a lot of the time. And this is just a simple exposure problem, right? We're exposed to our failures more than we're exposed to our successes. And this is a very difficult problem to overcome. But if you listen to this podcast or you go and talk to a developer, another coworker, talk to your boss, let them know what you're feeling. Let them know that you're feeling incompetent. And sometimes, sometimes, and I hesitate to say this because I don't want to increase anybody's sense of imposter syndrome or feeling of inadequacy. But sometimes it means that you just simply need to go and seek some training. And it may be as simple as reading a book. It could be reading some online material, looking at a course online, maybe taking a free video course online. Most of the time, the resources that you need are available and they're free. And as a developer, it's very likely that you're already aware of that. And it's also likely that you realize that you always have to be learning in this industry to keep a flow, to continue having a job and to continue being relevant. But a lot of the time are feelings of incompetency. Come from the simple fact that there isn't just one way to solve a problem. This is a difficult reality that we as developers face, especially for problems that are not optimizing for one particular variable. It's not an algorithmic problem. You're not trying to write some kind of new sorting algorithm or something like that. Most of the time, the things that we face are basic design issues, software design issues that are mashed up. They're shoved into the same bucket as a budget issue. In other words, we have to make trade-offs. And very often, we feel incompetent when we're not sure what degree of trade-off we need to make. And this is a huge difficult problem that you're going to face many times in your career. And here's my real advice for you as a developer. Do the first thing that works. Do the first thing that works. Once you've done that, evaluate it. Evaluate it for its constraints. Evaluate it based on all of the variables that you know. Most of the time, doing the thing that works first will provide you with the information that you need to refactor it to the more ideal solution. Most of us get hung up on the idea that that first thing that works is not the right way. We feel bad about our code. We feel like we did something that was hacky. Or we could have done it more performance. Or maybe we could have used better built-in methods. Maybe there was a library that we didn't need to use. That we did use. And it's not as performant as we wanted to be. But ultimately, the first most important rule in your software evaluation should be does the software work. And if it works on day one, even if the solution needs to be refactored, that's better than waiting until day one hundred. Thank you so much for listening to today's episode of Developer Tea. We've certainly shared a lot of opinionated answers on these questions. These opinions are typically shared by most experienced developers. There are going to be some deviations. You're going to get other opinions. Somebody's going to tell you to try everything that you can. Try hacking your sleep. Try hacking your diet when you're in burnout phase. Somebody's going to tell you that there is an absolute answer to what you should do next. Somebody will tell you that feeling incompetent means that you need to go back to school or something like that. And this is why these problems continue to pervade in this industry. Not because those people are wrong, but because the answers are so hard to find. And the answers are so specific to your scenarios. So I encourage you to struggle with these questions, but don't struggle alone. Don't isolate yourself. We reminded you in the beginning of this episode, you are not isolated. Don't increase your own isolation. Don't choose isolation for yourself. Thank you so much for listening. Thank you again to Leonard for sponsoring today's episode of Developer Tea. You can get $20 worth of credit at Leonard by heading over to spec.fm slash Leonard and using the code Developer Tea. 2019 and check out. Thank you so much for listening to today's episode. I encourage you to subscribe in whatever podcasting app you use. But specifically, if you subscribe in iTunes and you give us a rating and review, that's the best way that you can help other developers just like you find Developer Tea. Thank you so much for listening and until next time, enjoy your tea.