The world of software development is always progressing. Change is the norm as new technologies and methodologies come into existence every few months leading to new types of software developer and areas of specialisation.
With each new leap in technology comes a new set of industry terms. If you're anything but a software developer you might find it hard to stay on top of who's who and what you need. Business owners - if you're involved in any sort of tech product or development then it's a good idea to have some understanding of what's available.
Here, we'll run through the main types of software developer you're likely to come across as a small business. Think of it as a who's who of the software development sector.
AKA Client-Side Developer
Front-end developers specialise in the programming of visual user interfaces. Responsible for the UI design of a software product, front-end developers can be thought of as highly technical graphic designers.
Front-end developers create code that runs on the web browser or computer of the end-user. Front end developers require a good understanding of the psychology surrounding human-machine interactions. With a good understanding of both UI and UX design, front-end developers are able to help create software that not only looks good but is enjoyable to use.
If you ever use an app or piece of software that is displeasing to look at, chances are it wasn't built with the help of a front-end developer.
AKA Server-Side Developer
Back-end developers specialise in the part of software and systems that are running on machines that are remote from the end-user. This type of software developer has a focus on the functional core logic, performance and scalability of software products.
The back-end of a product can be very complex, with multiple server configurations and third party systems working together to produce a unique set of features and actions. Backend developers often have to integrate with a number of databases as well as systems for data storage, caching, logging and email.
Some of the best and most powerful back-end systems are completely invisible to the end-user. Take Google, for example. The front-end UI is a text field with a couple of buttons, but the back-end is massively complex.
Full-stack is the closest type of developer to a jack of all trades. A genuine full-stack developer has the right balance of front-end and back-end skills. Able to create a fully functional web application without assistance from more specialised developers, full-stack developers are invaluable to smaller businesses and startups with a limited budget.
However, it's true what they say about a jack of all trades. Full-stack developers are great for the first iteration of a piece of software, but often, as products grow and more budget becomes available more specialised software developers are brought in to take it to the next level.
Web developers are a type of software engineers that specialise in building websites. It's important to know the difference between a web designer and a web developer.
Web designers are rarely accomplished coders, and instead often rely on pre-built templates and page builders to produce graphically pleasing, but functionally limited websites.
Web developers on the other hand are usually more akin to full-stack developers, but with a speciality in websites. A skilled web developer is able to create powerful websites with complex back end systems and features.
Special mention for WordPress as the most-used website development framework out there. While technically anyone with a theme and a page builder can use WordPress; WordPress development is a skill unto itself.
WordPress gives web developers access to a huge range of pre-built plugins and add-ons to make building bespoke websites with powerful features more efficient, more affordable and easier to manage for businesses.
Without WordPress, the idea of a small business having their own directory, eCommerce system or social network would be impossible. But with powerful plugins like DirectoriesPro, WooCommerce and PeepSo it's a reality.
It still takes a skilled WordPress developer to implement multiple plugins and systems into a bespoke website while maintaining performance - but it's a lot more affordable than it would be otherwise.
Mobile apps generally require two types of software developers; apple and android. All mobile app developers write code for apps that run natively on mobile devices (smartphones and tablets).
A mobile app developers needs to be skilled in developing on both the android framework and on Apple's iOS. While some do favour one platform over the other, most businesses looking for a mobile app aren't going to accept being present in just the one marketplace.
This is a type of software developer that produces programs that work natively on desktop operating systems like Mac OS, Windows and Linux. Back in the 80s and 90s, this was the most common type of software engineer, but with more and more applications operating in the cloud it is a less sought after specialty.
However, there are still many resource intensive applications that work best when installed directly onto a desktop operating system - for example, audiovisual editing tools. For this reason, skilled desktop developers are still extremely valuable to larger product developers.
Graphics is an area of software development specialised in creating software for lighting, rendering, shading, culling and management of scenes. Often, this type of software developer works in the gaming and video production industry integrating various hardware and software technologies.
Graphic development was originally a form of low-level development (more on that below) requiring hardcore computer science training. However, with the introduction of more commercial and open-source frameworks, it is becoming more accessible.
A generic term used to describe a type of software developer specialising in the creation of games. Game developers often fall into other categories of developers - like full-stack, mobile and graphics - but often have specific knowledge and skills in the design and implementation of engaging, interactive game experiences.
Game developers often work for specialist game development studies, and therefore have to be able to work within a large and diverse team, often collaborating with other creative disciplines.
This discipline of software development specialises in the creation of systems, procedures and methods to test, exploit and fix the security flaws of a piece of software. These "white-hat" ethical hackers attempt to penetrate systems to reveal vulnerabilities before providing a fix to the main development team.
Security developers need a good understanding of the languages used to write software and where the common weaknesses lie. More advanced security developers need to understand the source code of operating systems and engineer libraries.
The following are terms you might hear mentioned in development circles but are either sub-groups of software developer or highly specialised.
A type of software developer that creates non-UI code that runs in a browser. It often talks to non-core code than runs on a server. Generally, this can be thought of as the "plumbing" of a piece of software.
Software programs that manage and access data warehouses, ETL systems and relational databases are built by big data developers. They are often skilled with frameworks like MapReduce, Hadoop and Spark using languages like SQL, Java, R and Python.
A data scientist is a type of developer that creates software to analyse data. With a focus on statistical analysis, data visualisation, machine learning and predictive modelling they often use SQL, R and Python.
Sounds simple enough, but the world of CRM development is more tricky than you'd think. With a strong focus on data, processes and workflow - get things set up wrong and it can have huge implications for the efficiencies of an organisation. CRM developers usually work with technologies like SAP, Salesforce, Sharepoint and ZohoCRM.
This type of developer has a focus on the systems used to develop back end and distributed systems. DevOps engineers use technologies like Kubernetes, Docker, Apache, Jenkins and Mesos.
Working with technologies like Python, Ruby and Selenium SDETs are responsible for creating software to validate the quality of the software of other systems (I know, "devception"). They create tools to automate and test systems to make sure they're running as expected.
Embedded developers work with external hardware not commonly thought of as a computer including set-top boxes, iOT devices and electronic interfaces. They use a combination of C, C++, Assembly and Java, or more commonly proprietary frameworks and toolkits.
This is a generalised term for developers that create code that is far removed from the associated hardware, for example web developers. They tend to use scripting languages like PHP, Perl, Python and Ruby.
Opposite to high-level, low-level developers write code that is very close to the hardware in languages such as Assembly and C. Embedded developers are usually thought of as low-level developers.
If you're planning your own development project and not sure who you need in what phase of the project - we can help. Get in touch, and one of our Digital Transformation Specialists will talk you through your options.