This post is tackles an unnecessarily mysterious subject–the make up of junior vs. senior developers. You don’t know what you don’t know, ya know?
Woohoo! You’ve landed a job as a junior software developer.
Hopefully, you have some skilled senior and mid-level programmers to soak up some knowledge from.
Developers that have been in the game longer than you are a key component to your learning, but what makes a senior developer a senior? I’m not referring to specifics, rather generally, why does it seem like they know EVERYTHING while you are barely getting a handle on stuff? From the perspective of a newbie developer, it might seem like they do, but they don’t. In fact, your average senior developer still only knows a fraction of all there is possibly to know in the world of programming.
Imagine the blue area in the graphs above representing all knowledge in the world of software–not limited to languages, algorithm design, databases, architecture, frameworks, systems, tools, etc., etc., etc.–I could go on for paragraphs here. Notice that the senior dev is still a relatively small circle in the eco-system of potential knowledge. In reality, those blue circles are much bigger, but for purposes of fitting on your screen, you get the point.
This is a humbling fact that contributes to why I love my profession. You can never run out of new things to learn. What I’m trying to say is this is not possible:
How fucking cool is that? You get to work in a profession where there is vast amount to be learned. Not only that, but the world of tech and software moves so fast that there are always new things being invented to learn at a faster pace than any individual can possibly absorb.
So, senior devs still have plenty to learn too…
However, this doesn’t account for the knowledge gap between a junior and a senior. What exactly is different between our two developers besides time? Examining closer, a junior dev could know a little bit about a handful of technical subjects. The yellow circles below might each represent programming language(s), frameworks, or some command-line foo. Consider these foundational blocks to keep building upon and then expanding into new areas of knowledge.
What this looks like in a senior developer is more akin to the graphic below. Here we see much larger yellow circles representing strong proficiency in possibly the same topics as the junior dev, plus comprehension of many more. The senior dev has knowledge of tangential subjects and understands how they overlap. Over time and through active learning, they’ve had exposure to more things and can thus pick up new stuff easier.
It isn’t all about technical proficiency
Equally tantamount is an under-described attribute that separates juniors and seniors–resourcefulness. When we speak about being resourceful in the world of programming, we mean how to find things, how to un-block yourself by pursuing answers, how to ask informed questions, and how to overcome a lack of expertise. Learning to be resourceful comes with time, but it is a skill. How fast you gain this skill is up to you.
Last look at more circular graphs, I promise. Pink in the graphics below represents resourcefulness.
Most junior devs aren’t extremely resourceful. It isn’t your fault! You need time on the job and to “apprentice” with those more advanced than you. The great part about this skill is that you can practice it daily, just like programming, and become better.
If I were to boil this article down into a three word summary: perspective, proficiency, and resourcefulness. More on how exactly to achieve the later in a future post.
Toodles for now my sweet programming pals,
Kaylan