At Codevate, we generally focus on hiring senior versus junior developers, preferring to keep a tight-knit and experienced team that delivers high quality work. In part, that's because we typically prefer to work longer-term, more complex software projects.
Everyone will have different ideas of what a “junior” or “senior” developer is, as there are no hard rules or requirements that define these roles. This post aims to outline what we consider the main differences to be, as well as to explain why we believe that only hiring senior software developers is best for our company and clients.
It's important to say that there is no hard split between a junior and senior developer, but more of a scale (hence the term "middle-weight developer.") When we say a senior developer, we mean mostly towards the upper end of the scale.
Why don't all software companies exclusively hire senior developers?
Every team, client, and software project is different, meaning the most appropriate balance of cost and experience differs. At Codevate, we work on large systems with many moving parts, complexities, and technologies, where having the breadth and depth of experience that senior developers have is essential.
Our projects often involve a high level of research and development, with some elements being patentable (think bespoke software rather than “cookie cutter” or “ready-made” development.) Other software agencies may work on simpler, shorter-term projects, such as WordPress websites, which can afford to get away with more junior developers.
We believe that software companies often get the balance wrong - offering a service with lower quality development, lower cost efficiency, and/or worse timescales, endangering the project's capability for making a return on investment. Ultimately, it's clients that pay the price of failed projects after being tempted by lowballed costs or a “bigger team.”
It's not uncommon for agencies to try to punch above their weight (in the name of “company growth”) and subsequently fail to deliver within the project time/budget, or to an acceptable quality. There's a reason why the industry project failure rate is so high, while after seven years, we continue to maintain a 100% completion rate.
Which qualifications should I look for in a senior software developer?
Unlike in other industries, in software development there are no formal qualifications required by law for someone to practice as a software engineer, which can make hiring a bit of a "Wild West" situation.
This means individuals can claim that they are “senior” when they're not. On the other side, software companies sometimes advertise their developers as being “senior” when in reality they don't have the experience (intentionally or otherwise).
While there are certain qualifications available in specific areas/technologies, they may not be the best indicator of actual day-to-day ability. Someone can quite quickly gain surface-level knowledge and pass an exam, but they may be ineffective at actually performing the job. Software development is often more complex in practice than in theory — project constraints and business objectives need to be considered.
Identifying a senior developer is more a case of “it takes one to know one”, which can make effective hiring difficult for local software companies.
The team at Codevate is led by experienced software engineers, giving us the tools to properly assess new recruits. In comparison, many local software agencies are run by those from a marketing/sales background, which means they may struggle to make the right hires without relying on others.
In some cases, businesses turn to recruitment agencies for help. However, recruitment companies can face the same issues, and agents are often set targets and are incentivised to make as many placements as possible, no matter the fit.
As part of Codevate's interview process, candidates undertake a technical test which covers a breadth of skills and technologies, carefully aligned to what they would do on a day-to-day basis. This allows us to assess how candidates normally work, and clearly see the common mistakes they make (or avoid). This can be a double-edged sword, as it can make recruitment slower for us — we often identify many candidates who don't make the cut.
If it's not about qualifications, how many years does it take to become a senior developer?
The number of years experience someone has can be hard to evaluate too. Think “5 years of experience” versus “the same year 5 times over”. Some software developers can plateau and never become a senior in their career. Basing the decision on a number of years can also inadvertently have the effect of discriminating against candidates based on their age (which is illegal in the UK).
Therefore, we don't believe that a developer automatically becomes a "senior" after a certain number of years. It’s common for veteran developers to have been stagnating using the same technology and/or codebase for a number of years, where they are not really gaining much experience, improving their abilities, or challenging themselves.
Once becoming a senior developer, software engineers can sometimes reach a plateau, as their workload moves more towards managing junior team members than producing work themselves. Our senior developers still “get their hands dirty” and keep growing, not just stopping at a certain level of experience.
The breadth of experience and technologies can really help determine a senior developer. Single project/technology developers can perform worse than their more widely experienced counterparts, as they do not have the range of experiences to draw upon and apply. They haven’t had the opportunity to make as many mistakes to learn from. Being locked into a single project, tasks can be repetitive, providing limited challenges or learning opportunities.
Being a “full-stack” developer, as everyone on our team is, gives developers a much clearer perspective on the whole project architecture - as they have insight for every part of the system.
Do junior software developers need more project management?
The ability to work autonomously and independently is expected of a senior software developer. We would consider a senior developer to require no hand holding and be able to undertake work on their own.
We favour senior developers more due to their independence - it allows us to optimise project management, focusing on the essentials, making projects more cost-effective for our clients. Other companies may allocate full-time project managers, where these costs could be used for better purposes.
For junior developers to be effective at producing production-ready work, they need to work alongside a senior from whom they can learn from and form good habits. Seniors will review and provide feedback on work, but it’s worth noting that this can take a substantial amount of their time to do properly in a way that trains the junior, rather than just doing it for them. Code will often be sent back to improve, taking additional time for the junior, and then more time from the senior to review the new work and quality assure.
It can be tough for companies to dedicate enough supervision time within a project timeline or budget, which can negatively impact the quality of the project (and its ability to make a ROI), as well as crippling the long-term effectiveness of their team.
What's the difference in cost between junior and senior developers?
It's not uncommon for software agencies to have a single/flat rate for both junior and senior developers, charging them out at the same rate per day. This could mean that a client ends up paying the same as (or more than) they would to have a senior developer work on their project, as juniors tend to work at a slower rate, produce lower quality work, and need to work with a senior to produce production-ready code.
A comparison could be made with a student dentist, where a student will perform work on you under the supervision of a qualified dentist, at a lower cost. Except in this case, you would be paying the full dentist's rate for the student's work. As a customer, why not just go directly to the qualified dentist?
As senior developers are more experienced, they tend to be full-stack (i.e. they can work on all areas of the software). Being full-stack means that developers can more easily apply their skills to different projects, providing flexibility in our scheduling as a software agency. This allows us to lower scheduling overheads and pass cost savings onto clients.
What's the difference in the quality of work between junior and senior developers?
Having the experience to pick appropriate technologies and techniques for long-term projects is a key factor. Senior developers will generally let maintainability, readability, and extensibility design choices take the forefront, as they have learned the consequences of not following these in the past.
Juniors may gravitate towards using the newest trendy technology available, with little concern for the long-term business and software consequences. This can have a devastating impact on a project later down the line if left unchecked. Technical debt can cripple a project; a poorly chosen open source project could be discontinued, requiring a rewrite instead of straightforward maintenance.
Juniors also tend to have a "just make it work" mindset. They may have the impression that cutting corners is "Lean methodology" but it's not - it's paid for later when maintaining or upgrading the system (with interest!) Seniors will have a better understanding of where to conserve project resources.
A good example is the security of a system, where even the best developers can have vulnerabilities in their work. You likely often hear about data breaches from hacked systems in the news. Juniors just don’t have the experience to cover all bases to produce exploit-free code. This is becoming more and more important in an increasingly more privacy focused world.
Seniors tend to prefer simpler solutions, rather than the over-engineering/over-complicating that many juniors fall into the trap of. Seniors appreciate the testability/maintainability/readability of solutions, as they understand the benefits due to experience.
Are senior developers really that much faster than juniors?
Seniors can be substantially faster (even orders of magnitude) than junior software developers, especially ones without supervision or guidance. Studies have shown that there can be more than a 10x difference in productivity. The experience of having solved many similar problems in the past gives them a great advantage.
It will often be one of a junior developer's first jobs, so they may lack the workplace discipline seen in their more experienced colleagues, which can mean less time is spent actually writing code. This is even more challenging in recent times, with home-working enforced around the world, making it harder to train people into good habits.
Are junior or senior developers better for long-term projects?
A key attribute of a senior developer is having excellent communication ability. They will be able to write clear concise documentation and communicate their thoughts to other team members easily and concisely. Juniors will tend to write code as fast as possible, leaving a trail of undocumented decisions that can be unclear to those in the future.
Retained knowledge is crucial for the long-term success of a software project, so keeping those around who originally worked on the project is important. From what we've seen in other software companies, juniors are likely to have a high churn rate, as they want to go and experience the different types of companies/work on offer. Seniors will appreciate a good fit when they find one and stay for much longer, as they have seen the pros and cons of working in different environments.
So, do I need senior developers on my project?
In our opinion, senior developers are required to weigh in on software design, implementation, and QA on anything other than a simple project. Going without opens the project up to many risks.
If your aim is to be cost effective, adding juniors to your team can sometimes be the right way to go — but what they lack in software development experience, they will need to make up with other soft skills. Seniors may seem more costly up front, but their experience and long-term planning will pay dividends in the long run.
Investing in juniors can be a great way to build your team over the course of time, but you'll need an excellent staff retention plan in place to make the investment worth it.
At Codevate, we like to work on challenging bespoke software systems that utilise many different technologies. Here's a high-level summary of what we look for when recruiting senior software developers:
- Autonomy and independence
- Excellent teamwork and communication skills
Breadth and depth of technologies
- Full-stack developers, we use the Symfony framework, Node.js, React
- We also develop cross-platform and native mobile applications for iOS and Android devices
If you're looking for a bespoke software development company with an experienced team, get in touch with us here to find out if your project is a good fit.