Well, I can’t say if this text is about Imposter Syndrome or not. Most of what I read about it, explains the definition and try to give some advice to the others as a way to help them out. But my words here are just about some thoughts and feelings from my perspective as a developer. I’m 30 years old and started programming about 8 years ago. I have worked with a bunch of different technologies in a few companies in different teams, here in my country and also remotely with international teams, which is my current format of work.
Throughout my career, since the beginning, I’ve always felt like I was a step behind the others. Even today, when I have an opportunity to have a conversation with another developer, there is a big change I’ll assume that the other person is a level higher than me, so I try to speak the less I as can. I feel like I’m surrounded by lots of fingers pointing at me judging my lack of knowledge. Even though I know that it’s all in my head, I can’t get rid of it so easily.
I know that nobody knows everything, but without realizing it I catch myself having thoughts like “Damn, I’m doing this for years so I should know how to use Docker yet”, “I should clearly know why to use the JS framework X over Y framework in that situation”, “Am I able to speak with confidence about why Object-Oriented Programming is better than Functional Programming and vice versa?”. After all of these years programming, I also blame myself because:
- I don’t have vast knowledge in the current technology I’m currently working, when I think I should because “I’m an experienced developer”
- I have some difficulties to keep some basic concepts in my brain and discuss them (I’m actually embarrassed to write some of them down here)
- I’ve never worked with unit tests for real (I guess tiny projects on GitHub doesn’t count, does it?)
- I’ve never used any design patterns (or at least I wasn’t aware of using them)
- I don’t feel confident enough to do a code review properly (every time my pull request get some suggestions I think “OMG, how couldn’t I think this way? It’s so much simpler)
- I have difficulties to think about a project architecture from scratch
After reading this list you may be thinking “so all you have to do is to study and then you’ll get better on those points”. But, as every day there is a new technology coming up, the more stuff you have to study. Personally, I can start doing something on React, for example, but I end up losing the interest quickly and I just can’t keep going on. I have plenty of courses on my Udemy account but never watched the most or haven’t finished them. The same happens with tons of PDFs with tutorials and courses I used to keep and I’ve never read them.
Nowadays I see some job positions like “Senior Developer”, “Senior Dev Engineer” and “Tech Lead” and I think to myself “After 8 years, do I feel like a Senior?”, “Do I really have 8 years of experience or did I repeat 1 year 8 times?”, “The HR interview seems to be fine, as well as the coding challenges, but could I pass the technical interview?”, and I end up not applying to those ones. I’m more interested in positions like “Software Developer”, “Frontend Developer” or “Fullstack Developer”.
Another thing that bothers me a little, is: as 30 years old person, I cringe when I see those kids in their 20’s having hot discussions with other developers, giving good suggestions in the Scrum meetings or creating amazing stuff, like Dan Abramov who created Redux in their 20’s (I guess). Damn, they seem to be so perfect. Yes, I know that everyone is different and each one of us has different experiences, different background histories, and different personalities, but this pill is still hard to swallow for me when it shouldn’t. And please, I’m not mentioning this as a bad thing, it’s the opposite, I would like to be like them and whenever I can, I try to learn from them.
Well, these are just some confessions, and though it may look negative, maybe every developer felt, or will feel, some of those points I’ve mentioned here at some time of his/her career. We’re not perfect and every day there is a new chance to learn and improve ourselves. Sometimes I think that it’s more about self-confidence and less about technical knowledge because self-confidence will help you to bring more technical knowledge.
And that’s all folks.
Be curious, and don’t forget to drink water.
Latest comments (23)
Trust me, I felt each and every word in your Blog. As a beginner developer i constantly feel the same when i look at my fellow colleagues just scroll through tasks and complete them in a jiffy! The constant feeling that i dont have enough knowledge, kills the mood several times!
But what has helped me is socializing about it and being open to my colleagues. Asking for help is not a bad virtue, i believe it shows the learning atitude and thats what most of them want in their employees.... (I hope soo) :P.
Thanks for the Blog!
Jefferson you deserve a lot of credit for writing so open about yourself. I think that is very courageous.
I believe many developers deal with imposter syndrome at some point of their career. I was there too and it revisits me every time I take to long to finish a ticket at work or can't find the ideal solution for a problem.
That's normal, it is just a sign that you really care about your work and that you are a person that reflects a lot.
And it is also normal that you meet people that know more about a topic than you. Don't be shy or embarrassed by that, instead embrace it and try to learn as much as possible from those people.
I think it's a good idea to shift your focus on what technologies you know / don't know, to what kind of products you can deliver, and ultimately what kind of value you can provide to a business or other people.
Instead of thinking about how, well, you could learn X or Y stack, or improve deployment with Z, focus on what products you're capable of making instead.
Of course, you shouldn't completely stop learning, but focusing on what matters is a lot easier ;)
Yeah, you're completely right. As I replied in another comment here, sometimes we are so lost in an open sea of technologies and JS frameworks, that sometimes we feel like we're creating software for another developers, whereas the main focus should be the final user
Thanks for your comment :)
I LOLed. I don't think there is a single person walking the earth who has watched all their Udemy courses (or even a fraction of them) till the end. Udemy courses straight up suck 95% of the time because they always feature the obvious stuff for a prolonged time. They are made for absolute beginners.
Anyway, please realize the following: Dan Abramov isn't a better developer particularly because he created Redux. There are a lot of people who created some libraries or came up with some sort of technical implementation. Dan Abramov was fortunate enough that he did the right thing at the right time and it gained traction. That alone doesn't make him more knowledgable than you. You may close on this thought by saying he was at the right time at the right place.
Right now he is (re)learning JavaScript, particularly by teaching it to others. And by the way, the first sentence in one of his recent articles is saying exactly what you are fighting with:
What I would say though, is, that Dan is an excellent writer - maybe even better than he is a developer. I also think he has a few other, advantageous traits that helped him to get where he is now, but that's on another topic.
So relax. You're doing good. Dan is doing good. Everybody is doing good. Don't degrade or elevate yourself or anyone based on where you or anyone is. If you feel you lack some knowledge or some skill, isolate that realization from any judgment and expectation. Then go and look it up. Feel better afterward.
Your words somehow brought some relief to my heart. If I feel like a fraud it doesn't really mean that I'm a fraud. This bad feeling makes me not see what the good stuff I've done so far and the skills that I'm good in.
We're here to (re)learn by our mistakes, and that's beautiful :)
Don't worry, .. most of us feel this way I think.. in part because we are exposed to super smart people due to Open Source and the Internet. You get the feeling everybody are geniuses and that you don't know shit.
But trust me, you see the tip of the iceberg online.. most people would never dream of publishing anything.
The fact that you even wrote this article proves you are way beyond the average /s
Your perspective is very interesting. We forget that not every developer has a GitHub account, give lectures or write articles, for example. I just wrote this article because I thought "I can't be the only developer feeling like this". But I couldn't imagine to reply any comments so soon. It's awesome.
And also it's good to know that even some of the "top of the iceberg" already felt like a fraud at least one time during their careers like I read in the other comment here.
By reading the comments I'm feeling I'm going on the right path by not giving up and trying to cope with those bad feelings :)
See it as a good thing, it sounds like you are surrounded by people that can teach you stuff and keep you engaged.
As long as you have interest in your work, I wouldn’t worry. :)
I think I might have felt the same around my 7-8’th year as a developer.
Now I am on my 13’th and seniority and accumulated knowledge just kinda snuck up on me.
It's good to hear that from another experienced developer. In the end, we are doing a good work but this sense that "I'm a step behind everyone" is very bad. I think the secret is to know how to cope with this kind of feeling just by knowing that we can't know everything about all, and that's okay since you're doing what you love :)
Ps, I still feel humbled by others quite frequently, in fact, problably more now, since I am more aware of the soft knowledge gabs.
You are not alone with this problem! Be kind to yourself. There are so many ways to be a good developer.
I'm terrible at keeping up with the latest frameworks. However, I see that as a personal strength -- it allows me to focus on the user and communicating ideas and solving problems. Things that I would consider timeless.
Other developers enjoy keeping up with the latest and greatest technologies. That's awesome. They can help me, and I can help them.
Is there one part of development that you really enjoy? Or that you're strong at? If so, try building around that.
I like when you mention about "focus on the user", there is another comment here about focusing in the user and it makes me think that sometimes it's like we're creating software for other developers and not for the users, whose should be the main focus.
A couple of years ago I was in a meetup which the speaker told us something like: "If you're more concerned about creating the next JS framework than making the people's lives easier, you're like a Civil Engineer that builds houses only for other Engineers to live. Programming is much more powerful than you think, use this power!".
Currently I'm working as .Net developer, but I like Frontend more. While I can't switch my position I like to give some shots on GitHub, building silly stuff for practicing my Frontend skills.
So true. Programmers who can put themselves in the users' shoes are extremely valuable. It's just as valuable as knowing all the frameworks off the top of your head. After all, Google can find you frameworks. It can't find you empathy.
Also, don't be too put off by job descriptions. Often they're thrown together by recruiters, who ask for all technologies under the sun.
I like when you talk about a "great position to become a better developer because you see your blind spots". Maybe now, after all of these years, this is a good moment to see what I've done wrong, what I've done right and how I can improve even more as a developer (and as a person as well, why not?).
I guess I remained so much time in silence about those bad feelings that is good to receive a feedback like yours.
Thanks for your comment :)
I think we should take this question from a higher level perspective. I think devs like Dan Abramov are rare gems. We shouldn't use them as examples to generalize.
I think how good your as a developer is more than just having great coding skills and knowledges. Let's be realistic, there are tons of new tech/libraries/lauguage/whatever you can name every so often. No one can possibly be familiar with everything. Not saying technical skills are not important, but it is just one of them.
There are also some other very important traits, such as:
I used to be one of those cool kids criticizing other people's code and I wished there would be someone who could tell me all these earlier. I hope this help you or at least give you insights!
In every profession there are those who does a bad work, others who does a good work and others that are exceptional like "omg, this person was born to do this!". The bad part of comparing yourself to the others is that you're aiming the perfection without taking into consideration your background, your feelings and not seeing the good outcomes you have done.
The points that you mentioned takes me to another level of perspective, showing that there's a whole world out there to explore and focusing on negative thoughts like "I can't do this" or "this is very difficult and I'll never learn it" can block our evolution.
Along our careers (and life as well), we'll commit lots of mistakes and I believe we can learn from them. And that's what I'm trying to do now.
Thanks for your comment :)
I'm currently trying to do my job and learn things at my own pace.
You’re a good developer if you put the users first.
In fact, it's always good to be in the users' shoes and try to make the best product we can. Sometimes we are so addicted to develop the "happy path" that we forget about how the people will use what you're building.
Thanks for your comment :)