Bridging the Gap Between Junior and Senior Engineers

I typed up a comment in /r/cscareerquestions recently, where I described a few of the areas I really needed to work on during the early stages of my programming career, and tied that into why I think senior engineers should stop worrying so much about their technical skills becoming obsolete.

Full Thread:

I think there are a number of soft skills we don’t emphasize enough in the community, which all have the potential to exponentially increase the impact of our work (as individual contributors and technical leads).

Code review etiquette, gracefully pushing back on scope creep, explaining highly-technical issues in a way that intuitively makes sense to every other department, maintaining your composure when production blows up and it’s a race against the clock, etc.

The response was pretty overwhelming, so I decided to extract everything out into a Medium article, since a couple people in the thread asked for a more permanent copy that looks nice when you print it out.

Question from the original post in /r/cscareerquestions:

I enjoy programming and even learning in my spare time, but I still feel like I’m on a treadmill in terms of learning everything I need to know. I have this nagging voice in my head telling me that staying in a career where things are changing so quickly is bad, because when you’re older, your experience isn’t that valuable since it’s in old/obsolete tools, etc, plus it gets more difficult to learn new tech when you have other responsibilities.

It comes back to that familiar question of why should a company pay you for your experience in old tech, when they can hire an eager kid who knows the latest tech for 1/3 your salary (and is willing to work late, etc.)

I feel like I should try to become a BA or PM or some kind of business domain guy, since these types of roles tend to not be hit as hard by old age as programmers. I’d rather not, since I like to code, but I feel like I’ll have no choice. I’m also an average programmer, not some whiz.

Raw coding ability is important, but I felt like our protagonist missed some of the big reasons why companies are often happy to pay seniors a boatload of money (when entry-level developers are willing to work for peanuts):

  • How maintainable is your code? Do other engineers constantly tap you on the shoulder, and ask you to explain how everything works? Are your variable names descriptive? Are your methods self-explanatory? Whenever you find yourself copying and pasting multiple lines, do you extract the functionality out into a reusable service?

While I can’t speak for every junior engineer out there, I do know that I was an emotional wreck when I started working in the field eight years ago.

Extremely confident, terrible at communicating with people, couldn’t handle constructive criticism without throwing a hissy fit, got into heated arguments with my boss over nothing, wasted countless hours on problems that didn’t matter at all, always bitching and moaning about why I deserved a huge raise (when I didn’t put in the extra effort to earn one), consistently played ping pong and video games for 45 minutes a day (after my hour-long lunch)…

Did I provide a bunch of value to my employers?


Could you leave me alone for 30 minutes and be sure I wouldn’t immediately bash my head into a wall?

Not a chance.

Senior developers, on the other hand, just make problems disappear.

They reduce stress. They hit deadlines. They know how to write maintainable code that will stand the test of time. They cost a lot more money. They give (somewhat) accurate estimates. They can spot flaws in the current process, and get everybody to buy into their ideas to improve it. They can mentor the fresh grads. They’re not going to drop an F-bomb during Tuesday’s conference call with your biggest client.

Lots of people decide to stop climbing the ladder at this point, and I don’t think there’s anything wrong with that. Programming is one of the most mentally stimulating careers out there, and plenty of businesses are willing to shell out a lot of money for veterans who can keep things running smoothly.

That being said, there will always be that small group of engineers who will eventually decide to hang up the IDE one day, and begin making the transition into management. ☠️


tl;dr: From what I can tell so far, it’s optional, and definitely not for everyone.

If you have solid communication skills and actually want to spend your entire day in meetings (so you can remove distractions and help your teammates find more time to get productive work done), it can be a pretty rewarding gig.

If you take the job for any other reason (pressure from your employer, higher pay, anxiety around your technical skills becoming obsolete even though you just read my blog post), then you’re probably gonna have a bad time.

Looking back on my journey, it all started with me trying to carve out a couple hours every week (in between heavy coding sessions) to focus on…

  • cleaning up how we conduct technical interviews, so we can have a better signal-to-noise ratio with candidates (improving the questions we ask, rethinking our email templates, should we require homework assignments, is the job description still accurate, where are we posting the ads, how would I respond to this posting if I was looking for work, how can we give candidates a deeper understanding of our company culture and development process before they make their decision)

The list goes on and on, and most of it doesn’t require Visual Studio.

Lots of senior engineers wind up going down a similar path after a couple years, and before you know it you have six people reporting to you.

Thanks for making it to the end!

I hope you enjoyed reading this piece as much as I enjoyed writing it.

For additional perspectives, check out this article’s discussion on the /r/programming subreddit. It has a number of great comments in it.

If you’d like to stay in touch, feel free to join my programming email list, or add me on LinkedIn, Reddit, YouTube, Instagram, and/or Medium. 🙂

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.