The other day I stumbled upon a Quora's question related to Front End Engineering and Startups on "Why is it that startups have trouble finding front end developers?". The OP adds the following notes:
(...) I think most people would agree that front end development is much easier than other fields of engineering. So why is it that startups have trouble finding front end developers?
I saw a few good answers, and most of them go straight to the point. Here's my own opinion, based on my work experience, looking for Front End jobs, interviewing Front End Engineers, and working on Front End projects on the daily basis.
Relatively new field
The first and easiest answer to “Why can't we find Front End developers” is because it's a new field. Most people would disagree about this statement, since Front End Engineering is similar to Web Development, and Web Development has been around for more than 20 years. However, the concept of Front End Engineering as the technical implementation of interfaces and user experiences as a specific “working” field, is definitely quite new. The “Engineering” part to Front End started to grow just few years ago.
No one is to be blamed for this whole Web Development vs Front End Engineering confusion that circulates even today; for most people outside of the Web industry, Web Development is a blurry line between the Visual Design of a webpage, and the technical implementation of it; after all, Web Development is something Front End Engineers do, with the exception that Front End Engineers focus only on the areas that involve the users.
It became obvious after some time that in order to deal with the amount of work Web Applications required, a division of the technical tasks was needed in order to have multiple people to work in the Web Application. I don't know which task took the most amount of time, or which one was the hardest, but the fact that it was no longer possible to have a person to handle all the technical details soon became a concern in multiple web agencies and companies. As a result, all the previous Job Descriptions I used before (Backend Engineer, DBA, etc) got involved into to the Web Industry; take a note that most of theses jobs had been around for ages, but having proper requirements for them inside of the Web Industry is something that started probably within the last 10 years.
Nowadays Startups have it clear that if they want to succeed, they need to properly cover many technical areas of a Web Application: Front End, Backend, DBA, Operations and so on. PaaS (Platform as a Service) were created with the sole purpose of removing the Operations need from a Startup, while multiple BaaS (Backend as a Service) services such as Parse.com, go as far as proving database schemas and endpoints for your applications (you still need someone to help you designing the Schema though). Front End hasn't been “serviced” yet, but there are a few services out there that allows you to buy Front End modules and components for your landing page; if you want to create the actual Web Application, there's no way around getting a good Front End Engineer, the same way you can't get your way around a Designer if you want to actually build a brand.
 That's a lie, making a site functional in IE was the most time consuming task. You also lost some sort of life points when doing so.
 Most Full Stack Engineers lack depth in the skills required to create a full Web Application, either in the Front End side, Backend or Operations. Expecting a single person to handle the tasks that at least 3 people do full-time in an average well-funded Startup is unrealistic. However, I know a few ninja's out there that can tackle from a GUI to a zombie process; if you have one of those in your team, do everyone a favor and never let them go.
Another important reason (and in my opinion the most important one) on why finding Front End is hard, is because it is a misunderstood field. As the OP of the original question described, most people think that Front End is a “relatively easier field”. In the old fashion “What most people...”, here's a detail on what Front End Engineers do:
What most people think Front Engineering is:
- Taking a Photoshop file, Image, or Wireframe and making it into a webpage.
- Sometimes design previous Photoshop file, Image or Wireframe.
- Code HTML and CSS, which defines content and styling inside a webpage.
What Front End Engineers actually do:
- Establish a visual language between Designers and Engineers
- From a Visual Design, define a set of components that represent content, brand, features, etc.
- Establish a baseline for the Web Application in terms of conventions, frameworks, requirements, visual languages and specs.
- Define the scope of the Web Application in terms of devices, browsers, screens, animations.
- Develop a Quality Assurance guideline to ensure brand fidelity, code quality, review of product by stakeholders.
- Style the Web Application with proper spacings, typography, headings, face fonts, icons, margins, paddings, grids and so on.
- Style the Web Application with multiple resolution images, device oriented mockups, all while taking care of design guidelines.
- Markup the Web Application taking into account semantics, accessibility, SEO, schemas and microformats.
- Connect to an API to retrieve information in a friendly, non-battery consuming, device and client aware way.
- Develop client side code to perform smooth animations, transitions, lazy loading, interactions, application workflows, most of the time taking into consideration progressive enhancement and backwards compatible standards.
- Ensure Backend connections are secure, taking Cross Origin Resource Sharing (CORS) procedures into account, protect against Cross Site Scripting (XSS) and Cross Site Request Forgery (CSRF).
- Never forgetting that despite strict deadlines, stakeholders requests, and device limitations, the User is, and will always be first.
In order to achieve aforementioned goals, Front End Engineers use many tools that range from Visual Design tools (Photoshop, Adobe, Macaw, Sketch), to Programming Tools (IDE's, Command Line, Source Version Control, Bash scripts, Build tasks). Sometimes we even have to take care of Marketing (Newsletters, Campaigns, Analytics, SEO, Social Media), UX (animations, transitions, feedback, interfaces, visual language) to Content tweakes (breakpoints, avoiding orphan words, readability, colors).
Bad Front End Engineers
At the end, the Front End Engineer market is plagued with guys that do many of the following:
What bad Front End Engineerings do (and thus hurting real Front End Engineers):
- Add to Web Application CSS Frameworks (Bootstrap, Foundation, Skeleton) while using 5% of the CSS/JS, without seeing any requirements, designs, or performing any kind of comparison/evaluation.
- Feed the idea that just because you add CSS Framework, a site is “Responsive”, or that responsiveness is some sort of spice you can just sprinkle into a Web Application at any time.
- Talking about “Responsive Web Design”, but being unaware of Server side techniques.
- Coding CSS without conventions, preprocessors, naming standards, good practices, and at the same time writing CSS with over qualified selectors, ids, magic numbers, !important.
- Ignoring performance, memory leaks (not knowing what's a memory leak _really _is), failing to audit their code or measure it.
- Presenting a product without any kind of metrics, or the metrics being “It works on my Computer/Browser/Device”™
- Pretty much creating Software while Ignoring 30 years of Software Engineering.
A good Front End Engineer will not only take in account the mechanics of the Web and the languages it uses, but also has experiences in all the different components, systems, and concepts than interact with it. Here's a few things that an experienced Front End Engineer should know or do on top of just the normal Front End Engineering tasks:
What experienced Front End Engineers need to know and do on top of good Front End Engineers ** (hint: this are the ones you want to hire)**:
- DNS Resolution, usage of Content Delivery Networks (CDN), and performance on multiple Hostnames as part of resources requests.
- HTTP Headers (Expires, Cache-Control, If-Modified-Since)
- All rules from Steve Souders (High Performance Websites)
- How to solve all problems showd by PageSpeed, YSlow, Chrome Dev Tools Audit, Chrome Dev Tools Timeline.
- When to leverage tasks to the server and when to the client.
- Usage of cache, pre-fetching and post-load techniques
- Image Formats, benefits, when to use which one and how, Image Optimisation techniques, and loading strategies (sprites, lazy loading techniques, cache flushing, PNG interlaced)
- Knowledge and usage of CSS Standards, modern conventions and strategies (e.g. BEM, SMACSS, OOCSS)
Today, more than ever, the web has a place for Front End Engineers. It was probably due the evolution of multiple devices, browsers and Web Standards, that made it urgent finding people that focuses on the user side of Web Applications. Front End Engineers and developers around the world had been able to shape exciting products that defy the scope of what we thought the Web was ever going to be: a place to see your a restaurant menu or a company offices' hours. Now we have from entire 3D galleries, real time Video communication, Radio Stations, and even entire Office Tools (e.g. Google Apps, Microsoft Office Online). All now on top of the Cloud, the omnipresent entity that stores everything we write, listen, email and watch.
Although is hard to find Front End Engineers, I know that more and more people will join the ranks of the Front End army. Not only because of amazing work environments or big pay checks most Front End Engineers job offer, but also because coding in the web is incredible exciting: you have the chance of touching the life of thousand of users, while providing thrilling services to anyone with an internet connection, all of this on top of these things called Browsers, that despite its limitations, they are able to parse, paint and render any kind of crazy ideas. Godspeed Front End Engineers, the Web is waiting for you.