The impostor syndrome, is a psychological phenomenon in which people are unable to internalize their accomplishments. Despite external evidence of their competence, those with the syndrome remain convinced that they are frauds and do not deserve the success they have achieved. Proof of success is dismissed as luck, timing, or as a result of deceiving others into thinking they are more intelligent and competent than they believe themselves to be.
This is the definition Wikipedia provides for “Imposter Syndrome”.
Are you always questioning yourself if all the other developers you work with are more talented than you are? You fear that people will discover that you are faking your skills and think you are a phony? And, …. are you a Software Engineer?!
The imposter syndrome is very common among professions where work is peer-reviewed such as journalism, writing, … and Yes: Software Development. It is a sign that you apply extremely high standards to yourself which is not in balance to how you view others. Pair-programming can be particularly stressful but also writing open-source software and activities which push you into being genuine. But keep in mind people with true ability tend to underestimate their relative competence.
As a former software developer who has turned to recruiting I’m well aware of how us programmers are judged. The industry still believes that the best programmers have no hobbies other than software development. And when we go home after a 12 hour work day, we’re expected to recharge our batteries while hacking away on some pet-project or busy ourselves learning one of the latest programming languages, which are all the rage now.
Unfortunately this behavior doesn’t actually make us better programmers. What it will make you though is a burnt out programmer. Even worse, if all your input in life is from data/info/books/discussions related to programming, I’d go as far and say: You will not only turn into non-interesting individual, but eventually even lack the ability to see the bigger picture in your own tech projects!
Don’t believe me? Consider this: It’s 03:00 AM and you’re hunting for one of the hardest bugs you ever had to find in your code. You’ve already been stuck with this problem for the last 7 hours! You finally you give up and get back to your desk few hours later (after some sleep or a walk with your dog). Voila! You found the problem by doing nothing. Actually your mind found the problem!
Chances are you know this pattern very well and always wondered why sometimes the hardest bugs seem to get fixed by letting go.
The same applies on a macro-level. If you allow your mind some rest on a regular basis, even when work is your hobby, then you will automatically get better at your job and also more balanced than before.
If you feel like an imposter remember, the best work in science is built on previous research. Have a look at these computing Pioneers. Whether Charles Babbage, Dennis Ritchie, Einstein or Satoshi Nakamoto, … they all expanded on someone else’s work.
And being genuine isn’t nearly as important as being able to identify what is already available and can be re-used with a bit of “glue”.
Sometimes we put too much on our plate, but after some time we can handle it, and we aren’t phonies. And we move on to the next challenge. It’s OK to fake it until you make it. We all do it to grow our skills.
Learning new programming languages can be a nice, but what can be equally satisfying in terms of job-security and pleasure is deepening the understanding of a realm that you thought you already knew well. As a recruiter I prefer talking to people who have <5 languages on their CV and know they’re really experts in them, rather than a hipster engineer with ADHD, listing 20 exotic languages, where I’m sure they’ll lack deeper understanding in every single one of them.
Also remember that as a senior programmer it isn’t just the number of projects you have worked on or the languages you know, but also your ability to understand and translate requirements given to you by a person who doesn’t care about how it is implemented.
Sometimes being able to break the ice by talking about your last hiking trip or your passion for travel will get you further than cutting to the chase with low-level design details.
If you turned your passion into work and love your work so much that it becomes another way of expressing the passions in your life, remember: Nothing ever lasts! So the best chances to hang on to that passion for longer is by giving yourself a break regularly and staying balanced.
EDIT 17/08/2014/13:50: There are some fantastic comments on /r/programming. For those unsure what I do as a “tech-recruiter”: My company does research & consulting work for “future-tech” (stuff that isn’t yet standardized such as SDN/NFV, SON, V2V/V2I, Carrier-Grade-Clouds etc …), and part of our portfolio is also recruitment. Hopefully this clears it up for those who wonder why a recruiter airs his opinion on a tech-topic. I’m always happy if people connect with me on LinkedIn so just add me! (and don’t worry, even though I do suffer from a mild version of ADHD, I won’t bite ;-))