This is a little series written for normal people, clients as well as employers, to help them find and choose someone to build their websites. In part one we will talk about roles and titles, in part two we will discuss briefs and task descriptions and look at some exemplary use cases, and in part three we will take a deep dive into coding skills you may want your developer to have. At the end, you will hopefully be able to formulate requirements with confidence, especially as a non-tech person.
The field “web” is different from other software industries, in which companies often either have a limited range of products they sell, for example a video editing app, or a limited field of activity like blue tooth entertainment systems in cars. For better or worse, jobs in these fields do not really change: There needs to be someone who programmes the blue tooth chips and someone who teaches the car OS to talk to them, someone who integrates them safely with other car systems, someone who makes the system talk to different client devices, and someone who customises all of this to the needs of different car manufacturers1. For all of these people, their work subject never changes, even though specific client orders differ and standards and APIs get updated. They mostly use one programming language, a few selected APIs, and they are all called developers or engineers.
In contrast, for a web agency or a freelance web worker, the next project can be anything and involve any number of external systems or services to integrate, from wholesale product availability info to gesture and position recognition2, to geocoding addresses, or administrating memberships. Front- and back-facing components are often inextricably entwined since with web, you always have to create a user interface from scratch instead of just using what Android or MacOS already provide you. This is why the web world has myriad different job titles and roles for designers, developers, engineers, content specialists, and many others.
You will find that there is considerable overlap between many positions: Designers sometimes code, developers sometimes design, and that’s okay. Almost all web development tasks include a visible front-end part but only big companies have the resources to tease apart visuals and UI from functionality entirely. Modern-day designers and developers need to be able to do each other’s work to some extent — the extent of knowledge and skills varying, of course.
The little dictionary of jobs in web work
Web designer: Someone who creates the look and feel for your website. May include branding and logo design. May use Figma, Adobe XD, Photoshop, or InDesign. Some designers can also code and deliver a complete “theme”, i.e. the visible part of a website (see design engineer). Beware of those who cannot code at all but try to sell entire websites anyway by using so-called builders.
UI/UX designer: Someone chiefly concerned with creating interactions on a website that work smoothly for both people with and without disabilities. This concerns elements and controls as much as the general “flow” through a website or specific process as e.g. booking a ticket.
Design engineer: Someone who codes(!) design. Uses HTML or templating languages such as Twig or Blade, style sheets (CSS), and JavaScript components. Delivers the visible part of your website. Acts as a bridge or translator between design and development but may also do some actual design. Will NOT lego your site with page builders. Yes, CSS is a valid programming language that has become quite complex over the last two decades.
Front-end developer: Codes design but is also concerned with providing the actual data to be displayed to those design templates (so-called views). Takes care of non-design front-end functionality, for example routing, filtering, and form processing. Works a lot with JavaScript. Delivers everything you can see on your website much like the design engineer.
Back-end developer: Takes care of everything going on behind the scenes and is involved in building apps or plug-ins. Works mostly with a server language like php, Java, C# and their likes. Delivers nothing visible but creates the internals of a website from domain to infrastructure, services, and integrations. Will talk a lot about business processes and rules. Is not your web host and has nothing to do with configuring your server.
Full-stack developer: Someone who can do both the front-end and the back-end developers’ jobs. Some full-stacks genuinely love doing a variety of work. Others secretly prefer one “end” over the other. Don’t say you need a full-stack when you are unsure of what your job entails. This makes us feel tricked when we find out you actually just needed a front-end developer. When in doubt, just say “developer” and we’ll figure out the rest from the project description.
No-code or low-code developer: The oxymoronic equivalent to a no-brush painter or a no-saw carpenter. What would a no-saw carpenter do? Probably assemble Ikea furniture. No-code developers are the same as “designers with page-builders”: They are both unable to use the essential tools of their trade except that the no-code developer also lacks the designers’ knowledge about layout and aesthetics. Avoid.
Consultant: If only I knew… Sometimes they are external (freelance) developers, sometimes they are architects who only plan systems, while others code. In the SAP world they are akin to project managers and I’m fairly sure there is an unwritten rule stating that the consultant-to-developer ratio in every project must be 3:1 at least…
Product manager: Someone with a background in either development or design, who integrates users’ and management’s interests to improve and evolve a web app or part of it. Deals with people as well as technical aspects but does not code. Often works with usage statistics and analysis provided by data researchers (for better or worse). Not a proJECT manager.
Junior/Senior: There is no set experience level for either. Sometimes companies hire “senior” developers with 3+ years experience, sometimes they put someone with 20 years on a junior post to avoid paying them proper wages. Avoid both terms and just say “developer”.
Engineer: A developer. Both terms are used interchangeably except for “Design Engineer”3. Some people feel more important or valued when you call them “engineer”. Developers usually couldn’t care less.
Programmer, coder. Terms to avoid. Programming is the skill of authoring code. A modern-day web developer needs to be able to programme but also to create technical design (architecture) taking aspects such as integrations and security into account. Thus “programmer” has a slightly disrespectful ring to it. The only people who call themselves “coders” are youngsters freshly out of a “coding boot camp”, and they really do not have the faintest idea about good architecture but will talk a lot of nonsense about “arrays”, “loops”, and “hooks” which you will never hear from a seasoned developer.
If this list of roles and titles has left you more confused than before, here is a rule of thumb: Whenever your sole concern is optics including layout, structure, and usability, hire a designer. For anything that requires implementation, look for a “web developer”. If you only have money for one person who can walk in both shoes, depending on what matters most to, look for either a design engineer or a “creative web developer”.
A good project brief or job description will help attract the right people and discourage recruitment agencies from bombarding you with CVs that only match a few keywords. And that’s what we are going to talk about in part 2.