What is the difference between web design and front-end development?
If you see these terms as job titles, then you really have to ask them what they meant with these because they are rarely used in the strict, textbook definitions. People whose titles are Web Designer role are often asked to code while Front-end Developers are also often asked to design. It varies widely from place to place.
If I were to diagram the range of skills each has:
<-- Art & Design Computer Science --> | ------------- Web Designer ------------| | --------- Front End Developer ---------| | --------- Back End Developer ---------|
That, of course, is just a general range as specific skill sets can vary wildly, but, in general "web designers" lean towards visual/UI design and FED's lean towards JS/CSS/HTML. Sometimes they don't overlap skill sets at all. Ideally, though, they overlap skill sets a lot.
Both of these terms are an unfortunate by-product of the industry's preoccupation with rigid role separation. In the most general sense, a web designer is a designer who designs for the web environment, whereas a front-end developer develops primarily for the client-side portion of the web environment (the browser).
Realistically, a web designer is the role of someone who formulates solutions to problems specific to the web environment based (hopefully) on an understanding of the higher-level limitations of that environment, without necessarily being able to implement the solution at the technical/development level.
On that note, what used to be the fairly easy to define role of front-end development has changed drastically due to the fast-growing overlap between client/server functionality. A front-end developer no longer just cuts up graphic assets or just writes CSS because the behavioral layer of the server environment has become much more dependent on the behavioral layer of the client side(think node.js, meteor.js, handlebars, requirejs, ember.js).
Further, due to the technical knowledge that may be beyond the realm of the designer, the front-end developer typically has a hand in the conceptual phase of design. Ironically, positions advertised as 'web developer/designer' are probably the closest to describing the true responsibilities of both roles, whilst also serving as a red flag to many potential candidates that an employer doesn't really know what they need.
So the short answer is there's no short answer. These definitions are more of an industry convenience than semantically useful descriptors.
Design doesn't mean you have to code. In fact, a lot of designers would be rather offended if you asked them to code.
Software design involves a lot of user research to figure out how people are actually going to interact with the software, whereas front-end development codes the interface. Sometimes, one person will do both jobs, but this can be problematic because it means that the software model (how the engineers think about the code) will be the same as the model presented in the interface, whereas the interface model really ought to be the same as the user's mental model.
Think of a car. The engineer could make the car turn right when the user pulls a rudder left, but that would be counterintuitive for many users, even if it did align with the engineer's mental model of how the car works. To make the design work for users, it's necessary to have someone figuring out how users deal with it. That person is the designer.
I agree, though note that the issue isn't so much that one person may do both, but only if that one person doesn't have the ability to think like each role. In otherwords, an engineer that thinks the Linux command line would likely create a pretty poor UI if tasked with design. However, I've also met engineers that were really great designers too.
I'm a bit irritated by the previous posts suggesting that the two 'occupations' could actually be easily put into either or box – overlapping in some tasks and skills. I would rather suggest that this is not the case.
I have the impression that both terms are constantly under construction – beeing defined and re-defined by people that work in that field by using those terms for this or that purpose: either to define their own job, to describe their own set of skills, or to draw a line between different tasks, etc. (maybe something like "Sorry, I'm not coding, I'm the web designer – you'll have to ask the front-end developer" sounds familiar).
Well - did my answer answer anything? Now I have the feeling it did just raise more questions. Sorry for that, but maybe those questions are part of the answer.
PS: inspired by DA01 I just added this -->
<-- Art & Design Computer Science --> | ------------- Web Designer ------- - - - ------ Web Developer ------------| | --------- Front End Developer ---- - - - ---- Back End Developer ---------|
Here is a very thoughtful and, I think, accurate description of job titles in the industry: http://css-tricks.com/job-titles-in-the-web-industry/
Link only answers are generally frowned upon on this site.. Perhaps you could update your post to include a summary of that article?