When it comes to the web, there are several different job titles and roles, some of which can be confusing. My research has found that many people have trouble understanding the roles of a web developer, web designer, programmer and software engineer. I’ve recently gained a Masters in Computing (Software Engineering), and I thought I’d make some attempt to describe my understanding of the different roles and job titles based on over 20 years of web development experience and what I’ve learnt through my studies.
It is important to understand that many different skills are required when developing websites or web applications, including but not limited to;
- Graphic design – creating the look and feel of the website or application
- Search engine optimisation – researching and optimising the website to ensure it appears under its target search terms
- Frontend development – using HTML/CSS and client-side technology to build a website or application using designs created in the graphic design stage
- Backend development – using server-side technologies such as PHP, Java, ASP.NET to integrate a website with a database or apply business rules and business logic
- User experience design – determine how to make the website or application usable by its target audience
- Requirement analysis – performing business analysis to determine customer needs and generate a set of system requirements
- Testing – testing a system both during and after development is complete
- System design – using a set of requirements to design a software system
- Database design – design and optimise a systems database
- System deployment – deploy a system to its development or production environment
- Project management – manages a project and team responsible for it
For many of the tasks listed above, they are undertaken by either a specialist in that area or by a job role which is responsible for one or more of the tasks. In this article, I am going to concentrate on describing the tasks that are undertaken by a web designer, web developer or software engineer. These job titles generally undertake one or more of the tasks listed above, where a business analyst, system architect or programmer generally specialises in only one of the tasks list above. For example, backend development may exclusively be performed by a programmer who does not get involved in many other aspects of the system; they have been employed to code. It is worth noting at this point, a web developer will have a reasonable level of knowledge in multiple areas, whereas a specialist has extensive knowledge/experience and be an expert in a given area.
For the sake of my explanations, I’m going to refer to a mythical invoicing system throughout this article to help explain the different roles and what tasks they would perform on the project. Our mythical invoicing tool allows the user to login and creating invoices for clients. Invoices are attached as PDF’s to an auto-generated email and sent directly to clients.
Updated 28th August 2020
I hadn’t intended to discuss the roles of web designers, but the feedback I’m receiving indicates that readers may also be confused about the many different types of designer, their specialities and how to choose a great designer. Sadly, it’s well outside of my knowledge, to me, design and UX is a black art. Instead, I’m providing a link to an article on toptal.com which provides a great overview of all of the different roles along with some information and advice on selecting a designer for your project.
How to Hire a Great Web Designer
The Web Designer
Average salary is £25,860
In my experience, the role of a web designer differs depending on whether the individual is employed or self-employed. Generally, a web designer would not be involved in the requirement analysis or system design stage of a project, but if the web designer is self-employed, it is likely that they perform a limited amount of requirement analysis to find out what their customer wants. The leading roles I see undertaken by a web designer are;
- Graphic design
- Frontend development
- User experience design
- Frontend development
- Search engine optimisation
In the case of the invoicing system I mentioned earlier, the web designer would look at similar systems, find any similarities, design the visual appearance of the system in software such as Photoshop, and will utilise their frontend development skills to transform the visual design into something which can be opened and interacted with inside a web browser. If the invoicing system required a consumer-facing sales website, he might also be involved in the optimisation of the website for search engines.
The Web Developer
Average salary is £30,450
Here is where we start to see an overlap of roles. The web developer concentrates more on the backend of a web project, but can also be capable of the frontend aspect too. The developer generally won’t do any graphic design work (although it’s not unknown). Their skill set allows them to take a website in the form of HTML/CSS and integrate it with backend code to allow the website to perform its indented task. I see the web developer as performing the following tasks;
- Frontend development
- Database design
- Backend development
- System testing
- System design
A web developer may not have a deep understanding of things such as database design, or system design, but has enough knowledge to allow him to build a system on their own or as part of a team. The developer does not spend much time thinking about the design of the software system. In my experience, he is more likely to think about the structure of the database and jump into developing the system from there, known as database first development. Where a web developer is working on their own and liaising with clients, they perform a small amount of requirement analysis to find out what solution the client would like. In some situations, the client proposes their solution, rather than the developer analysing the business and suggesting the best solution to meet the organisation’s needs. A web developer can specialise in a single server-side programming language such as PHP, ASP.NET or JAVA, but may have a reasonable amount of knowledge of multiple languages, as many programming principles are transferable from one language to another.
If we go back to our mythical invoicing system, the web developer creates the server code necessary to allow the system to perform any actions it is required to do, while interacting with the database. The developer designs the database structure, and in some cases, the developer takes a visual design and converts it to HTML, and if not will almost certainly integrate HTML provided by a web designer with the backend of the application. The web developer utilises unit testing to test aspects of their code and interacts with the system as they are developing to ensure what they are building works. In many cases, the developer is involved in the process of deploying the system to both its development and production environment.
Average salary is £37,469
During research I found a few websites which state that a software engineer and a web developer are six of one and half a dozen of another, I’d argue that they do share some roles, but a software engineer has a much more in-depth knowledge of the system design and requirement analysis process. As a result, a software engineer would have some involvement in the following tasks;
- Requirement analysis
- System design
- Backend development
- Database design
- System testing
- System deployment
In the case of our make-believe invoicing system, let us assume for a moment that we are a large software company, and we have been asked to develop an invoicing system for a large organisation. A software engineer is given the task of analysing the organisations current business processes and communicating with stakeholders to come up with a solution to meet the stakeholder’s needs. The software engineer documents the requirements of the system and uses those requirements to design the software system. When I say design, I do not mean the visual appearance of the application; what I am talking about is the structural design of the system and the code used to build it. The software engineer utilised diagrams to detail use cases, class diagrams and communication diagrams to describe the structure of the system and how it communicates with other parts of the system. He designs the architecture the system is to be deployed on and apply software design principles to his design to help create a system that is robust, secure, maintainable and expandable, while at the same time designing tests that ensuring the system meets the requirements. At this point the main job of the software engineer is complete; however, it’s not unknown for a software engineer to be involved in developing the system itself (coding), testing and even deploying the application. A software engineer takes on the role of a business analysis and systems architect; he elicitates requirements from stakeholders and designs a system to meet those requirements.
In my descriptions above, I have generalised roles into a job title that encompasses multiple skills, but as I mentioned early in the article, some people specialise in only specific roles. A business analyst might only deal with analysing businesses, breaking them down, abstracting their processes and documenting them, looking for solutions to real world problems. A systems architecture would specialise in designing software systems and would take over a project from the business analyst. When you have both of these skills, you start to fall under the title of Software Engineer. The same applies to a graphic designer, who specialises in the design, whether it be business cards, flyers, letterheads, or websites. It is a graphic designer would design a website and pass the design onto a frontend developer to continue, but where an individual posses both graphic design and frontend development skills, they begin to fall under the title of a web developer. So you start to see that the role of a web designer, web developer or software engineer encompasses many different skills, skill which is naturally matched to each and can be easily grouped.
The Full Stack Developer
I don’t want to go into too much detail about the full stack developer, but at the same time, I wanted to acknowledge that they exist. A full stack developer is generally someone who has a reasonable level of understanding and skill in most aspects of web design and web development. This person, in my opinion, is suited to working alone on projects where they can apply their skills and knowledge of both web design and development to complete a project, or within a startup or small business where there isn’t the budget to employ people with individual skillsets. This individual probably started their career as a web designer and progressed into web development, gaining knowledge and experience along the way. There’s a common phrase “Jack of all trades, master of none”, which may, I say ‘may’, apply to full stack developers, because as they work on many aspects of web design and development they are unable to spend enough time on a single skill that would enable them to be labelled a master of that skill. This is not necessarily a negative point I’m making here, there is a considerable advantage to certain types of organisations employing a full stack developer, and there is a need for them in the current market. Think of it this way; you have a garage in your home town that diagnoses and repairs problems on all makes of vehicles, then you have a specialist who only deals with ‘BMW’ branded vehicles. If you owned a BMW, which garage do you think is likely to have a better knowledge of your vehicle? You guessed it, the BWM specialist. The garage that works with all makes of a vehicle has a good understanding of all makes but does not spend enough time working with one particular brand to gain an in-depth understanding of the brand and their everyday issues.
About Shaun Sheppard
I started as a web designer in 1997, designing websites in Photoshop and converting designs to static HTML. Later I expanded my skills and knowledge and learnt about backend development, which is when I became a web developer. Over the past 10 years or so, I have primarily worked on the backend of projects, but some projects have required me to be heavily involved in the frontend too. I am a web developer that lacks up to date frontend knowledge and skills to be labelled a full stack developer, which is fine as I love programming. I am approaching the age of 40 and spend more and more time thinking about the future and where I see myself in 10-20 years. As a result of this, I recently began following the Software Engineering route of a Masters Degree in Computing to move away from being a developer, and towards being involved in the requirements process and designing of software systems as a software engineer.