Jacob Comer
Dec 24, 2018 · 10 min read

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.

Image for post
Image for post
Full Thread: https://bit.ly/2QSkKgw

  • Do people benefit from the comments you leave on their pull requests? Do you offer constructive criticism, or is your feedback a little rough around the edges? When you find a gap in someone’s knowledge, do you simply say “change this line from ABC to XYZ”, or are you able to coach them through why their approach probably isn’t optimal, and have them walk away feeling better about themselves as a developer? They just learned something new, after all.
  • If 100,000 users create accounts today, will your code start throwing a bunch of timeouts and 500 errors? Are you sure that your PR will fix the issue? Do you know how to benchmark your changes and prove it?
  • How good are you at breaking extremely technical issues down into simple language that every other department at the company can understand? Did you let a bunch of engineering jargon slip when explaining to marketing why that one feature isn’t really feasible?
  • Do you have a deep understanding of object-oriented programming? Does the system architecture you came up with “just make sense”?
  • How’s your writing? Are you able to get your point across when replying to emails, or do people usually walk over to your desk after you hit Send so they can ask you for more context?
  • Do you proactively reach out to senior management with ideas that would make your team more effective? When you want to see a process change implemented, are you capable of explaining the benefits to all of the parties involved? Can you get everyone excited about the change? Can you follow through, and make sure the new process actually sticks?
  • Do you respect everyone else’s time? When you ask me to help you pair through a problem, can you describe the exact part of the codebase you’re having trouble with (line numbers that are throwing exceptions, describing the six approaches you’ve already taken before I waste time repeating the work, sending me relevant stack traces)? Do I have to pry all of this information out of you? Is it already open on your MacBook before I walk over to your desk?
  • When scoping out large projects with other departments, how in-depth are your questions about the new features you’ll be developing? Are you able to flesh out every single edge case before you start coding? Are you able to recognize scope creep early, and put a stop to it before the entire team is stuck burning their Saturday afternoon in the office?
  • How well can you multi-task? Does your brain get overloaded? Similarly, when working on those big features, the ones that touch like 50+ files… can you keep them all in your head at once? Have you developed solid note-taking habits? How do you plan on keeping track of the five million things that are going to pop up before you leave today?
  • How do you react when a piece of code that you wrote is causing the billing page to error out, and your lead engineer has to cancel their dinner plans so they can stay late and help you fix the problem? Do you get emotional? Can you still think rationally? Are you able to detach from the situation, and remind yourself that every developer on the planet ships buggy code every couple days?
  • Do you understand how business works? Do you understand why software engineers can demand such insane salaries, even when unemployment breaks into the double digits? Why is programming such a valuable skill set? Why is the customer willing to pay your company $50,000/yr for some super basic web forms? Do you feel like they’re getting ripped off?
  • Can I trust you to interview candidates? Are you good at sizing people up with limited information, and visualizing how they would fit into the team? Can you recognize when an exceptional engineering candidate wouldn’t quite mesh with the company culture? Would you recommend that we pass on them? In a similar vein, even if you know 5 minutes into the Zoom session that someone isn’t getting an offer, are you able to make sure that they still have a positive experience chatting with you? Word travels fast on the internet.
  • It’s December 28th. You’re stuck in the office. You went a little crazy this year and burned through all your PTO by mid-September. The higher-ups are out of town for the holidays. Do you still show up on time? Are you going to put in a half-assed day, since the principal isn’t around to punish you? Should we keep you around if you’re not pulling your own weight?
  • Opportunity cost is a real thing. How good are you at balancing technical debt and moving the business forward? Do you refactor every tiny coding style issue you find? It can be painful to say “this piece of code is annoying, but it works, it will take four hours to clean up, and my time is probably better spent building out this other feature that tons of customers are begging for”.
  • Do you know how to give your manager feedback on their performance? Do you have a good working relationship with them? Do you see them as the enemy? Are you actively trying to make their life easier? Reduce their stress levels? Do you ever say the words “is there any annoying stuff that I can take off your plate?” The company hired that person for a reason. They might be more experienced and qualified than you think.
  • How good are you at putting out production fires? Do you panic and freeze up whenever shit really hits the fan (AWS outage taking the website down, accidentally dropping the customer_invoices table, some bug causing data leakage between different user accounts)? Do you crumble underneath the pressure, or can you keep your composure, and communicate effectively with other departments while fixing the issue?
Image for post
Image for post

  • working with the product team to scope out upcoming work at a more granular level, so that there’s very little back and forth required between them and the engineer who will eventually pick up the JIRA tickets
  • organizing team building activities and group lunches
  • pushing back on the CEO/CTO when the upcoming quarterly goals they’re considering sound a little bit too optimistic, and would most likely cause the rest of the team to burnout and start sending their resumes around
  • hopping on weekly check-in calls with some of our biggest customers (to answer all of their technical questions personally, and make sure the relationship stays healthy)
  • investing 6 months into a proactive security audit, to continuously refine our internal processes at each checkpoint in our company’s growth
  • figuring out where other developers have gaps in their knowledge, and exposing them to the techniques they’re missing out on (in a way that makes them excited to expand their skill set): manipulating CSV files with vim macros, useful 2–3 letter programs to use in a linux terminal, advanced SQL commands, how to make PR descriptions more descriptive, explaining how load balancers work, chatting about the difference between merging and rebasing, etc.
  • helping the design team flesh out which features are easy to develop before they spend hours converting the wireframe into a high-fidelity mockup
  • improving our process around letting the other departments know when new features drop (writing better release notes, answering any questions they have during our weekly internal product demo, helping them write external documentation that our clients will understand), since a feature that no one knows about isn’t going to solve any actual problems

Thanks for making it to the end!

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

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store