I’m a full-stack developer by trade, but front-end is my specialty. I’ve seen it treated with a bit of ambiguity over the years though, so I think it’s worthwhile to clarify the term.
Front-end development defined
For a clear working definition of front-end development, I’ll use a variation upon Wikipedia’s definition:
Front end development is the development of those elements of a website that the customer sees and interacts with directly. It is a combination of programming skills (knowing which program to choose) and aesthetics (understanding element arrangements on the screen, the color and font choices).
Note that the ability to make visually creative choices is not a requirement. A front-end dev has to comprehend and manipulate these things, but not necessarily be creative aesthetically. That falls primarily under the category of visual design…technically. Also the ability to make creative choices about animation and user interaction falls under User Experience (UX) or Interaction Design (IxD)…technically.
Creativity not required…but preferred
In the long run, you can and should attempt to at least dabble in those areas. Getting decent at all 3 will make you a front-end powerhouse, and some of the most exceptional front-end devs I’ve met are good at all 3…but people like that are pretty rare. The necessary requirement for front-end development is the technical part.
Here are the the things that I think are required to be called a front-end developer:
- Knowledge of browser differences. (Mobile vs desktop, IE vs Firefox vs. Safari)
- Ability to control web page presentation. (Layout, typography, images, colors, etc.)
- Knowledge of certain tools including:
- Browser debuggers (Firebug, Chrome/Safari/etc debugger tools)
- Preprocessors (SASS, LESS, CoffeeScript)
- Frameworks (Angular, React, etc)
- Stuff all developers should know:
- Source control (git)
- Collaboration tools (Basecamp, Jira or others)
- Stuff for advanced developers:
- Build & dependency management tools (Grunt, Bower, RequireJS)
- Knowledge of frameworks
- Familiarity with build tools
- Some understanding of UX and IxD
You should also have these (but could get by without, if you must):
- A sense of aesthetics
- A sense of how interactions work and usability
Front-end Development does NOT technically include:
- Visual Design
- User Experience design (UxD)
- Interaction Design (IxD)
- Server-side coding (aka backend development)
Now, all that said – these days some job descriptions for front-end developers include some of the above design skills. If you’re applying for a job at a startup that has no in-house designers, chances are they’re going to expect some sort of aesthetic ability in this area. This is where it really pays to know whether you’re good at this stuff (or not) and market yourself accordingly.
I for one suck at visual design, mostly. I can scrape by and alter existing designs in some small ways, if needs be. I also have an eye for good UX vs. bad UX, and can critique and alter it well. But if I tried to create a design from scratch it’d turn into crappy, distraught, abstract pop art at best. And at the end of the day, it doesn’t matter since I’m great at front-end programming, and that’s how I market myself.
Focus on what you’re good at
The moral of the story is that to be a good front-end dev, it’s good to have some aesthetic ability or at least the ability to communicate about it. If you’ve got that, market it as a strong point. But if you’re totally programming-minded, you can roll with that and still have a fantastic career.
What are your thoughts on this? Leave a reply.