Supporting Each Other

Growth for Juniors and Seniors

We often talk about the importance of hiring Juniors, a topic that pops up every now and then, but it is still undecided how to solve this problem, specially in smaller companies. I’m going to share with you my experience and the tips that helped me and other Juniors grow in a professional environment, but also, how that helps the rest of the team.

Problem

In the tech industry there’s a high demand nowadays for software developers, and this is widely known. Perhaps you are struggling finding developers to join your team, and you discussed many times with your manager who to hire. “What is the level we are looking for?” you might have asked.

Seniors, we only want Seniors.

Sadly, when it comes to hiring, companies prefer Seniors. This may be because Seniors already have the knowledge and the experience, and companies are always chasing after the market with their products, but even some big companies pride themselves saying they only hire Seniors! So even big names aren’t investing in Juniors.

“Where do Seniors come from?”

No one is being born a Senior. You all have been Juniors before.

It’s very difficult for Juniors to find their first job, as there are just a fewer job openings for that level. But companies forget that Juniors also bring lots of good things to your team.


Juniors bring good things

Juniors bring fresh motivation. They are really excited to have their first job and to work with you!! Their motivation is contagious 😊

Juniors bring a learning mindset. They are excited to learn. They are excited to learn with you and from you! You, Senior, might not have the motivation sometimes to learn something new. However, Juniors are continuously learning to improve. They’ll probably share what they’re doing with you, and this will motivate you.

Juniors bring fresh knowledge, as they have probably played with new components and libraries you didn’t have the chance to try out yet. And more importantly: every person is different. Everyone has different life experiences and backgrounds. Perhaps the Junior has some knowledge on AI, Biology, or data science!

Juniors bring a flexible mindset. Let’s be honest, when it comes to new technologies and libraries, Seniors may not be flexible sometimes. Perhaps because they want to keep a stable product, but…sometimes because they just don’t have the energy or motivation to learn something new.


What Seniors gain

At this point you have seen that Juniors will benefit your team, but you might be thinking…

“What do I, the Senior, gain from it?”

You will demonstrate your company that you can lead.

Most importantly, this will help your career growth. As part of your Senior role, you are expected to be able to mentor people.

Are you ready to mentor Juniors? I will give you some tips on making your mentoring more effective. But first, let’s see what mentoring is.


Mentoring

Mentoring is not a teacher-student relationship. Mentoring works both ways. The key of mentoring is sharing your knowledge.

How can I share my knowledge if I don’t act as a teacher? Well, you can share your knowledge in many ways!

You are sharing your knowledge…

  • when you give constructive answers in code reviews
  • when you share an article or a talk
  • when you explain why you’re using certain library in your project because that another one didn’t fit
  • when you talk about how certain approach or new library you think could benefit your product

Make your mentoring more effective

There are many things that helped me growing as a Junior developer. Though, believe it or not, all the things I will mention here, apply to any level.

Focus on one topic

Choose one single topic to explain in a session. If you are working on something complex, choose only one topic to explain. Let’s say you want to focus the learning session on the architecture pattern your app follows. Whenever another topic comes up, like Dependency Injection or Reactive Programming, you can let the Junior copy an example or guide them step by step, without going into details.

This way you will introduce concepts slowly and without overwhelming.

Communication

This is probably the hardest skill to master for Software developers. Think of “effective communication”. How can you explain a complex concept to a Junior?

Have pen and paper always available. Write and draw while making complex explanations. This won’t only help the Junior, but anyone else listening to you. Besides, if you draw diagrams on a paper, Juniors will have it as reference for the next time they need it. :)

When communicating, always be constructive. Be constructive when writing code reviews. Never say directly “Why did you do this?”. Instead, you can say “As I understand, you used this because of this reason. However, have you considered using this other approach instead?”.

Be constructive!

Environment

Be sure you have a good environment, with good mood and without sexism. If Seniors ask questions without attacking each other, Juniors will do the same!

Tasks

With time, you will see the Junior’s capacity. Don’t give them always the same kind of tasks. Instead, give them diverse tasks so they see different parts of the project. From end to end, from API to UI. Always challenge their capacity!

Also, don’t give them difficult tasks to do nor review. You don’t want to overwhelm them. In little time you will start understanding what they can do and you will feel more comfortable suggesting them tasks to do.

Pair Programming

Not everyone nor every company understands how good and effective pair programming is. Pair programming is NOT “you code what I say”. Pair programming is a conversation around a problem.

To help the Junior feel more comfortable doing pair programming with you, do it in their space. Let them take over the keyboard. They will feel more comfortable being in their space. Sit next to them.

Be patient.


Tips for Juniors

Starting a task

When the Sprint starts, we get excited to start working on tasks. But when you read again the acceptance criteria, you might thinking “I have no idea on how to start this task!”.

A little tip: ask for guidance! A teammate can help you breaking down the task in small Todos and steps you can follow.

But what if you already have a rough idea of what to do? Ask for guidance too! But instead, this time you can write the list of Todos and steps, and then share it with your teammates. They can help you spot things you need to consider when not knowing the project.

Asking questions

Keep in mind that you have to ask questions and you have to bother your teammates. They won’t mind, they will get back to focus really quickly. The right time to ask a question is at any time.

I got stuck!

Welcome to the developers life! We all get stuck! Although, not everyone has the same capacity to move forward.

“Is it too soon to ask for help?” Something that helps a lot when getting stuck is to time-box it. Give yourself 1–3 hours of research before asking for help.

However, sometimes we just need to take a break. Take breaks! Getting stuck is normal, and sometimes what we need is to stop focusing on the problem and refresh our minds. Go for a walk, make a tea, have some laughs with a colleague, watch a cute video of a puppy. Once you get back to your problem, you will see it from another perspective. I’m sure you solved many problems before by taking a break! :)

Nice tips, but…I’m still stuck!

One thing I also recommend doing when debugging your code, is Rubber Duck Debugging. Have a rubber duck next to you (or any other toy) and start explaining to it what you wanted to achieve with your code and every step you’ve done. Many times you can spot the issue yourself when explain it. And you can do the human version too: the Human Duck Debugging :) Tell a colleague you are stuck with something and start explaining them the problem. Again. Many times you will spot the issue alone, and that’s good! Other times, your colleagues will ask you questions that will help you debugging.

Copy-Pasting

Copy-Pasting is OK! We all google problems, we all copy code from StackOverflow. Copy-pasting is OK as long as you understand the problem you have and the solution you are copying.

One type of copy-pasting I suggest you to do is copying code from your own project. Search within your project some examples of what you want to do. This will help you see the patterns they follow, so you keep the code consistent.


Final words

We all are aware on the problem of the lack of Juniors in our industry. Only a few see the benefits that Juniors can bring. Be one of those few!

Remember:

  • You will learn a lot, the best way to master something is to teach it.
  • You will have a rewarding experience by helping others grow and learn.

Being nice to your Juniors can help you in the future too. You never know when you will need their help!