Getting Apps Done

Episode

28

1x
Listen on iTunes Listen on Spotify Listen on Stitcher Listen on Google Play Listen on Overcast Listen on Tune In Listen on Cast Box Listen on Pocket Casts Link to our RSS Feed

Am I Smart Enough?

May 30, 2019

Joshua and Kel take on the question “Am I Smart Enough?” Software developers, particularly new ones, are flooded with expectations, requirements, misconceptions and self doubt. In such a wide reaching and oft changing profession, it’s easy to be overwhelmed and question whether or not you’ve got what it takes to become a software developer. Spoiler alert: You do!
Be sure to check out our new Slack community to meet others who are facing the same things you are and understand the fears and frustrations you’re facing.

  • 00:01 Joshua

    Welcome to getting apps done. A mostly non technical podcast with the goal of helping you deliver software with your host, Joshua Graham and Kel Piffner. Okay. Um, so today what I wanted to talk about is something that came up in the Slack channel. Uh, somebody asked a question or particularly brought up a subject that is important to them and it's an important subject to a lot of different people. They phrased it as "frustration", but it's actually this concept that... in fact it's quite well known, it's called impostor syndrome. And they were talking about, specifically, "am I smart enough for this?" Talking about software development... And I think that's a really important thing to discuss and be aware of because even at a senior level, I can personally vouch that imposter syndrome is still an everyday part of my life. So I think it's very important to talk about it and to be aware of it and be open about it.

  • 01:02 Kel

    See, yeah, I actually don't really think of it that way myself. I think of it as frustration. So the very first statement there.... Um, yeah. For me it is much more of a like how I deal with the frustration of development and that's something I've been noticing teaching new folks to code lately is that the way you approach that frustration can be very different because especially if you're learning to code and you're starting to code and this is part of you like your job and you're worried about keeping that job, that becomes a lot of pressure to do really great right off the bat.

  • 01:34 Kel

    While it kind of makes folks worry about things that are just kind of normal day to day trouble, it's like coding is very much a constant challenge. It's you know, a new puzzle every single day and you won't get it every single time. It's back and forth and arguing with it and, and fighting the code and you know, all of the fun things that go into day to day life as a developer. And I've noticed that, especially those folks starting out that that's a huge struggle to overcome that kind of mind block, that backwards push of can I do this well, I'm going to be able to do this and instead really kind of, you know, the goal is to forget all of that and just literally get it done as if there were not a huge repercussions waiting if you fail.

  • 02:18 Joshua

    Absolutely. I don't think people are set up to believe that in the first place. I remember when I was in high school long while ago, teachers telling me, you know, if you want to get into these careers, you need to learn all this stuff. You need to know trigonometry and calculus and all these things that I never ever used in my career. And somebody actually mentioned that in the slack the other day. They were saying, you know, I didn't think I could get a career in development because I thought you had to know all this math stuff and I'm not that great at math. No, I, okay. Yes. I will admit I use some Algebra on a pretty frequent basis, mostly just ratios and things like that. Simple stuff that I learned, you know, when I was 12, 13 and I use some geometry because I do a lot of design and you know, I have to find right ankle. Sometimes it's about as hard as it gets realistically. And this is a word fairly technical career. Okay. I'm not working on Google algorithms or anything crazy like that. And it certainly in some niche parts of software development, it really is important to know your math, but to be honest, those are more math careers than they are software development careers.

  • 03:22 Kel

    Very true. Yeah, that's like a whole chat, like a whole conversation. All diets there with them. The importance of math or the lack thereof. But um, I'm kind of an oddball in that I have used quite a bit of advanced math because I did on electronic signatures and I needed to draw things. I needed to be able to analyze them. And all of those things were things I learned after the fact. Like I had to go bring open examples and do it into programming and even translating the actual math on like how you, how you can analyze those things was more or less relearning it. Like you didn't have to be good at it in the first place and yeah, I didn't have to learn all of these other subjects to get just that chunk of it that I wanted and so yeah.

  • 04:07 Joshua

    Yeah. And it's easier than you think it is when it comes down to it, that games building games was another one. I just, I thought, oh my, all that three d stuff and it's going to be really complex and there is some more math in that. Then there isn't a lot of the development that I do on a daily basis, but the reality is it was broken up into chunks. I was figuring out and learning new chunks as I went along. It wasn't just suddenly, oh my God, I need to know all of calculus and advanced geometry and no, it was a little bit here and there, but the way it should be, and you do learn it and you will get through it and the reality is I will go out on a limb and say every single person on this planet can learn those things. They may not be properly motivated, they may not want to, but they can. And you can too.

  • 04:50 Kel

    Yeah. I find motivation is a huge thing and like there's all this pressure not to fail, but there isn't always ain't matching pressure to just do things because you want to do it or because you know there's a goal that you're going to achieve. A lot of times it's you will be punished if you don't succeed. Yeah. Which is not a very good motivator as we have discussed many times. Absolutely. So that, that, that paranoia of it though kind of creates this downward pressure that keeps you from just being able to tackle a problem without worrying about the failure. And especially in programming like failures, kind of like a constant fact of life. That's, that's what your compiler does. Every time it tosses a red line under what you wrote, right? It's yelling at you because you have failed and that's, that's normal. Feedback's great. Failure or success is great feedback and you know, safe, safe feedback is very important.

  • 05:37 Joshua

    That's another way though that we kind of are set up to believe it's harder than we think it is. Because I certainly remember the first few times that I tried to compile something and I got these horrific ugly errors that just null pointers and things. If you don't know what a null pointer is, it sounds scary as hell. And it was, and I thought, oh my God, I'm Never gonna figure out today and point, oh well shoot man. It's just, it is what it is. It's what I do. It's part of life because I know exactly what it is, what it means. I know how to go find it. And it's not a big deal. But certainly early on when I saw something like that, it was a big, it was literally in big red bold texts telling me you screwed up, you suck and it can be really daunting straight off.

  • 06:21 Joshua

    And then you move on to getting a career and you start to look at, I was talking to somebody the other day about the sorts of things that they're seeing on these job specs and you know, huge list of requirements for entry level positions that basically I'm looking at this and I'm thinking, Oh crap, I don't know half of that. There's no way they expect you to know half of that. If you know half of that, you're probably well over qualified and you shouldn't be getting that job anyway.

  • 06:48 Kel

    Yeah, yeah. That's what, what you actually need to know is definitely a challenge with programming because like we just discussed like what experiences have you found and you know the solutions to that, that when you're presented to them with that same failure, do you know how to fix it already is kind of what people are really wanting to find out. Like how many of these problems, situations have you already dealt with and you know what to do in those cases and people are really bad at guessing which ones are, those are important, especially when it goes through, you know, a few layers of HR, a few layers of managers, few layers of, you know, whatever it is that you want to put on your job posting than the interviews. Then the, yeah, you end up with a lot of like arbitrary filters. It's very much like have you passed trig but you don't, you needed like one day's worth of lecture of trigonometry for whatever project you're working on. You probably didn't need an entire, you know, two years of of trig and pre trig to know how to do whatever it is that one thing is,

  • 07:44 Joshua

    Which is absolutely a valid point. I hadn't even kind of, I had thought of this before, particularly when I'm writing a job specs and trying to identify the things that I need people to have some exposure to, but say it in a way that while it is a requirement, they understand. I don't actually want you to be an expert in react. I need you to have some knowledge of it and I need you to have some awareness of it. But if you had been doing angular for the past five years and you're an angular guru and you've had some of awareness of react as well, that's plenty good enough. That's fine for me

  • 08:22 Kel

    That will be fine.

  • 08:23 Joshua

    Yeah, but and in all fairness, writing a job spec for that is difficult because I obviously you don't want to put that under a required section because suddenly people are going to start thinking, oh, well I must, I'll have to be an expert in that. I don't qualify for this at all. When actually what I really want to write down is I want you to have some knowledge of react. I don't want you to just read one blog post about it. I'd like you to have some hands on experience with, but it starts to turn into this whole paragraph and I had to have one of these for each and every single thing I want to put under the report section. Then I can't do, first off, I don't want to write that much junk posting and second it's going to get butchered. The first time in agency picks it up and they're just going to say, hey, he said react on them. That's required.

  • 09:03 Kel

    Yeah, exactly. And it's, it is really a challenge too because really what we're looking for is how long will it take me to train this new person to be useful immediately is like, really the key metric here is how much do I have to invest into them and kind of like finding that match where they don't have to invest that much. I don't have to invest that much. Like we're useful to each other. Right off the bat is always the kind of matchmaking goal with a job postings. And that's such a huge challenge depending on your own requirements, their skillsets, how much, like how, how big is your company? Do you have loads of resources to train people? Because at some point, you know, pretty much anybody can be trained to fit a role if they have the, you know, they have motivation to do it.

  • 09:44 Joshua

    Yeah. Spot on. And I that is a big factor in it is particularly when I'm hiring, we aren't a huge company. We don't have enough overhead is the key thing there to pick up somebody who has no idea how to program. So we had to have somebody who has certain eye idea. We're also fully remote company. And then this is another thing that I mentioned to somebody today, um, because uh, I'm currently hiring for a remote developer position and it's relatively, I wouldn't say it's entry level, but it's not too far beyond. But the key thing is a lot of people who are looking for entry level positions need a huge support group around them. They need a team around them to mentor them, to train them, to teach them and help them with those day to day things. And remote working, as we said in our remote working episode isn't necessarily the most conducive environment for that because you can't just tap the next guy and have him quickly look at your screen and say, uh, yeah, don't do that. It's a little bit more difficult. You have to plan around those things. And while it's possible, particularly in a small company, it's quite difficult because it's more time consuming.

  • 10:48 Kel

    Exactly. And that that time expenditure is really the challenge. Like how much time can you invest in these folks? How much time can you invest in bringing a junior developer up to speed and being useful? How much can they like? Yeah. And working remote just adds one extra layer to all of that one extra complication that you would hope to be able to avoid. But it is a little difficult.

  • 11:11 Joshua

    Yeah.

  • 11:11 Kel

    Um, and yeah, it is, it is a challenge

  • 11:15 Joshua

    That kind of leads into another piece that again is reiterating basically this concept that maybe you're not good enough because I have to reject these people. I, it's not that I don't think they can learn it. It's not that I don't think they're good enough. In fact, I am absolutely certain every single one of them with the right motivation could pick it up and could be really useful and could be of huge benefit to the company. It's not actually about them. I know this is horribly cliche. It's not about you. It's about me, and it really is in this case because at the moment I don't have the capacity to bring somebody who's at that level on and helps them however much I would love to and however much I have, every faith that they can, that is actually a problem with me and I'm going to have to reject them and that person's going to have another rejection. They may have sent 30 of these out, run into 25 people like me who... I have no problem with them... I think they are perfectly capable of doing it, but I'm not in a position to help them get there and that's reinforcing that concept that they're not good enough, that they're not smart enough and that's completely wrong. That's not really what it is at all.

  • 12:20 Kel

    Exactly. I've been, I've been talking to it as a numbers game very much lately. It's, it's very much finding that perfect match and it's kind of a stats problem at this point of just putting yourself out there more, but also just being prepared for the compiler to fail a compared for the red line. Like that should just be your expectation and your goal should be to be increasing, you know, change that percentage from 5% good to 6% or 7% chance. Like do what you can do, increase your chances without being like consumed over that success a consumed over getting, you know, getting that perfect job right off the bat. And that's not the most optimal answer to this because obviously a job isn't just about what you can do and what you can help for them, but also about, you know, food, shelter, all those norms, all those great things. And so this isn't the best conversation to have, but that is kind of where things are at.

  • 13:10 Joshua

    It is, and that's another thing that just adds to those fears because the reality is if you're at all on the fence, you think, oh, maybe I'm good enough. Maybe I'm smart enough, but then you're thinking, but am I good enough? Am I smart enough to pay my bills doing this? It's just another one of those things that it pushes a lot of people over that edge and okay, but you know what? Maybe I'm just not good enough to do that. And again, it's, it's not true and...

  • 13:35 Kel

    It's definitely not true.

  • 13:37 Joshua

    Kel was absolutely right. It is a numbers game and the reality is if you've got a 5% chance, while that sounds terrible, the reality is if you send out a hundred cvs, that's five of them that are going to respond. That's yeah, that's a lot of hunting and it is a lot of sending these out, but it's kind of what you have to do. The first one, hey sucks. It is what it is. But the reality is if you do get one of those five and they do turn out to be decent enough and you get a year under your belt with them, the next time your chances going to skyrocket because it goes from being 5% to suddenly 25% are in a position where they can bring you on, they can train you, they can bring you up to speed.

  • 14:15 Kel

    Exactly. It increases the percentage of folks who could hire you in the places where you could be useful right off the bat. So yeah, the first, the first shop is definitely the most difficult. And I think most people are pretty aware of that, that you know, your first, your first entry level position is by far the most challenging to get and most challenging to keep and the most where you have to learn the most all at once, that sort of thing. Um,

  • 14:37 Joshua

    But again, it's not about you, it's about that particular situation and position. You are absolutely smart enough to do this. You are good enough to do this and there's no reason for you to doubt that at all. Just go out and do it. You can and you will if you're willing to do it.

  • 14:54 Kel

    Yeah. Then kind of going back to our original, when you're talking about frustrations with things, I was really surprised the first time a new program or told me that they felt anxiety when their compiler, showed all the red marks, uh, and when it through an error message because that was something I never really experienced because I learned to program, you know, in the middle of nowhere on my own without any real feedback. So there was never any like, danger or pressure to succeed right off the bat. Like if it didn't work, oh well I'll go play video games. Um, but so that was a surprise to me. But the thing I try to get folks to think about is that it's not, it's not necessarily can you solve the problem? Because the answer is absolutely yes. You can solve the problem. What you should be getting a feel for though is how long it takes you to solve these problems because that'll be your fact of life as a developer is you're always going to have problems.

  • 15:44 Kel

    There are always... Nothing is ever going to be like a set in stone route to success. It's going to be, how do I fix this thing today? And getting a feel for how long things will take you most likely is probably the most useful thing you can kind of ingrained to yourself because then it won't be, oh, can I do this at all? It will be, Eh, can I do this in a week? That's probably pushing it. I might need to like, and that can also kind of boost your confidence of, Oh, I absolutely could get that done in two weeks. It's kind of a continuation of the thing I've always heard here in every single interview I've ever had where I ask a question and they don't know the answer and the first thing they'll say is, but I'm sure I can figure it out. Like that's the correct mindset. Yeah, and it's, it's the default program or mindset light, right? It's, I'm sure I can figure it out. I figured out all of this other stuff to get this far. So why not this one more thing and it's the kind of the same back from my point of view, it's, yeah, but can you figure it out in a month? Because that's when I need you to know it.

  • 16:45 Joshua

    Yeah, and you're absolutely right. That's the default position for developers. Most of us are in this because we like to solve problems. We like to figure out that next piece. We'd like to do puzzles. We like to work these things out. And that's exactly what a, somebody who's hiring is looking for it. It really is about whether we can get you up to a position where you can start to solve those puzzles and those problems in time that it's going to be useful to us.

  • 17:11 Joshua

    Now, the other thing to keep in mind here though is it's not unique to new developers. Absolutely. To this day, there are some times that I look at something new and I'm thinking, really? Am I gonna? And not necessarily at some stage you do start to get the experienced enough that you understand, yeah, I've done this a hundred times before and every time I've done it, so there's no reason I'm not going to this time, but he started to wonder, am I going to be able to do it quickly enough that is going to be useful this time or should I just stick with what I know? And sometimes it causes you to leave yourself behind even as an more advanced developer because that fear of that worry that, um, am I smart enough? Can I figure this out quickly enough and you're never alone. We're all in it. We're all doing the same thing every single day.

  • 17:56 Kel

    Say though that the day to day frustrations become more normal. Yeah. Yelling at code. It is silly documentation. The bad framework architectures though, just the normal day to day stuff that especially that you struggle at at new, when you're brand new, that never gets any better, but you get used to it then becomes part of the expectation and you will be just as frustrated, but you won't be worried about that. Frustration cause that's a frustration that's, that's just, oh it's that silly thing over again and you learn to deal with it and you learn, you know, ways to mitigate that. And so the frustration does get better kind of...

  • 18:32 Joshua

    There's a saying in running that I always equate to programming when it comes down to it and they say running never gets easier. It just gets faster.

  • 18:42 Kel

    Exactly.

  • 18:42 Joshua

    And that's a lot of what it is. I don't think if you're really pushing yourself that software development ever really gets easier, certain aspects of it will get easier, but then you start to add more complications and you add more stuff and it's still just as hard. But I do think one part that is directly related and what helps you get through it is it does get easier to believe in yourself to believe that you are capable of doing it because you have the experience, you know you have. It's the same with running the first time you go for a run, you really don't think you can do it. After several years of running, you start to realize, yeah, I've done it before. I'm going to do it again.

  • 19:17 Kel

    You can can handle a mile. It will be fine.

  • 19:20 Joshua

    Yeah.

  • 19:20 Kel

    It seems daunting at first and it's eventually not as daunting.

  • 19:24 Joshua

    It is absolutely the same that that first time, you know, the first time I went out running, I probably made it about 200 yards and then collapsed on the floor and the next time I made it about 400 yards. And uh, eventually over time it was miles. And if I can do a mile, well I can do two. And if I can do two, Oh yeah, sure. I can do a 5k...

  • 19:45 Kel

    I was going to say... most people stop after a couple of miles though. You just keep adding more. You never quite seemed to learn that you can stop now. It's fine.

  • 19:52 Joshua

    Well, you know, when the zombies come, they won't be me they're eating...

  • 19:57 Kel

    Endurance.

  • 19:58 Joshua

    Exactly.

  • 19:58 Kel

    Yes. Alright. Guess we should wrap up. I should apologize for the mic. I'm on a, a borrowed headset today. So audio quality might not be quite up to par from our normal episodes.

  • 20:10 Joshua

    Well, you're out teaching new developers. That's a pretty important thing. So I think we can forgive you a little bit of poor audio quality today.

  • 20:17 Kel

    Just a little bit.... Alright.

  • 20:20 Joshua

    Alright. I will put some transcripts up at gettingappsdone.com please be sure to check out my website at joshuagraham.info And Kel's website at piffner.com if you are worried about software development or you're on the fence or you're in a bootcamp and you're not sure if you can get through it, please drop us a note. Let us know. We would love to hear from you. We'd love to talk to you and encourage you and prove to you that you absolutely are smart enough. You are good enough to do this and you are going to be a really good developer one day.

Getting Apps Done

with Joshua Graham and Kel Piffner