“You’re not really a developer. Sooner or later people are going to realize you don’t know what you’re talking about. You’re just not good enough.”
You’ve probably had thoughts like these at one point or another. You’ve never heard someone else tell you that you’re not a developer, but you’re still thinking it. You may be thinking along these lines right now.
I’ll let you in on a secret about these feelings. Are you ready?
All developers have these thoughts and feelings to some degree. They’re so are so prevalent, it’s become a right of passage——a well-worn path we all trod down.
These negative perceptions strike at the best of people—seasoned veterans and novices with huge potential. We all feel inadequate with our development abilities in one way or another.
Worse, these thoughts can be harmful. They cause people to hold back ideas. They make individuals avoid participating. They narrow perspectives and quash potential. They’re wasteful and limiting. They exclude people.
In this article, we’re going to talk about feelings. Why? Because we, as developers, are people, not machines. How we feel about things affects how we work, and how much we enjoy that work.
This article is aimed at anyone who has ever felt like they don’t qualify for this profession. It’s for anyone who feels inadequate with their coding skills, or that they’re just not good enough. If you’ve ever felt uneasy using the label “developer” to talk about yourself, this is for you.
The Definition of a Developer
Let’s start by defining what a developer is. Ready for it?
A developer is a person who writes code.
That’s it! There’s no hallowed assembly that passes judgment when you’ve crossed the threshold. Nobody will send you a vellum certificate with loopy signatures and an embossed silver foil in the corner. There’s no official examination that, when passed, will finally, finally allow you to call yourself a developer.
Sometimes people come up with artificial criteria for what constitutes being a developer. This is called gatekeeping, and it’s bullshit. Nobody else gets to decide whether you’re a developer or not.
If you write code, then you are a developer.
It doesn’t matter if the code you write is done professionally or in your spare time. It can be done from the CLI, in an IDE, on the web or inside another application. It can be front-end code, back-end code, embedded, cloud, local, remote or something else. If it’s code, you’re in the club.
Imposter syndrome is the idea that you feel like a fraud—like you’re not good enough and somebody will eventually realize it, or you don’t have seat at the table. Most developers feel this way at some point. Don’t believe me? David Walsh wrote an amazing article about his own experiences a while back.
In our field, it often feels like there are super experts—people who exist at the top of their game, have perfect understanding and all of the answers. It’s difficult to not compare yourself to those people and feel you don’t stack up. But that feeling is a perception, not a reality. I think this graphic from Alicia Liu sums it up best:
It may seem like everyone else knows more than you, but that’s never the case. There’s a whole treasure trove of knowledge you have stored away. Instead of feeling bad about what you don’t know, acknowledge what you do and share it with others. Sharing what you know not only enriches others, it also helps strengthen your own grasp of what you know.
The Hockey Stick of Learning
When you first start writing code, the complexity is overwhelming. As your skills progress, this noise fades away. Eventually you hit a point where you stop thinking about the code and start thinking about the problem you’re solving. It’s like driving—after some practice, you no longer have to consciously press the gas and brake pedals. Some people call this state flow.
But that takes time. It’s okay to not be there, even after years of effort. Every new detail you absorb takes you one step closer. Every time you grok a new language feature or grep the documentation (or even grasp jargon like grok and grep), you move a little closer.
Most people new to the field believe that learning to be a developer looks like a straight line. However, the reality is it looks more like a hockey stick.
The trap comes when you get halfway through the
Being a developer isn’t about summiting the top of the mountain of knowledge. It’s about climbing a hill and enjoying the view for a few moments—then spotting the next one and plodding on.
It’s okay to feel like you have a lot to learn. Everyone feels that way. For most developers, that feeling never goes away. One of my favorite quotes from John Archibald Wheeler sums it up.
As our island of knowledge grows, so does the shore of our ignorance.
The more we learn, the more we realize we still have to discover.
In her amazing book Mindset, Carol Dweck explains that people adopt one of two mindsets when learning.
The first is a fixed mindset, where a person believes that their skill or intelligence in an area is innate and unchangeable. That’s not to say that they never improve—they do—but they ultimately believe their ability is limited. Their performance is an indication of who they are.
The problem with this mindset is what happens when things get tough. People with fixed mindsets tend to avoid challenges because they can threaten their self-image.
By comparison, a growth mindset involves viewing ability as a skill that can be acquired with practice. A challenge is an opportunity to learn something new. Intelligence isn’t fixed, it’s fluid and changeable.
Over time, people with growth mindsets almost always outperform people with fixed mindsets. Yes, there are occasional exceptions. However, if you look at the top of most fields tenacity beats talent.
Having a fixed mindset isn’t something to feel guilty about. We all have fixed mindsets about some things and growth mindsets about others. The key insight from Dweck’s research is that mindsets are easy to change.
The trick is to reframe your thinking about the topic. Software development is a skill. It’s not an innate ability. Nobody is born clutching a keyboard. Learning it takes patience and practice.
The next time you’re chewing on a difficult problem, try to reframe it as an opportunity to improve.
What’s the Point?
What does all of this mean? It means you are a developer. You are welcome to the development community.
Quit qualifying your position—you don’t have to. Recognize the feelings of imposter syndrome for what they are: a perception. Be patient with the learning curve. Reframe your mindset. This is a process, it takes time, and we’re all learning.
Most importantly, go write some code.
Rojenx is a leading concept artist who work appears in games and publications
Check out his personal gallery here