3 Things the Best Senior Developers Do

Essay

After a long while, I'm trying to start writing on my blog again. If I may offer an excuse, I got married this past March and spent the whole run-up to it in a whirlwind of a time. After coming back from the honeymoon and returning to work, I saw that everything had run smoothly while I was away. On one hand, I felt reassured to have such dependable colleagues; on the other, I couldn't help thinking, "So the company runs just fine without me..." and I found myself doubting whether I, as a service lead, was really doing well.
Then I came across a piece titled 3 things the best senior developers do, and I thought I would restart my blog by translating it, hoping to figure out how I might do better going forward.


The piece is one foreign developer's account of the traits of two senior mentors who made his time as a junior developer such a good experience.


*
This is a piece written for my own personal study, so it may contain mistranslations or my own opinions. Please keep that in mind, and if anything is problematic, I'd appreciate your feedback by email. Please also note that I've taken only part of the original piece and condensed and translated it.


Senior Evelopers

Those who have earned the title of senior developer are people who have fought and overcome the war that is development through long days and nights. They handle and monitor every problem and deal with the risks. But no one can handle every risk alone. For things to run efficiently, they have to delegate the handling of those risks to others, and they have to choose whom to entrust it to. That choice is a new challenge for the senior developer, and for the chosen junior developer alike.



Essential traits

The responsibility of overseeing one project, or several, is a stressful thing. And to think here that the senior developer essentially has to babysit a junior developer (a baby) would be madness. The three most important traits a successful senior developer must have are said to be the following.

  • Attentiveness
  • Patience
  • Optimism

Attentive

When a junior developer speaks, you should pay attention even from a distance. Not every detail is strictly necessary, but simply checking in with the senior developer each day can be a good experience in itself. What you do together doesn't need to be some grand gesture; just a few words of guidance or some warm encouragement can be a great help to a junior developer in getting the work done.


Patient

Often, the senior developer on a team is the one who faces the deadlines. Because they see the whole project from the "big picture" perspective, they'll anticipate the schedule of a missed deadline before anyone else does. Even under this pressure, the best senior developers must strike a balance by showing great patience with the team, giving them the time they need to arrive at solutions in their own way, so that even in a process pressed against a deadline, the junior developers—and themselves—can grow into good developers. Here, the senior developer's patience is the ability to absorb the barrage of outside questions like "Well, why isn't it done yet?" so that those under their care can focus on their work in a quiet environment.


Optimistic

Optimism here doesn't mean naive optimism; it means a kind of faith, and programming needs an air of pragmatism. Faith that junior developers can overcome the obstacles; faith that if they get stuck on one, they'll ask; faith in one's own ability to provide the learning resources and roadmap needed to become a capable developer. It's the kind of restraint a father shows when a child first rides a bike—knowing that for the child to grow, to get stronger, to develop and advance, you have to leave room for them to fail. Knowing that if they endure and get through it here, they will succeed.



Some examples

As one example the author experienced, this is how his senior mentor treated him in a situation where he was wasting a whole week in an unfamiliar environment and couldn't even make progress.

  • He didn't try to dominate the work as a developer.
  • He never once complained about the wasted time.
  • He checked in together on a regular basis.
  • He gave the time needed to explore many options.


In conclusion

For the conclusion here, I want to organize my own thoughts rather than the original piece. The piece above laid out the role of a senior developer's competency from the manager side rather than the technical side. If I were to summarize it by my own impression, it seemed to speak to the importance of a role that checks in on a junior developer's work together, that grants them the freedom to choose among many options rather than dictating the development, and that shields them from project schedules and outside pressure so they have the breathing room to solve things themselves. The importance of that senior developer role I just described was, I think, exactly what I had hoped for from the team leads I worked with back when I was a junior developer. As I thought about what my own leads had been like, I realized that what matters more isn't that, but whether I—now leading a project—am carrying out this role well.
Since I'm still only a mid-level(?) developer with not much experience leading, I feel I'm still quite raw at the role described above. Re-reading what I've organized here, I want to think about what kind of senior mentor I wished for back when I was a junior developer, and strive to become a better senior developer going forward. And I should take another moment to think through and organize what kind of technical competencies a senior developer needs, too.



[Ref]: