Software Developer Career Evolution: The Junior Years
Part 2: Software Developer Career Evolution: The Middle Years
What are the differences between a junior software developer as compared to a senior? Clearly some difference must exist as the remuneration difference must be accounted for. But is this difference merely in technical expertise or are there other factors which go into the equation? These are the questions every people manager must come to grips with at some point in their career.
Though many organizations have human resource departments that deal with such classifications, there is a secondary and perhaps more important source to draw these distinctions from; namely, from software developers who have started at the bottom and battled their way up the career ladder.
In this four-part series I will share will you what, after 17 years in industry, became my standard for understanding the various tiers of developers. Though others may have alternative opinions, I hope this gives you new people managers a guide to work off of.
In this article I will cover the first two tiers (of nine) which for the most part cover the first five years of a typical developer’s career; the junior years. This article is biased towards the Microsoft stack.
Title: Software Development Engineer
Tier 1
You are either fresh out of school or have only been a few years in the industry. Technology qua technology excites you. You feel like a wizard who is able to bring all sorts of things into being in a way that still feels magical. Learning is your biggest motivation as you feel you are increasing your power with every new technology you encounter. You have not experienced the full development lifecycle of a product and so have yet to be burdened with the crushing reality of seeing your work grow obsolete or be outright discarded based on shifting business needs and market forces. You like to program at home and usually have a pet project on the go.
Responsibilities
You will be assigned simple features to work on. Typically, these features are well understood and have been implemented similarly before. Most of the work is a matter of modifying code, filling in detailed code or configuring existing infrastructure. Your mandate is “Don’t burn down the house” and to learn the ropes (i.e. how things are done in the group). Your managers and more senior developers are playing a balancing act in not assigning something to you that may be a setup for failure. You are to follow instructions carefully even if they may seem somewhat strange as your ability to see the grand scheme of how everything fits together is just forming.
How You Get Promoted
You have been sufficiently habituated into the methodologies used in industry; methodologies such as SCRUM, Waterfall etc. You have grown very familiar with all the tools that you need to perform your job – there if no part of Visual Studio you do not understand and you have at one point or another used pretty much every option that Visual Studio allows for. Your resume can be padded with a log chain of features you have worked with within the .Net framework and can sling acronyms without blinking. You can be relied upon to estimate properly within the project and are consistent with delivering on your own estimates. You no longer feel you are “still learning” your tools. You can take a technical specification and implement the tasks with little to no help from someone more senior.
Tier 2
You have been in the industry for a few years now. You feel you have mastered all the tools and methodologies typically used and are on the lookout for ever greater challenges. You have grown arrogant believing that a mastery of tools and methodologies means you are approaching master status of the craft. You sometimes, if not often, believe that a 3rd party library or tool can be rewritten by you in no time and it is a better idea that you just code everything “from scratch” as oppose to those “faulty” 3rd party components. You take on board more and more responsibility because there is just nothing you cannot handle – until you find yourself no longer able to handle it. Though you are now a very competent developer you have yet to realize the safety net the seniors have always had setup for you.
Responsibilities
You will be assigned more complex feature work but still remain constrained within a bestowed upon architecture. Your will be solicited for your opinion about refinements to process as well as solicited for opinions in relation to improving the code base. Integration work and configuration are also a mainstay activity among those you are tasked with. However, most of your work remains the same as before. You still develop to specification yet you are starting to gain influence on these specifications. Though you will be pushing boundaries as to what you believe you are allowed to decide within the team, you will still remain contained to the “make a suggestion” level of decision making. You are expected to deliver code quicker than you did before. You are expected to not make mistakes someone a couple years your junior would make. This is the first time you will begin to be punished for mistakes that you would be allowed to make earlier in your career.
How You Get Promoted
Your first significant career jump will be from a Software Development Engineer to a Software Development Engineer II (Tier 3). This is not a routine promotion or a trivial change. Some never make this leap even after 10 years in industry. To achieve this promotion, you will need to demonstrate a character change in addition to excellence on the technical front. You will stop thinking of yourself as a silo developer. Though your individual contribution is of paramount value and importance, you have learned you are much stronger as part of a team. You come to realize that software development is really a team sport. You see work as a collection of interdependent tasks that must be coordinated among many people (and teams) and therefore you see the value in making sure others around you are also excelling at what they do.
Your presence on the team makes the unit stronger in a non-linear manner. What this means is that your influence increases overall productivity of the team. (You are becoming a force multiplier!)
In the next article I will spell out the middle years in a developer’s career. Usually years 5-8 in industry.
Please share your views on what you see as the junior years of a software developer's career looking like.
Great article, boundaries between junior, medior and senior are becoming more vague because of the 3- year experienced "seniors". I'm sure that there are developers that exceed the default learning curve and have talent for seeing the "big picture" of software development and thus grow faster into senior roles. Curious for the next article! Cheers.
Woj publishing. Good for you.