Experienced Developers and Impostor Syndrome
Published 3/25/2016
In today's episode, I talk about impostor syndrome, specifically as it relates to the experienced developer.
Mentioned or relevant to today's episode
Today's episode is sponsored by Linode! Head over to Linode.com/developertea or use the code DeveloperTea20 at checkout for a $20 credit towards your cloud hosting account! Thanks again to Linode for your support of Developer Tea.
And lastly...
Please take a moment and subscribe and review the show! Click here to review Developer Tea in iTunes.
Transcript (Generated by OpenAI Whisper)
Hey, we want to welcome to Developer Tea. My name is Jonathan Cutrell and in today's episode, I'm going to be talking to you about Imposter Syndrome and when experienced programmers actually go through Imposter Syndrome. If you are an experienced programmer, it's likely that at some point you've had this feeling. And it's very likely that that happened early in your career as a programmer. Often as experienced programmers, that's what we would expect. We expect Imposter Syndrome to be associated with young developers, with being a beginner and maybe just beyond a beginner level. Maybe the first time you get a job and you walk in to a group of programmers, maybe that's when you experience Imposter Syndrome. We like to think that we're over that as experienced programmers, we like to think that we've gotten past this feeling that maybe we don't really know what's going on. But I know for myself that that's actually not true and in fact, I've had conversations recently that validate that with other experienced programmers that I know. So I'm going to give you today, but I believe to be one of the primary factors that causes a feeling of Imposter Syndrome in experienced programmers. And then I want to give you a few tips for how to escape Imposter Syndrome as an experienced programmer. But today's episode is sponsored by Linode. We're going to talk more about what Linode has to offer for developers later on in the episode. If you are looking for a cloud hosting provider specifically, if you run Linode, Linode may be the perfect answer for your situation. So we're going to talk more about what Linode has to offer for developer to listeners later on in the episode. But first, I want to talk to you about that primary factor, that main primary factor, in my opinion, it's more of a description of how this occurs in experienced programmers. And we're going to frame it through the concept of acceleration versus velocity, acceleration versus velocity. So the concept of acceleration versus velocities, one that is probably familiar to most of you, especially if you have your driver's license, for example, when you're accelerating, for example, when you're accelerating in a car, you are experiencing a rate of change. Let's say you're going from zero to 60, you are accelerating because you're actually going from zero miles an hour to one mile an hour to two miles an hour. And that change is increasing your speed is increasing over time and you have a rate of change. And you can feel that acceleration, typically, especially if you are accelerating relatively quickly. In fact, the feeling of acceleration can be so strong in the beginning that you perceive that you're going much faster than you actually are. And the same is true for beginner programmers. You may perceive that you are learning a lot of information very quickly and where this can come back and bite you, this is just kind of a bonus point here, and where this can come back and bite you is if you become overconfident. If you become overconfident that you are actually moving along faster than you actually are and that you can do more than you can actually do. Now if this sounds familiar to you, this is similar to the Denning Kruger effect, which we've discussed on the show in the past. So we are going to go in depth there. But the same kind of concept, the shape is applicable here. But if you're not talking about acceleration and instead you're talking about speed, well speed has no rate of change at a constant speed, whether that's 60 miles per hour or 6,000 miles per hour, the rate of change is zero. And here's the important part. When the rate of change is zero, it is difficult to know how fast you are going. Without external references. Let me say that again. When the rate of change is zero, unlike when you're accelerating and you can feel the speed, it feels like progress. When the rate of change is zero, no matter if you're going 60 miles per hour or 6,000 miles per hour, it is difficult to know how fast you are going without external references. Now as is true in a car, you cannot let your foot off the gas and expect to maintain the same speed. To maintain speed, you must expend some kind of energy. In fact, if you let your foot off the gas, it's the same as if you were doing the opposite of learning. You're falling behind. So what does this have to do with development? I'm not giving you a driving lesson here and I'm not giving you a physics lesson either. As a young developer, your speed may be very low. Your acceleration is likely very high. You are learning brand new information and typically that is happening fairly quickly. New information that you have had no experience with in the past and that rate of change is powerful. It's tangible. You can tell that you are learning and you're moving quickly. Now for an experienced developer, you're most likely solving similar problems on a regular basis. This is common for most development jobs. So your rate of change has decreased and you don't have much of a reference outside of your current situation to see that you are actually moving along at a relatively quick pace that you do indeed have powerful and valuable skills that you're still solving problems at a regular interval at a regular rate. So how can we avoid this feeling? This feeling of maybe I'm at a high speed. Maybe I do have a lot of value that I'm adding, but I can't really feel it. I don't feel that powerful feeling of acceleration. What we're going to take a quick sponsor break and then I'm going to come back and give you some strategies for reversing this feeling of imposter syndrome as an experienced programmer, specifically if it is caused by this dichotomy between acceleration and velocity. Today's episode is sponsored by Lenoad. With Lenoad, you can instantly deploy and manage an SSD server in the Lenoad cloud. You can get a server running in just a few seconds with your choice of Linux distribution, resources and node location. They have eight data centers for these node locations and their plans start at only $10 a month. On top of that, you get hourly billing with a monthly cap on all of the plans and add on services, services like backups, no balancers and long view. You can even have VMs for full control. You can log in as root. You can run Docker containers and cryptid disks, VPNs or maybe you want to run a private Git server. These are all things you can do with a Lenoad. They also have native SSD storage. If you're worried about speed and on top of that, a 40 gigabit network and Intel E5 processors. If you end up trying out Lenoad and you don't like it, they have a seven day money back guarantee. There's really no good reason not to try it. But there is another great reason to check out Lenoad today and that is Lenoad is providing you a $20 credit simply for using the code Developer Tea 20 at checkout Developer Tea 20 and you can go directly to the link linod.com slash Developer Teain that that coupon will be automatically applied to your cart. All of that will be in the show notes of course. And again, thank you so much to Lenoad for sponsoring today's episode of Developer Tea. And again, that promo code is Developer Tea 20 as always that code and the links will be in the show notes at spec.fm. So we're talking about imposter syndrome and how imposter syndrome relates to experienced programmers, how it shows up in experienced programmers. And I told you that the primary kind of driving factor in my opinion is this dichotomy between acceleration and velocity. When you're a young programmer, you're moving very quickly, but you've gone from knowing almost nothing at all about programming to knowing enough to build something, enough to see something in action to actually create something with code. And that change that acceleration is powerful. But when you are an experienced programmer, there's a lot of things that may become somewhat monotonous and you may not necessarily be learning quite at the rate that you were as a beginner. And this feeling of maybe being at a high speed, a high proficiency level, but not changing very much, you aren't really experiencing that acceleration that you felt when you were younger in your career. So this feeling, this dichotomy can cause this sense of imposter syndrome of questioning, am I really a good enough programmer to call myself a good programmer? Am I good enough to say that I'm experienced or to put on a resume that I'm an expert? So these are all the feelings that may creep in if you're an experienced programmer, but you don't have that high velocity of learning. So I want to give you a few tips for kind of avoiding this feeling when you're at a high speed, when you are indeed a good programmer. Number one, learn to recognize your own speed and if it's difficult to see for yourself, find an external reference. Learn to recognize your own speed and if it's difficult to see for yourself, find an external reference. So if you've ever been in a car that is traveling at a hundred miles an hour or let's say an airplane, this is a really common one, that's traveling 700 miles an hour, 600 miles an hour, if you've ever been in that situation and you haven't been looking outside for a while, it may feel like the airplane is sitting still in the air. I do this all the time when I go on flights across the country. Of course, we're flying very fast and sometimes we're flying in the clouds or flying at night and there's no external references and it's difficult to know just how fast we are going without that external reference. In fact, it's so difficult that you can quite literally fall asleep and not know the difference. So this is key. If you involve yourself in the process of teaching a new developer, teaching a new developer, this gives you an external reference for your own competencies. This isn't intended to show you how much better you are or more equipped you are, but instead to remind you of the work it took to get to where you are now. If you mentor a young developer, you're going to see all of these steps that you may have totally forgotten, you're going to show them some of the concepts that may have become almost muscle memory for you and it may give you that reference that you need to remember, hey, wait a second, I do know a lot about this subject. It's just buried. It's just become an automatic thing for me. So learn to recognize your own speed and if it's difficult to see for yourself, find an external reference for example, teach a young developer. Number two, become a beginner again yourself. Become a beginner again yourself. This is actually advice that I'm kind of stealing from Kent Beck, but becoming a beginner at something, choose something other than programming, regardless of what it is. For example, Kent Beck became a, he did some ballet. Becoming a beginner again yourself reminds you of what it feels like to be non fluid, to be in that kind of awkward stage where you're learning and you're trying to figure something out. When you experience the jarring feeling of being truly inexperienced, it may help you regain perspective of your stronger competencies. When you experience the jarring feeling of becoming truly inexperienced, of being truly inexperienced, it may help you regain the perspective of your stronger competencies. When you go back to programming from your ballet classes, for example, you may recognize once again, okay, this is, I am actually good at this. It comes fluid to me. This experience has paid off. I have two more very quick tips and that will round out today's episode. Number one was learn to recognize your own speed and find an external reference. Number two, become a beginner again yourself. And number three is take regular breaks that force you to remove yourself from the context of your work. I like to call this total shut down or mental evacuation. On regular basis, it's important that you totally remove your energy from programming, even if only for a few hours. This simple step of unwinding may help you gain new perspective on just how much energy you focus and how much you actually devote to the craft of programming. It helps remind you of the depth of the skill set you have acquired. If you climb out of the hole of programming, if you remove your mind, evacuate your mind from that really intensive process of programming, when you re-enter it, you realize how much and how deep it takes your brain, how much that work requires intense focus. And once again, this is going to underscore all of that work that you have done in the past to get you to the place where you can do that, especially on a regular basis. It takes a lot of skill and a lot of focus to be able to be an experienced programmer and expert programmer. So aside from the fact that taking breaks is good for you. It's just good for your health to not always be working. We're kind of ignoring that all of those other pieces of the puzzle there. But on top of those things, it will remind you of how deep that work actually is. And the last tip that I have for you today is to try and describe what you do to a non-programmer friend or maybe write down every tool and skill you've honed as a developer. In other words, describe what you do. Okay, so describe it from the very beginning, from its fundamental level. Describe it to someone as if they had never programmed before. And this is very similar to taking on a student, finding an external reference, giving a student the advice that they need as a beginner programmer. The idea here is to force you back into elementary parts of your craft and to realize that you've ingrained those skills. And that if you're an experienced programmer, you may actually be really quite surprised at how many skills you've actually attained over the years. And so actually going back and walking through each and every one of those skills in its fundamental elementary way. This is going to make you realize how much information you've actually learned over the years. This is going to force you into building that all the way from the ground up. Once you see the body of information that makes up the work you do, that should help you recognize, wait a second, I am in fact an experienced programmer. Here's the proof. Here are the list of things that I know how to practice. Here are the list of things that are in my brain that are kind of common knowledge to me now that I've memorized. And so I should note here that all four of these tips are really about perspective. They aren't about the output. They aren't about testing objectively what your output is. But instead it's about reinforcing what you actually know to yourself. Being a way of figuring out what that speed is by comparing yourself to your peers or comparing yourself to another beginner. There's a whole other set of information that you can gain by looking at your output. Are you actually successful? But this episode is focused entirely on the perspective side of things. How can I reset my perspective? How can I regain a perspective of myself that is realistic? So I hope that these four tips will help you if you're in that particular position. Learn to recognize your own speed, find an external reference, become a beginner again at something, take regular breaks, force yourself to remove your brain from the context of your work, try to describe what you do to a non-programmer or write it all out on a sheet of paper, explain to yourself what it is that you know. Thank you so much for listening to Developer Tea today. I hope you've enjoyed this episode. If you are enjoying Developer Tea, make sure you subscribe in whatever podcasting app you use. Thank you again to Leno for sponsoring today's episode with Leno. You can instantly deploy and manage an SSD server in the Leno Cloud. You can get a server running in seconds with your choice of Linux distribution, resources and node location. And on top of that, Leno is offering you $20 of credit just for using the code Developer Tea 20 or by going to Leno.com slash Developer Tea. Of course, the links for today's episode, including the Leno specific links can be found at spec.fm. Thank you so much for listening to Developer Tea and until next time, enjoy your tea.