How can you tell if you’re a good developer?

06 April 2024 ยท Updated 06 April 2024
Question

Hey Vadim, So, I've been coding for money for about 5 years now. I've jumped around a lot โ€” Java, Javascript, Python, NodeJS โ€” you name it. The job market's been great, making it super easy for me to switch between gigs. I've done both full-time and contract work across many different companies. I think I've reached the level of being senior as I take on more and more responsibility.

At every place I've been at, they seemed to love me. I always got the comments that I'm the best dev they'd ever had. But, personally, I've always felt a bit off. I'm good at bringing the team together and breaking down problems. Yet, there's always someone who can code better than me. They can whip up solutions way faster than I can. I get things quickly, but my code always seemed a bit messier.

Now here is where it starts being interesting. I decided to switch jobs again, as Rust is the new fun kid of the block, I decided to switch things up by teaching myself Rust. Landed a job at a big-name brand recently, many thousands of engineers, and I'm feeling way out of my league. The devs here are on another level, I feel like everyone here is smarter than me, even the juniors are soo good, coming up with stuff I wouldn't even dream of.

It's gotten to the point where I'm doubting if I'm cut out for this, especially having the title senior but not really being senior amongst my teammates. Makes me think of calling it quits.

So, here's what my question is: How can I tell if I'm a good developer? Were my previous companies just bad? Now, I feel like I'm just not measuring up.

Looking for some guidance or any advice you've got.

Answer

Feeling like you’re not measuring up, especially after joining a team full of sharp minds, is a common experience. I think I went through this cycle multiple times, and will probably go through it many more. I like that feeling. It means that I’ve grown complacent in my position and it’s a good time to learn from others. Remember the saying, “If you’re the smartest person in the room, you’re in the wrong room”? Well, it’s true. Being surrounded by people who seem to be on another level is not just an opportunity but a gift for your personal and professional development. I think you should cherish it, regardless if your impostor syndrome is telling you you’re not fit to be there.

Seeing even juniors coming up with ideas that surprise you is actually exciting. It shows how the field is evolving and how newcomers are bringing fresh perspectives. You have a different set of skills that complements the technical prowess of your teammates. This diversity is what makes a team strong, not just the ability to code quickly. Everyone has something unique about themselves that brings value to the project.

Working on projects with code that looks perfect but doesn’t perform well in real-world situations taught me that there’s much more to developing good software than just writing clean code. Sometimes, the messier “startup code” can be more effective in solving immediate business needs, and it can always be improved later.

You mentioned you’re now diving into Rust and feeling overwhelmed. That’s normal whenever you step into new territory. But don’t forget, every expert in Rust started somewhere, and they faced their own challenges. You were hired for a reason – your unique blend of skills and your potential to grow. So, my advice? Stick with it. You’re already doing better than you think. And one more thing – don’t rush to compare your current self to others. Growth takes time, and everyone’s path is unique. Embrace your journey, and remember, the fact that you’re questioning your abilities and seeking to improve already sets you apart in the best way possible.

Now, letโ€™s dive deeper into the feeling of not keeping up with your teammates. I urge you to shift your perspective. Software development is vast and varied, and everyone brings something unique to the table. You, with your knack for fostering team spirit and dissecting problems, are no exception.

Remember, your worth as a developer isn’t solely defined by your ability to churn out code at lightning speed or your mastery of the latest stack. It’s also about your approach to problem-solving, your willingness to learn, and your ability to contribute to a team’s dynamics in meaningful ways. These qualities often outshine raw technical skills in the long run.

If you find yourself feeling like a small fish in a big pond, take it as a sign that you’re exactly where you need to be to expand your horizons. The discomfort you feel is the discomfort of growth. It’s an indication that you’re pushing boundaries and stepping out of your comfort zone, which is where true development happens.

Ask questions, seek feedback, and most importantly, share your own insights and experiences. The exchange of knowledge is a two-way street, and you’ll be surprised at how much you can offer, even in a new environment.

To summarize in terms of how to know if you’re a good developer, it’s rather straightforward:

  1. You receive a problem โ€” a business problem or a scientific problem.
  2. You take a look at the problem.
  3. You figure out how to solve the problem with your knowledge.
  4. You solve the problem.

If you can repeat this on a daily basis with some hiccups here and there, then you’re a good software engineer. We, developers, are measured by our ability to solve problems, not the amount of lines or the cleanliness of code (though it also matters, but it comes with experience). You start with solving a problem in an inefficient way, then you move on to solving the problem in efficient way, then you move on to solving it in a maintainable and future-proof way, but it’s all about solving the problem, and not the code per se.

You’re doing far better than you think. Trust the process.




Hot! The last couple of years I've been writing about CTO / Tech lead job. I've compiled all my knowledge into a printable PDF. I called it "256 Pages of No Bullshit Guide for CTOs". So if you're interested, take a look.

New! If you're a software engineer looking for a job, I started a Roast my Resume service, where I record a personalized video of me "roasting" your CV, which basically means taking a hard look at your resume as a CTO and commenting on all the good and the bad parts.