A senior software engineer is essential to any successful team and business with a digital offering. They are the technological backbone of a product or service, and in the digital age, nearly every business needs software engineers in some capacity. Similar to other tech roles, they are in high demand, particularly senior positions, which require more experience and a more niche skillset.
In fact, software engineer employment is expected to grow by 21 percent between 2018 and 2028 - noticeably higher than other industries. Now, during the COVID-19 pandemic and the remote shift, software engineers are even more desirable to support companies transitioning from in-person to online services.
Companies looking to hire senior software engineers need to have an in-depth understanding of the role, the new landscape, and the best channels to find the right talent. Here's what to look for in a senior software engineer, as well as a recap of their responsibilities and salaries:
What do senior software engineers do?
A senior software engineer is both creative and a problem-solver, responsible for leading the entire development program for a piece of software. They develop, design, and install software solutions, as well as build applications for users to complete certain tasks, and make the underlying system that runs software. Beyond technical duties, senior software engineers also lead a wider team of developers, ensuring that all contributions improve the software functionality or user experience.
Other senior software engineer tasks are to:
Collect and analyze user data to optimize software accordingly
Recommend software upgrades or fixes for existing systems
Instruct a team of developers on how to write and implement code
Run regular tests and maintenance checks of software
Iterate and upgrade software
How much do senior software engineers earn in the US?
According to Glassdoor, on average, senior software engineers in the US earn $121,521 annually. Of course, this figure can fluctuate depending on the company, location, experience, certifications, and the type of role (i.e. full-time, part-time, freelance, outsourced).
While senior software engineers are amongst the top 10 highest-paid tech positions, their salaries are a reflection of the expertise needed to fulfil the role properly. Software engineers not only construct and manage systems, they also drive innovation. Plus, because senior software engineers are in short supply, competition for top talent is fierce, meaning engineers are in a prime position to negotiate better payment. Smaller businesses and startups that cannot afford high-end wages have to ensure that they offer other benefits to compensate for the drop in salary - for instance, flexible hours, equity, greater product ownership or more vacation days.
What technical skills to look for in a senior software engineer?
A senior software developer has to have a vast array of technical skills. They should be confident using programming languages like Python, Java, Ruby, and C, as well as software tooling like JSON, RDBMS, JQuery, XLM, MVC frameworks, and Design Patterns. At the same time, they should be familiar with test programs and fixtures for internet applications, including HTTP, TCP/IP, and POP/SMTP. They should also be aware of the most recent mobile and web development models.
Elsewhere, senior software developers need a thorough understanding of SOAP, REST, and API design, along with flawless knowledge of SaaS models. They also need experience writing SQL queries, and a grasp of IIS and version control software. Having a working knowledge of Visual Studio, Webforms, MVC, and Entity Framework factors in too, while Agile/Scrum methodologies are a bonus.
Ultimately, a senior software engineer should be able to develop quality software using a variety of tools and be confident in scaling projects via cloud-based infrastructure. Other skills may be suited to your project, in which case, you'll need to fully assess what resources you have available, and consider what technical skills are most fitting.
How to vet for the top skills
A practical test is the most effective way to vet senior software engineer skills. Fizz Buzz, TestDome, and Mettl, are platforms offering assessments on coding, problem solving, and software architecture.
Alternatively, you can design an in-house test and use the hardware and accounts your team typically work with to get an impression of the candidate. It's worth testing senior software engineers on their ability to code individual components and larger, more complex systems. When reviewing their test, be sure to pay attention to the performance of the code, and its reliability, security, and scalability.
There are a few signals that reveal whether a senior software engineer is great as opposed to good. They should display natural leadership abilities, and be comfortable working seamlessly with other technical and non-technical roles. Additionally, they should be able to communicate the most complex scenarios in the simplest of terms.
In the interview, ask them about their previous teams and projects, encouraging them to specify how they were viewed by their colleagues and to give examples of times when they encountered issues and overcame them. See if they were the first port-of-call for analysts, testers, and product owners - did people respect their opinion and expertise? Were they asked to comment on code that they hadn't written themselves? Another giveaway is if your candidate was called on to represent the tech team in cross-departmental meetings or if they were looked at to determine the next sprint phase.
What soft skills should you look for in a senior software engineer?
While technical skills certainly matter in your search for a senior software engineer, soft skills also come into play. You may have a genius applicant who ticks all the tech boxes, but what if they can't communicate well in the team? How will they lead and present to people if they're nervous public speakers? These are a few attributes that aren't deal-breakers, but should be taken into account during the selection process:
This is arguably the most important soft skill. Senior software engineers must be able to articulate themselves well both verbally and written, and adapt their communication depending on who they're speaking to. They may be extremely knowledgeable about tech features, but if they can't clearly describe processes to other stakeholders, there will be a problem.
Similar to communication, a senior software engineer should listen in a way that can take on board criticism and read between the lines. For example, they should know if a team member is struggling but afraid to say, if a client is losing interest in a project or if a vendor doubts a recent fix.
Like in any job, time management is huge. For senior software engineers, their time has to be split among stakeholders, the team, vendors, and other departments. Balancing what is and isn't a priority is essential to keep things moving forward.
As the head of fellow software engineers, a senior role means being patient, personable, and willing to use creative techniques to teach others. A senior software engineer is responsible for others' professional development, and so has to provide meaningful guidance.
This ties in to problem solving, analysis, and troubleshooting. Critical thinking is what allows a senior software engineer to assess a situation, make a judgement, and take action. What's more, they have to judge without bias, cynicism or lack of evidence. In an increasingly data-focused business landscape, critical thinking is what drives informed decisions.
Attention to detail
Despite wearing many hats, senior software developers are required to keep a close eye on everything going on. They have to know when to slow down and check on things, develop their own methods of quality assurance, and detect issues before they are irreversible or have negative consequences.
How to hire a senior software engineer?
1. Understand the market
Because senior software engineers are in such high demand, the best ones have the luxury of being able to pick the organization they want to work for. What this means is that, often, you're the one being interviewed by senior software engineers. That shouldn't intimidate you though, instead think of it as an opportunity to showcase your brand personality and find the person most suited to your culture.
2. Write a job description
The job description you post says a lot about your business. Many companies make the mistake of posting a vacancy and only focusing on what they're looking for, rather than what they offer. Early on in the description, introduce your company, state what your mission is, and describe what sets you apart from other players. Avoid generic terms and cliches, list the perks that come with the role, and remember to present your company in a positive light.
Once you're happy with the job description, have a technical writer and any software engineers already working with you proofread it.
3. Share information about your company
Beyond the job description, ensure you have easily-accessible content on your website and social media accounts that provide a clear picture of your company. Many candidates will do their research to learn about the offices, team, and structure of the business; if they can find this information quickly, it implies that your company is organized and transparent.
4. Have a screening call
After you've received resumes and have narrowed down your pool of candidates, it's time to have a screening call. This doesn't have to be overly formal, it can be a 'getting-to-know-each-other' chat where you can check the credibility of someone's experience and become familiar with their general demeanor. A common misconception is that this call has to be tech-heavy, which is not the case - it should be ten minutes to connect person-to-person.
5. Create a take-home test
Design and send a technical test for the candidate to complete. The test should be representative of what your company does and take no longer than two hours to complete. You could ask them to refactor code, fill in a multiple-choice quiz, take part in a coding challenge or any activity that confirms their technological skill set without being too taxing. The trick here is not to overwhelm candidates, you want to keep them interested and engaged.
6. Plan the interview
The interview is the chance for a full conversation. It is not another test but a dialogue between both parties.
Start with behavioral questions to get a sense of how the software engineer has performed in the past and how they could perform in similar situations. Then follow-up with deep-dive questions that hone in the applicant's tech curiosity - the answers will be what distinguish senior software engineers from entry-level ones. Even if the interviewee cannot give a concrete answer, what matters is their methodology and explanation for why they choose a certain course of action. The more thought-provoking your questions are, the more likely you'll impress the candidate and show that there's potential to learn while working at the company.
Naturally, during this section, you also need to monitor if the person is a good team fit; if you're having the interview in-person, ask an existing team member to go to lunch with the candidate. This provides the interviewee with a lower-pressure environment to ask questions and get a feel for the culture, while your team member can get to know their potential new lead.
No doubt, hiring a senior software engineer can be a complicated journey. However, understanding what they do, salary expectations, and the technical and soft skills required, will make your search faster and more efficient. As one senior software engineer puts it, "when thinking about your recruitment process, think about how the perfect candidate will experience it, and tailor it for them."