When it comes to the web, there are a number of 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’m currently part way through my study, working towards a Masters in Computing via the Software Engineering pathway with the Open University, and I thought I’d make some attempt to describe my understanding of the different roles and job titles based on over 20 years web development experience and what I’ve learnt through my studies.
It’s 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 will be found under 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 may be 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’m 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 doesn’t get involved in many other aspects of the system, they are employed to code. It’s worth noting at this point, someone like a web developer will have a good level of knowledge in multiple areas, where as a specialist will likely have extensive knowledge/experience and be an expert in a given area (i.e database engineer).
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.
The Web Designer
Average salary is £25,860
In my experience, the role of a web designer differs depending on whether they’re employed in an organisation, or self-employed/freelance. Generally a web designer wouldn’t be involved in the requirement analysis or system design stage of a project, but if the web designer is self-employed, then it is likely that they perform a limited amount of requirement analysis in order to find out what their customer wants. The main 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 may also be involved in the optimisation of the website for search engines.
The Web Developer
Average salary is £30,450
This is where we start to see an overlap of roles. The web developer concentrates more on the backend of a web project, but will also be capable of the frontend aspect too. The developer generally won’t do any graphic design work (although it’s not unknown). Their skillset 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 will have enough knowledge to allow them to build a system on their own or as part of a team. The developer probably won’t spend too much time thinking about the design of the software system, and in my experience is more likely to think about the structure of the database, and jump into developing the system from there. Where a web developer is working on their own and liaising with their own clients, they’ll perform a small amount of requirement analysis to find out what solution the client would like. It’s likely that the client will propose a solution to the web developer, rather than the developer analysing the business and suggesting the best solution to meet the organisations needs. A web developer will probably specialise in a single server side programming language such as PHP, ASP.NET or JAVA, but may have a good 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 would develop the server code code necessary to allow the system to perform any actions it is required to do, while interacting with the database. The developer would likely design the database structure, and in some cases the developer will take a visual design and convert 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 will utilise unit testings to test aspects of their code, and will interact with the system as they’re developing it to ensure what they’re building works. In many cases, the developer will be 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, lets assume for a moment that were a large software company and we’ve been asked to develop an invoicing system for a large organisation. A software engineer may be tasked with analysing the organisations current business processes and communicating with stakeholders to come up with a solution to meet the stakeholders needs. The software engineer documents the requirements of the system, and uses those requirements to design the software system. When I say design, I don’t mean the visual appearance of the application, what I’m talking about is the structural design of the system and the code used to build it. The software engineer will utilise diagrams to detail use cases, class diagrams and communication diagrams to describe how the system will be structured and communicate with other parts of the system. He’ll design the architecture the system will be deployed on, and apply software design principles to his design to help create a system that’s robust, secure, maintainable and expandable, while at the same time designing tests that ensuring the system will meet 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’ve generalised roles into a job title that encompasses multiple skills, but like I mentioned early in the article, there are people who 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 design, whether it be business cards, flyers, letterheads, or websites. It’s likely 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 web developer. So you start to see, that the role of a web designer, web developer or software engineer encompasses multiple different skills, skill which are 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 good 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 out 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’re unable to spend enough time on a single skill that would enable them to labelled as master of that skill. This isn’t necessarily a negative point I’m making here, there is a huge advantage to certain types of organisations employing a full stack developer, and there is definitely 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 with ‘BMW’ branded vehicles. If you owned a BMW, which garage do you think is likely to have a better knowledge of your vehicle, it’s common problems and fixes? You guessed it, the BWM specialist. The garage that works with all makes of vehicle has a good understanding of all makes, but doesn’t spend enough time working with one particular brand to gain an in-depth understanding the brand and their common issues.
About Shaun Sheppard
I myself 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’ve primarily worked on the backend of projects, but some projects have required me to be heavily involved in the frontend too. I’m a web developer that lacks up to date frontend knowledge and skills to be truly labelled a full stack developer, which is fine as I love programming and it’s what I’ve also saw myself doing. I’m approaching the age of 40 and spend more and more time thinking about the future and where I see myself in 10-20 years time. As a result of this, I recently began following the Software Engineering route of a Masters Degree in Computing with the aim of moving away from being a developer, and towards being involved in the requirements process and designing of a software systems as a software engineer.