Front-end web development explained
I make the 'front-end' of web-based software.. I'm not a designer and I don't work in IT. No, I can't fix your computer.. or your printer.. or the cracked screen on your phone..
Front-end development is something that I do all day every day, a skill set which I have spent a very large chunk of my life learning, practicing, perfecting, and earning a living from. Despite that, you would be surprised how difficult it is to describe what I do to someone else. The worst-case being those awkward family occasions where you have to explain - again - what you do to your grandfather who hasn't ever even switched on a computer, far less 'browsed the internet' on it. Naturally for situations like that I just tend to nod my head when asked if I work with computers; true though that might not entirely be..
For people a little more tech-aware, computer-science focused entries on Wikipedia, and the likes of this wordy - almost unintelligible - article from the Guardian really don't help to simplify things either.
I've tried a few different analogies to describe my occupation, my favourite being the union of architect, contractor, builder, interior designer, and decorator to build a house. However, the thing is that up until a few years ago this was actually a relatively obscure and misunderstood speciality, and in order to understand what I do you have to come to terms with a fairly simple concept: Websites are made up of two separate, but interlinking layers:
This is the code that is loaded and processed on your computer, it decides how the data of the website is displayed, how it behaves when you interact with it, and even how it should respond and change if you happen to have an older (slower) computer, or be using a mobile phone (and smaller screen).
In direct contrast to front-end, the back-end is code that you should never see whilst using a website (although it does occasionally peak out in things like query strings in URLs). It is everything that happens 'under the hood' - this code is run on the website's server it creates or provides the data which the front-end then displays to you. It is made up of databases, logic, and magic: those lines of green text you see flickering on darkened screens in bad hacker movies - that's back-end code. Of course, it is much more complex than that but let's not confuse things.
What about the designer?
Above I mentioned that I'm not a designer - a misunderstanding that I have come across more times than I can count throughout my career. Although it is true that what I do is visual and requires a certain aesthetic sensitivity, I'm simply not creative enough to 'design'. It is - of course - also true that there are people out there who both design and develop websites, but people like that are fairly rare and I'm not one of them.
A designer works in a visual piece of software like Photoshop or Illustrator: they are the first creative element in a website's development and make decisions about how the site will look and feel. They produces flat designs and graphics (essentially: a photograph or a picture) of how a couple of key pages of the website will eventually look, taking into account client requirements like branding, font choices, etc.
It is these flat designs that the client will um and ah over before any technical development (and my real role in the website's production) beings.
So, front-end development..
So front-end web development sits between the designer and the back-end developer. I take the flat designs that the designer has produced and break them down into reusable modules for the website. I build up the page structure using HTML, and style it - extending the designer's typographic styles and colour schemes - across the entire site in CSS, whilst creating and exporting graphical elements from the design.
Apart from interpreting and building up the designer's vision it is also my task to ensure that my technical development will integrate ('talk to') the code that the back-end developer is producing, building templates to ensure that the two layers work together to fetch and display the data that the website user is requesting.
In the absolute simplest terms: if you can see it and interact with it on the website then chances are I built it. I am a front-end web developer; I do work with a computer but only in the same way that anyone else uses one as a tool for their day-to-day work pilgrimage. I don't work 'in IT', and I'm really sorry but I would have no idea how to fix your printer.