When I talk to newer developers, there’s clearly a struggle with impostor syndrome and the frustration of simply not having all the answers. I’ve had people ask me questions like, “am I smart enough for this?” and so many comments like, “I’m an aspiring developer.” from people who are building more complex software than anything I built professionally for a number of years.
I wish I could say that goes away just by gaining in experience, but I can’t tell you that without being a lying liar! 🤣 I’ve been developing software for nearly 25 years and have worked for a lot of companies on a lot of projects and still suffer just as much as ever.
My faith in my ability to build apps has increased drastically, but I still feel like I did early in my career: I’m always looking at other people who know things I don’t.
Tech is huge. There’s so much out there to see, learn and understand. It’s very easy to find things we don’t know. It’s the same for everyone in this field. When we see someone else who DOES know those things, it’s easy to feel like they’re ahead of us; they’re the guru and we’re just faking it.
Sometimes it’s hard to put this in perspective and focus on what I DO know instead of all the things I don’t. (Let me tell you… that’s a big list… 😛) It’s hard to stop looking at what everyone else knows, has achieved or is doing and, instead, focus on me. What do I know? What have I achieved? What am I doing that’s awesome?
When I was in school, I remember teachers and advisors telling me all these things I needed to know. Particularly as I had an interest in computers, they were insistent I had to go to university. I had to study calculus, because I’d use that all the time!
It got to the point I really started to debate whether I wanted to be a programmer at all. I’d been working on personal projects for a couple years. I’d even made some money building websites for people. But everyone kept saying I needed to be awesome at math and know all kinds of things I really had no desire to learn.
It was daunting. It was discouraging. In fact, it was enough I put programming aside for a while and did IT support instead. (Which is something I’m very grateful for, but that’s another story entirely!)
As it turns out, I didn’t need to know most of those things. I’m not working on advanced algorithms. I don’t use trigonometry or calculus on a daily basis (or ever, really..) I use some geometry and some algebra… and that’s about it. There are certainly some specialised branches of software development where more advanced math would be useful, but you don’t HAVE to learn any of this stuff if it isn’t your thing! You can still be an awesome developer with the skills and knowledge sets that ARE your thing.
I recently posted about failure, I’ve been talking a lot about this concept lately, as it’s not something many people want to talk too much about. We’re told in school that we have to do well. We have to get good grades and if we don’t, it’s too late. We’re built up to believe there’s some cut off point where we’ve just failed.
But failing and learning from our mistakes is part of growing. Just because you don’t know something today doesn’t mean you won’t know it tomorrow or in a year. You don’t have to know everything. What you do need is to know how to learn it when you need to.
There’s a huge amount of anxiety and stress around this in bootcamps and universities. Worry about not knowing every type of sort or recursion pattern. Fear about not knowing every command Git has or being able to recite off the top of the head exactly how to do a binary tree search.
I get it! Whiteboard tests are real. They’re also really crappy. (Again, a message for another time, but I really do hate whiteboard tests!) But most of these things you’ll naturally learn on the job. You’ll get used to them. In fact, I’d fail most whiteboard tests purely because I learned these by necessity and don’t know the names of half of them! But you can and will learn these things well enough to pass the test and get a good job if you stick with it.
When I talk to new developers and look at their Github repositories, a lot of them look the same. I’m really not interested in whether they can recite anything off the top of their head, or immediately know the answer to any arbitrary question or if they’ve got a repository for every single dev skill in the book they were learning from… I’m looking for people who have their own unique skills and interests.
Instead of worrying about everything we “should” know, I think it’s better to embrace who we are. Enjoy what you enjoy, learn what you want to learn and spend more time discovering what makes you happy. Have more fun doing personal projects that are zany and eccentric or if you love beautiful code, do that and highlight it. Build amazing solutions to mundane things or simple solutions to extremely complex things. Figure out what your thing is and focus on that.
One side of impostor syndrome is that we’re constantly comparing ourselves to other people… who aren’t us. In fact, most of the time we probably wouldn’t want to be the person we’re comparing ourselves to.
If you’re reading this and you’re a beginner to development, I’d like to offer a few tips that might help you put some things in perspective.
New developers are awesome. You’re so enthusiastic. You haven’t been siloed into a particular way of thinking and you bring a huge amount to the table simply by being new!
Ignore what everyone has told you about being a developer. (except me… clearly 😉) Your journey is your own. There are so many ways you can fit in and be an amazing developer that no one else’s experiences or knowledge will exactly mirror yours.
Don’t stress about job specs. I know, they have a huge shopping list of “requirements” on there, but most of those are simply not requirements. Apply for the job anyway if you think it’s a good fit. Write a great covering letter explaining why you think you’d be perfect for the job with or without those required skills! Cover letters are so underrated!
Learn as much as you can about the things that interest you. That’s how you’ll specialise. That’s how you’ll find what you’re great at. Don’t worry about what anyone else is doing. Experiment, if you decide you don’t like something you learned, try something new! Embrace those differences! They’ll make you stand out.
Finally… give yourself the credit you deserve. You’re a software developer. If you’ve only written the TODO app example or a small shell script, you qualify!
One last note: Kel and I talked recently on the podcast about building your CV/resumé and standing out. We talked about some of the topics in this article from a slightly different perspective. Be sure to check that out too! We may or may not also talk about unicorns in this episode… 🦄 So if that’s your thing… we’ve got you covered!