Software developers – the 21st century’s most in-demand professionals

A complete overview of what software developers do, their different profiles, how to become one, the jobs market for coders and how and where to hire them

Software developers (also known as coders or software engineers) develop software. Like firefighters and butchers, bakers and candlestick makers, the job title seems pretty self-explanatory. But that presumption wouldn’t do justice to the huge variety that the umbrella term ‘software developer’ covers.

In 2023, software development is a sprawling field. There is a huge and growing variety of different kinds of software out there and it has all been built by software developers. But while all software is built from code and ultimately runs on hardware of some kind, there is a vast world of variety within that.

There is the application software we are most used to interacting with as consumers and professionals. There is systems software that forms the layer between hardware like smartphones and laptops that application software runs on. There is embedded software essential to electronic devices and systems from household appliances to cars and industrial robotics. And that’s just three of the main categories of the different kinds of software designed and coded by software developers.

Software developers share some fundamental knowledge and skills but also tend to be specialists in a particular kind of software, for example, user-facing application software or embedded software. And within those broad fields, software developers have a particular skill set (tech stack), such as the programming languages and frameworks they are experienced in.

This blog post will give you a broad overview of:

  • What exactly do software developers do?
  • The different kinds and categories of software developers
  • The market for software developers – supply and demand trends
  • Software developer rates and salaries
  • How to hire software developers
  • How to become a software developer

What exactly do software developers do?

Software developers, put simply, develop software. But what exactly does developing working software products involve? To understand the precise role of a software developer, it makes sense to take a step back and look at the whole software development life cycle and the other roles in a software development team.

Phases of the software development life cycle infographic-1

With some variation depending on the methodology and framework chosen, the software development process follows six main life cycle phases:

  • Analysis
  • Design
  • Development
  • Testing
  • Deployment
  • Maintenance

Software developers mainly contribute to the development phase, which is where the actual code that a piece of working software consists of is written. As the infographic above illustrates, other kinds of IT specialists within a software development team are responsible for most of the work involved in the other five phases.

Some of the other roles, such as system or application architects, are usually held by former software developers. However, while they require a deep understanding of software development, they are not software developer roles.

An application or system architect is the person responsible for the high-level design and scope of a particular software project. Their role is mainly in the define phase before development begins and involves setting out how the software will achieve the goals and requirements set out in the analysis phase. The role can be compared to that of an architect in a construction project – which is where the name comes from.

Software developers are the members of the team who implement the high-level plan set out by the architect. In other words, they do the actual job of building the software by writing the code and joining it all up together as a working piece of software.

Different kinds of software developers

Software developers don’t just come in different levels of seniority but also across a wide range of programming languages and technologies. The programming languages and technologies a software developer has experience and expertise in is referred to as their ‘tech stack’.

Different programming languages and technologies like frameworks, libraries and software development tools, are used in the development of different kinds of software and the different parts, eg. the front end and back end, of software.

Some of the main categories of software development are:

  • Application software
  • Systems software
  • Embedded software

Most software developers help build application software but there is a huge variety of different kinds of software applications that are built with a wide range of different programming languages and technologies.

Software applications range from computer games to web applications like SaaS products, enterprise portals and simple websites to native applications designed to run on a particular operating system like Windows, Android or iOS.

Application software can be quite straightforward, like a single-page application (website), involving a web page design on the front end and simple CMS on the back end. Or it can be an extremely complex cloud-native application designed to process and secure huge volumes of data on the back end, run algorithms and consist of large numbers of interconnected user stories.

The sheer breadth of variety across different kinds of software applications means it makes little practical sense to talk about ‘application software developers’. Instead, we categorise developers by their tech stack and level of seniority. The same can be said of software developers who specialise in other kinds of software like systems software, embedded software, databases and AI algorithms.

Let’s take a look at some of the main categories of software developers as defined by their technology stack:

Front end developer

Front end software developers code the user interface of a software application – the part we are most used to seeing as users like the websites we visit or mobile apps we use. In 2023, JavaScript and JavaScript frameworks and libraries like Angular and React are the most common skills looked for in front end software developers but there is still demand for many others.

Back end developers

Back end software developers code the infrastructure that the user interface is laid on top of – all of the elements that power an application the user cannot see and relate to functionality, CRM, databases, systems integration, core logic, hosting and security.

The complexity and depth of the back end of an application can vary hugely from the relatively straightforward infrastructure behind a simple web page (CMS, hosting and security) to sophisticated cloud-native architecture, database engineering and integration with wider systems that connect different software products.

Java, Python, Node.js, SQL, Bash/Shell, Kubernetes, Docker and Rancher figure among the most currently in-demand back end developer skills. The most used back end database technologies are mySQL, PostgreSQL, SQLite and Mongo DB.

front and back end software development Iceberg infographic

Full stack developers

Full stack software developers have a command of both front end and back end technologies and can code a whole app or take on both UI and infrastructure development tasks as part of a software development team. Stack Overflow’s 2022 Developer Survey shows full stack developer is the most common role software developers say they fill.

Software developer roles in order of most common

Mobile developers

Mobile developers can also be front end, back end or full stack developers. The term simply means these software developers have specialised in technologies used in mobile app development, either cross-platform or native.

Cross-platform mobile apps run on a browser and Flutter, React Native and Ionic are the most popular frameworks used by mobile developers for this kind of increasingly popular app. Native mobile apps, built specifically to run on either the Android or iOS mobile operating systems use specialist programming languages, UI frameworks and development tools.

Swift and Objective-C are the languages used to code for iOS, complimented by UI frameworks UIKit and SwiftUI and toolsets like Appcode and Xcode. Java is the language most commonly used to code Android apps with Kotlin also popular, alongside UI frameworks Android UI and Jetpack Compose. Android Studio and Android Developer Tools (ADT) are the most popular Android developer toolsets.

DevOps Engineers

The role of DevOps engineer can vary significantly between different software development projects and teams and can be more weighted towards operations or involve more development. DevOps unifies development and operations roles and responsibilities as a philosophy or methodology. It is designed to break down traditional ‘us to them’ processes of the development team handing software over to operations, who are then responsible for it working in the production environment the same way it did in the development environment.

DevOps engineers bridge development and operations and work on code with the developer team, oversee the code releases and also manage the deployment and operation processes. They also work with the operation team on the proper integration and running of the software developed.

A DevOps engineer typically requires programming skills plus management, agile and DevOps principles, problem-solving and organisational skills.

Software developers by seniority – what’s the difference between lead, senior, mid and junior software development roles?

Software developers tend to be broken down into four main categories of seniority:

  1. Lead
  2. Senior
  3. Mid-level or middle
  4. Junior

Lead software developers

If we extend the construction metaphor, a lead software developer takes the decisions on how best to execute the architect’s high-level requirements within the framework provided in a way that can be loosely compared to the role of a structural engineer. The lead developer will usually still be involved in the actual coding process, often taking on the most complex tasks themselves.

The lead developer will also usually be responsible for taking a final decision on any debates around the best technical solution to meet requirements.

Senior software developers

The lead developer will usually be one of several senior software developers who could perform the role. Senior developers usually (there are exceptions where developers achieve a senior level of expertise more quickly than average) have several years of experience across numerous software development projects and are experts in at least one, often more, programming language and framework or library.

Senior software engineers demonstrate initiative, work without day-to-day supervision, and can efficiently execute more complex coding challenges. Senior developers are also often responsible for mentoring mid-level and junior colleagues as well as assessing the quality of their work and intervening when necessary.

Mid-level software developers

Mid-level software developers are also reasonably proficient professionals able to code independently but have a level of expertise and experience that falls below that expected of a ‘senior’ colleague.

Mid-developers will most typically have between 1.5 and 3 years of full-time development experience (this can vary significantly from individual to individual) and be able to independently handle a majority of development tasks using the tech stack they have experience in. They may need input and support from more senior colleagues if working on more complex coding challenges and their work should still be regularly assessed for quality.

Junior software developers

Junior software developers are the apprentices within a software development team, still in the relatively early stages of learning their trade. A junior software developer will have basic to lower-intermediate fluency in writing code in at least one programming language and framework and foundational computer science knowledge.

It is accepted junior devs require constant supervision and mentoring and any code they produce on their own should be reviewed by more experienced colleagues. They will be given simple, odd jobs and low-level coding work to build experience and fluency in coding in their chosen tech stack before gradually being given more responsibility as they grow as professionals.

Usually, only larger software development projects and teams have a genuine role for junior developers. However, like an apprentice in any field, a team may bring in a junior developer in a support role to facilitate their development into a mid-level developer.

Software developer rates and salaries

As highly skilled and in-demand specialists, software developers earn attractive salaries. However, within that very broad description, there is a huge range. A junior developer gaining experience with a popular framework like React might expect to start on a relatively modest salary of around $2000 or €2000 a month. However, that could easily rise to $7000 or $8000 a month or more as a senior developer.

Geographical location does still influence the average salary levels of software developers with professionals in developer, higher-wage economies earning sometimes considerably more than similarly qualified and experienced peers based in nearshore and offshore locations.

However, the gap is noticeably narrowing as remote work becomes common and the demand to supply balance continues to develop in favour of the supply side. Especially highly skilled senior software developers are now in a strong enough negotiating position that their physical location has far less impact on the remuneration they can expect from employers.

If you are recruiting software developers via a third party such as a software development company or IT outsourcing provider you can typically expect to pay an average margin of roughly 30% on top of the salary cost to the direct employer.

The Stack Overflow 2021 Developer Survey offers more in-depth insight into median salary levels of software developers based on skills in programming languages, web frameworks, database technologies and cloud platforms. Here’s the table for median developer salaries by web framework expertise:

Median software developer salaries by web framework

How to become a software developer

One of the beauties of software development as a profession is that it is close to being a genuine meritocracy. There is always room for improvement but, generally speaking, if you have software development skills, they will be rewarded with employment opportunities at a fair market rate.

If you are not a software developer but would like to become one, or at least explore the possibility, where to start? How does one become a software developer?

The most traditional route to becoming a software developer is to study for a computer science degree to gain a foundation in computer science and programming then specialise in a particular technology stack and move up the chain of seniority.

But that is just one way and not the route many successful software developers have followed. Lots of software developers come from other STEM disciplines, with mathematics an especially popular foundational education, especially for algorithmic programming but not only. Others come from a wide range of different educational backgrounds, including the arts and social sciences – there is no rule that precludes anyone of any background learning how to code.

For those who want to pivot into software development from educational backgrounds other than computer science, there is also plenty of choice around how to go about that. It could be through attending courses either at a traditional educational institute or at one of the growing number of specialist schools set up to teach software development and other IT specialisations. Nowadays there are often online-only study options.

You will usually have to pay fees to study software development at a formal educational institution or private software development school. But it is also perfectly possible, with dedication and hard work, to learn the skills needed to become a software developer without spending a penny on education.

There are also several quality and free online resources designed to teach software development skills through self-study. They don’t all purely focus on coding and IT specialistations but those listed offer plenty of fantastic courses for budding software developers). Some of the most highly recommended include:

https://www.freecodecamp.org/

https://ocw.mit.edu/

https://www.edx.org/learn/computer-programming

https://www.coursera.org/

https://hackr.io/

https://www.codecademy.com/catalog

How to hire software developers

If you need to hire software developers for a project, where is the best place to find and recruit the specialists you need? There are several different options and which is right for you or your organisation will depend on your particular circumstances and the needs of your development project. However, the main options are:

Permanent employees – either with the help of a specialist recruiter or if you are willing to dedicate the time and effort and feel comfortable you can personally assess level of expertise you could go DIY and place job ads on popular job sites and boards.

Freelancers – there are a number of platforms which match freelancers with those who want to hire specialists for a particular job or project, including Toptal.com, Upwork.com, YouTeam.io and Lemon.io.

IT outsourcing company or software agency – an IT outsourcing company or software agency will ‘lend’ you a tailor-made software development team to work on your project. This can include project/delivery management or just the software developers themselves with you taking control of the rest.

Working with a specialist IT outsourcing provider brings many of the advantages of hiring employees directly (and the added advantage of experts having hired and assessed the specialists and defined their level of seniority, tech stack and soft skills) but with far more flexibility. You can scale a team up or down as required by your project cycles without being locked into the overhead of permanent employees.

Featured blog posts