For many companies, senior software developers have a sort of ‘holy grail’ status; companies want them, aggressively try to acquire them, but have lots of trouble doing so. Because of a booming tech industry, a flood of newly minted junior developers, and project complexity that just keeps increasing, senior software developers are in greater demand than ever before. Companies are willing to pay seniors a lot of money — as long as they have in-demand skills, experience with the latest tools, and are quick to provide value to the project they’re tasked with. However, while these are the reasons most companies try to hire seniors, my argument is that a large skillset and minimum time to productivity are among the last reasons companies should be trying to hire senior software developers.
In this article I’ll dive into three areas where seniors provide the most value, namely mentoring, acceleration and perspective. Afterwards, I’ll then touch on the disconnect between attributes that companies value but that aren’t nearly as important.
Senior software developers, the really valuable type, have an aptitude and inclination for mentoring more junior members of their team. These types of developers are compelled to teach, and they tend to be generalist enough to impart valuable information about most relevant tools and technologies. Great mentors are able to both recognize the cause of misunderstanding with a mentee, as well as distill a simple solution that the more junior member will understand and retain. In addition, a great mentor will also be able to effectively synthesize new information and learning opportunities across the whole team, so that when one member learns something new, the entire team can learn and benefit as well. While it shouldn’t necessarily be the job of a senior developer to lead the entire team all at once (that’s the job of a tech lead or manager), good one-on-one mentoring skills are an invaluable addition to any organization.
However, many companies (especially startups) don’t have the foresight (or the luxury) to value mentoring ability over other skills with a more immediate impact. This is due to the reality that software developers have a very high churn rate, and so many companies are wary of investing time and resources into employees that are likely to go elsewhere. While this is tangential to the topic of senior software developer skills, companies who adopt this mindset should try to be introspective of the root cause, and do their best to fix it. Any company with a high rate of developer churn should be worried about their long-term prospects.
Acceleration refers to the process by which an individual or a team can do work that increases the potential for productivity elsewhere in the team or organization. It can’t be understated how incredibly potent a developer can be when they are skilled in accelerating their peers. This usually consists of optimizing or creating tools that allow others to increase their leverage when solving problems. This can be anything from simply cutting compile/live-reload times for development environments, applying systems like unit-testing to key areas of an app, and understanding where those areas are, or even leading meetings that align stakeholders on specific goals of a project in order to speed up the development process.
This is a skill that can sometimes be a bit opaque, but one way to determine if a developer is also an accelerator is if they are never satisfied with current performance, and are always working to improve it. The first point alone is not enough. Many developers, many “seniors” included, are very quick to bring up the issues with an inefficient process, but not nearly so many then strive to correct it. Continuous improvement, both personal and organizational, is a hallmark of an accelerator and it’s an incredibly powerful thing to add to a company.
Perspective is a hard-earned skill, one that can only really be developed by spending time solving problems and seeing recurring trends and themes over many years of experience. Perspective allows a senior developer to make informed decisions, free of any dogma associated with trendy technologies.
Two main attributes can identify a senior developer with great perspective (time is not enough — there are plenty of average developers who have been doing this forever). The first is an insatiable appetite for learning new things. This is a great quality in any developer, but when paired with experience is a trait that can have a huge impact on a company. The second attribute is range. Developers who immediately reach for the same tools for every problem lack range, or flexibility. This pigeonholes them into a narrow point of view. The tools may be programming languages, paradigms, or architectures, but a great senior developer will be able to switch seamlessly between many options, and understand why each is good for a specific purpose.
4. What companies want vs. what they need
Everything else that makes a good senior, including a sharp skillset and an ability to build solutions using in-demand tech, are relatively low impact compared to the above points. Even still, these are the reasons most companies I’ve seen try to hire senior devs; they need a quick, off-the-shelf solution to complex problems in their specific problem domain. While many good senior developers can provide this, so can many good mid-level developers and even a few juniors.
Being able to quickly build solutions should not be what companies first look for in a senior developer. This kind of short-sighted approach will, at best, mean that a company is losing out on hiring engineers that can provide much higher value. Think of it this way: a common cliche used when looking for senior talent is the idea of a “10x Developer”. This amazing programmer is 10 times more productive than his average peer, and is able to solve problems that no other developer even understands. While this is obviously a desirable quality in an engineer, there is much more value to be had from a senior with a better handle on good mentoring skills, the ability to accelerate, and a hard-earned perspective on programming and architecture problems. Compare this 10x developer to one who can provide 3x increase in productivity, not to problems he works on directly but instead to other developers in his company. It’s not hard to see that this 3x senior developer will outpace the 10x developer relatively quickly in even a small team.
Mentoring, acceleration and perspective. These are the skills companies should be looking for in prospective seniors. If you agree, consider clapping a few times. If not, I’d love to hear your reasoning, so drop a comment below.
If you’re interested in reading more, here’s a short list of content I think is applicable:
- Signs that you’re a good programmer
- Signs that you’re a bad programmer
- How I Became a Better Programmer
- How To Become A Senior Developer
Thanks for reading.