This is a misunderstanding I see all the time.

Junior developers think they just need to learn more technical skills in order to advance in their career.

But often, they have enough coding ability to reach the next level.

Here’s what they’re missing…

Proactive & pragmatic

Junior engineers struggle to understand the other parts of our job.

They’re missing the situational awareness of a senior engineer. They don’t operate with enough autonomy. In difficult situations, they struggle uselessly while trying to resolve a problem.

Great senior engineers have a few characteristics in common that take them to the next level:

  1. They’re proactive. If something is happening that they don’t understand, they’ll research it. They find ways (code, Git history, documentation, monitoring tools, etc) to trace down the underlying logic. When they discover something new, they communicate about it with the team.
  2. They’re pragmatic. They know that the simplest solution is usually the best. There’s no need to over-complicate a technical problem. But the same goes for people problems. Reduce complexity, friction, and back and forth.

Asking good questions

I see junior engineers fall into this trap all the time.

They ask:

“It’s not working! How do I make it work?”

The problem with that question is it doesn’t show any effort or context. You’re literally presenting a problem to the other engineers on your team without any attempt at a solution.

Instead, ask a question like this:

“I’m trying to do x. But it’s failing because of y. I’ve tried working around it with z, but I haven’t had success. Any recommendations?”

The tone of that question is entirely different.

It shows you put effort into trying to find a solution. Moreover, it’s abundantly clear the context and exact issue you’re facing.

Most importantly, it’s the way senior engineers talk to one another on the same level. The wording of the question assumes that you’re peers with your colleagues, working together to find the solution.

Communication is the job

Asking questions in a good manner is one form of communication.

But as you grow as a developer, you’ll realize that our entire job is communication. The technical implementation of a feature may be difficult, but it’s not the hardest part of the job.

Collaborating with others, setting expectations, and clearly communicating the plan is the hardest part.

That’s why I encourage all developers to practice communication skills.

Specifically, I think writing skills are the most important to take your communication to the next level.

A developer who can write well sets themselves apart. It’s an amazing skill to add you your toolbelt. It’ll do more to take you to senior levels than any new technical skill.

More resources

There’s a ton more to our job than just coding. This article only scratches the surface. Luckily, I’ve written about this a bunch of other times. Check out the articles below for more!