Junior Senior

6 min read Suggest Changes
A split keyboard that is lite with RGB
ZSA Moonlander
Table of Contents

I was at my local programmer meet-up. The topic was job titles of Junior, Intermediate, and Senior.

There were some excellent points made during the congregation. Some examples included:

  • Junior developers aren’t expected to know a lot but are in a position to learn
  • Seniors have experience and are responsible for passing their knowledge down
  • Seniors are expected to lead teams and coordinate with stakeholders.
  • Intermediate programmers have a higher level of agency compared to Juniors and need less hand holding
  • The list continues…

My opinion could be controversial. Job title like this aren’t important on your skills; but are important optics for career development if you only care about money and job hopping.

I’m going to call on my limited experience in Brazilian Jiu-Jitsu (BJJ) to explain my point of view.

In BJJ, there are belts (going from less experienced to most): white, blue, purple, brown and black, (red and coral for major contribution to the arts).

Belts are good in that they provide some evidence of experience and skill. Belts also provide practitioners with a sense of progression.

But there is also a downside to focusing on the belts too. The goal of BJJ is to get better at BJJ. Belt ranks are a proxy for this. The side effect of belts is that you become too fixated on trying to get a better belt rank rather than actually improving.

It takes a long while to get a belt promotion, some times years, and everyone progresses differently. It can be quite disparaging to turn up routinely, work hard only to see your peers get promoted before you.

And when you do get promoted, it’s a sign you have improved, but this also means you have a standard to uphold and the hard work doesn’t stop.

I want to repeaet that, the hard work, learning and improvement doesn’t stop - which paradigm of thinking your would have had if you were a white belt.

This comes in other forms: like adopting a beginners mindset. The beginner is always learning. And even if they are an “expert”, they still consider themselves a beginner.

We can already draw parallels to a programming job — chasing the status of a better position, losing focus of a more important and fundamental goal: constant improvement.

Let’s say you do play your cards right, what happens when you do get promoted to a senior position?

Yes, you get a better paycheck and some more responsibilities, but does that stop you from learning? Does that mean you can’t learn from those who have less seniority or less experience than you?

Generally, more experience does mean you do know more, but it’s important to make sure that the learning does not stop (and help others along the way too).

Adopting the beginner’s mindset doesn’t mean you become lazy and don’t challenge yourself. It also doesn’t mean you don’t back yourself. It just means you don’t stop learning.

I feel the same way about backend, frontend, development operations and so on. They are just limiting labels.

We are all programmers at the end of the day. We use code to solve problems. And having a generalist base that is always growing will take you very far.

How to get better?

Unfortunately, there is no cheat code. Getting better involves hard work.

I’m no expert but this is what I try and do.

The first step is focusing on my own journey. Don’t worry about being better than others or when others are better than you. Your opponent is your previous self. Day-to-day progress is often difficult to measure, so try and look back months and years into the past.

The next step is showing initiative - be proactive is what my father would say.

Do you see problems in the codebase as a developer you want changed? Maybe, it’s a big change. Okay, what about scaling that problem down? What about from the perspective of a potential user? Create an issue on how you would improve it. Plan how you would take on that issue.

See an open issue to tackle? Go ahead and come up with an implementation and make a pull request.

Earlier when I started working, I would often wait for my team lead to assign work for me to do and then describe what I needed to do in detail. This was acceptable at the time because I was very new, but you shouldn’t be at this stage for long.

Take risks. If you are unsure if your implementation is worth pursuing or if you might be doing things wrong — it’s okay because action is better than inaction. Sometimes I would get stuck in paralysis of my analysis. I would get stuck and wait for the next standup to get the opinions of my colleagues.

Now, I go ahead with an implementation. One example involves writing end-to-end testing, instead of waiting to be told to do so.

Sometimes I would get the implementation wrong or I would introduce a bug into production. This can be embarrassing. And it can be a bit disappointing, but this just needs to be reframed into learning opportunities.

You will slowly get more comfortable with what you find uncomfortable while seeking more challenging problems.

This is continual improvement.

What impedes this is complacency — “just coasting”.

Does something pique your interest? Dive into it. I learned that the Javascript number type is a 64-bit float, while Python differentiates between integers and floats. And that this difference is causing type problems in our code. I also learnt that arithmetic is not so easy in programming (have you tried adding floats together and comparing those added floats together?).

It’s important to not make life about work but at the same time, you can’t just do the bare minimum.

I’d argue that most people do not enjoy work and just do it for the paycheck — which is another acceptable modality of life. But for me, I wouldn’t work just for the pay. Pushing oneself is important and makes life and work more enjoyable, especially when you have the choice between an easier path or a more difficult one.

Conclusion

The title don’t matter. You are a programmer. Always be learning always be challenging yourself like it’s your first day of learning.