It’s OK to be a Junior Software Engineer

One of the most frequently recurring themes in my role as an engineering leader is the idea that junior engineers don’t like to be called junior. I suppose I can understand this sentiment on some level. These days, the ability to program is seen as “trendy”. Not too long ago, that same ability placed you somewhere close to the fringes of society where stereotypically “nerds” dwelled. This shift is somewhat expected given historical context. During the early days of personal computing (particularly mainstream internet access), consumers expressed healthy skepticism. At best, it was seen as a novelty. At worst, some saw it as the early stages of an evil machine AI. Today, consumers understand “apps”. They live with personal computing devices every day — even to the point of over-reliance. There are “overnight success” stories of people dropping out of school, writing apps and getting rich — or at the very least, switching careers and living comfortably.

Back to the discussion at hand — junior engineers. People want to be seen as being good at the thing they do — particularly if that thing is seen as “cool” in the eyes of society. Besides being cool, if you’re really good at it, knowing how to code, can earn you a great living. The adjective “junior” puts a modifier on your title which indicates you are fairly new to the game and still have a lot to learn. Here’s a little secret: even senior engineers still have a lot to learn. The journey from junior to senior is different for everyone. There’s no need to be ashamed of your junior status — you have to start somewhere. The insecurity that dwells under the anxiety of wanting to drop this adjective is working against your long-term best interest. Being a (good) engineer implies a journey of constant learning. The fact that you’re junior simply means you started learning fairly recently whereas the adjective senior implies you’ve been learning for quite some time already. Either way, you’re still learning.

I’ve read posts in which the author encourages inexperienced engineers to drop the use of the junior adjective for resumes/portfolios in an attempt to somehow obfuscate their lack of experience. The author of this particular post talks about being trained to hide their bootcamp experience altogether. Let me be as clear as I possibly can: this does not work! Well, at least not in the way you think it does and not for most people. One’s experience (or lack thereof) exudes from their ability to articulate their current responsibilities, the technological limitations of their favorite frameworks and weigh the pros and cons of alternative solutions etc. This insight will manifest during a well established interview process. Pretending to be more experienced than you are may get eyes on your resume, but those eyes start rolling the second things don’t add up.

Hiding your junior status or inexperience can sometimes hurt your job prospects. From a manager’s perspective, a junior engineer is someone who is prime for growth and molding. Junior engineers bring little to no industry baggage to the table which makes it much easier to indoctrinate oops, I mean groom you for success in the context of their organization. A more experienced candidate brings a lot of baggage. They tend to come in convinced that the way they’ve done it for the past X years is the best way. Or worse, their way of thinking is so deeply embedded in their cognitive processes, that it can be hard to get them to think about problem solving in any other way other than how they’ve been doing so.

The junior stage of your career is an important one — it helps define you as a professional. If you attempt to rush out of it (or skip it), you’ll miss out on some key insights and experiences which are generally only available at your junior stage. For example, a manager won’t have as much patience for an engineer with a mid-level title (and compensation package), but with junior level knowledge/ability/output. There are expectations for those higher titles. If you’re not careful, you’ll be perceived as an underperformer if you obtain them too quickly.

The same general advice applies to mid-level engineers wanting the senior title. In many instances, this is even worse. Many people assume the length of time from junior to mid is roughly the same for mid to senior. The junior to mid jump is almost always relatively short. This is because the gap between junior to mid is typically viewed through the lens of productivity. A smart junior can quickly work their way to mid-level status in short order through immersion and accelerated (on the job) learning. But, regardless of how smart you are there are no real shortcuts to becoming a senior engineer. A senior distinguishes herself through experiences — mostly failures, but also key successes. A good senior engineer will help a team avoid learning lessons the hard way and bring practical guidance for building maintainable systems. This type of intuition can only be gained through experience. Sure, you can read about the right way to scale systems, watch YouTube videos and go to conferences, but it’s not until you’ve lived these experiences that you actually internalize them. This builds a cognitive pathway of corrective thinking which helps to encourage planning, practice caution, avoid recklessness and resist the temptation to chase shiny new things. Time must pass in order for this process to bootstrap itself correctly.

It’s important to understand that I’m not discouraging upward mobility. I want to communicate that moving up as a means to drop a title adjective or dropping it in an effort to obfuscate your past not only harms yourself, but can also harm your team. If you’re ready for a promotion, by all means, have that conversation with your manager and push for what you deserve. But never be ashamed of your current status — it will serve you and your team well.