Are You a Developer?

By  on  

“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

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 hockey stick. You've spent a lot of time learning, but don't feel like you've made much progress. In reality, you're on the verge of a dramatic increase in your coding ability.

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.

Growth Mindset

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.

Landon Schropp

About Landon Schropp

Landon is a developer, designer and entrepreneur based in Kansas City. He's the author of the Unraveling Flexbox. He's passionate about building simple apps people love to use.

Recent Features

  • By
    7 Essential JavaScript Functions

    I remember the early days of JavaScript where you needed a simple function for just about everything because the browser vendors implemented features differently, and not just edge features, basic features, like addEventListener and attachEvent.  Times have changed but there are still a few functions each developer should...

  • By
    Welcome to My New Office

    My first professional web development was at a small print shop where I sat in a windowless cubical all day. I suffered that boxed in environment for almost five years before I was able to find a remote job where I worked from home. The first...

Incredible Demos

  • By
    Flexbox Equal Height Columns

    Flexbox was supposed to be the pot of gold at the long, long rainbow of insufficient CSS layout techniques.  And the only disappointment I've experienced with flexbox is that browser vendors took so long to implement it.  I can't also claim to have pushed flexbox's limits, but...

  • By
    Introducing MooTools ElementSpy

    One part of MooTools I love is the ease of implementing events within classes. Just add Events to your Implements array and you can fire events anywhere you want -- these events are extremely helpful. ScrollSpy and many other popular MooTools plugins would...

Discussion

  1. I don’t agree with hockey stick graph for learning software engineering. I feel like I’ve learned most in first years I started coding. Currently, seven years after I started I feel like there is not that much to learn anymore. Code languages, frameworks, architectures are pretty much similar.

  2. Very nice article.
    The imposter syndrome is real. I’ve overcome this with practice however. This is true across the board, I believe.

    • I agree. Practice is the key when it comes to battling imposter syndrome in developers. It is a real problem that can harm your personal and professional life a lot if not countered and worked on.

  3. Nice article! I shared this with the new developers that my team this year.

  4. Dana Daldoss

    “The trap comes when you get halfway through the ”

    I’m dying to know how this sentence ends!

    • Me too, Dana! Sorry I missed your comment. I’ll see if I can’t get this resolved. Better late than never, right?

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!