Hiring Front-End Engineers
computedstyle.com
computedstyle.com
I am a computer science graduate and front-end developer with four years of industry experience and I started it around 10 years back as a hobby. I do some graphic designing too but my strong domains are html,css and javascript. All of them are self-learned as the author has mentioned.
Wherever I worked, I hated the fact that people kind of undermine the importance of front-end. They bring in some software engineers and make them work with me. Everyone thinks they know html and css and its pretty easy.
Since there are no way of measuring the quality of their code, I get really frustrated seeing people undermine my domain. Even with this much of experience I feel there is so much to learn and so much improvements can be made.
As a designer, it pains me to see some interfaces that directly represent the back-end model, not the user's task.
Dear GDs: Let's not fight anymore, lets work together to make beautiful web-babies.
Love, the Engineers.
PS: Did you lose weight? You look great! Lose the hipster hat.
It was more in reference to large enterprise apps, the one in mind combines 4 formerly separate, disparate apps, a mail server and a file manager into a single install, and doesn’t have any bearing at all to what an actual workflow is. Each Ext tab basically dumps the contents of a database out, or loads an iframe that contains a different install’s instance.
Even getting something close to looking the same across multiple browsers and resolutions is a herculean task.
So yeah, you pooped out something pretty. Well done and all that. Now the hard work begins, polishing that turd until it is dynamic (i.e. loads the appropriate data), usable and accessible.
Get yourself some potty training (e.g. roll the html by hand) and then we'll talk about respect.
When I said "As a designer," I meant "in the eyes of a designer." Most people here like to wear enough hats that it makes sense.
Try to be a little less condescending next time.
#1: same applies to back-end too.
#2: why not? And why is that front-end is specialist and back-end is generalist? This point is very weak, and I'd say that the main problem with back-end specialist coming to front-end is the tendency to dismiss it as "easy".
#3: I have both. And prototype. Good JS developer does not make good front-end engineer. Experience with popular frameworks is a plus. Also, if you know jQuery you will know your CSS selectors—that's a plus.
#4: Author has a point there. I'd not say good F-EE must be an artist, but a good taste and design sense is a huge plus: with those qualities one can see misalignments, broken rhythm, stray font, etc. without the need of designer to point at that.
#5: Wrong. A good front-end engineer must be able to operate those three separate layers: structure (HTML), presentation (CSS), behavior(JS). There is very little of that in print, not to mention other qualities that fundamentally differ.
Nah. The original point of #5 was
If you want to find good front-end engineers, look to the newspaper and print industry.
This is because every design -- print or graphic-- needs a logical FLOW, visually. People who migrated from (or started in) print know this, and it ultimately makes the end user experience better. Knowing the three layers is obviously necessary, but I don't think that's the point the author was pointing out with respect to that data.
CSS (presentation) - InDesign has style-sheets as well but they are different in some fundamental respects.
JS (behavior) - Using fundamental design rules a designer can have a measure of control over how the viewer "behaves". Dynamic white space, focal points etc.
I think any print designer can be a good front end engineer if they have enough desire to do so.
Instead of asking something easy, with a completely unrealistic caveat that makes it tricky for people who think that the "library" was actually a positive invention, why not ask something not easy.
It sounds like you're looking for people who spend their time writing garbage like
while(node = node.parentNode){
if(node.className.match(/foo/)) {
break;
}
}
because `node.closest('.foo')` isn't hardcore enough. That sounds like a crap engineer to me.With developers who can't tell the difference between jQuery and JavaScript + DOM, that is a barrier to being an effective developer.
However, this article emphasis on Javascript at the expense of the other technologies and soft skills that make a truly excellent front-end engineer - HTML/CSS, solid understanding of SEO, Accessibility (WCAG/508/WAI-ARIA), etc.
I've interviewed plenty of front-end engineers who breezed through a similar no-framework javascript question, but fell to pieces when I had them hand-code a three-column, fixed width, centered layout in HTML/CSS (nav/content/sidebar) with the stipulation that the content column appear first in the HTML source.
These candidates also tend not to know:
- What rel="nofollow" means
- What WAI-ARIA is.
- What browsers were affected by and how to trigger Quirks Mode.
- The difference between PNG-8 and PNG-24
Front-end engineering is a holistic discipline that demands a wide array of skills across a big chunk of the spectrum between back-end developer and visual designer.
Overemphasizing Javascript skills at the expense of others is a dangerous precedent.EDIT: Fixed formatting.
Just saying.
I think the point where we can meet is that it's easier to teach a good web designer+beginning programmer enough software engineering to be useful than it is to teach an expert developer browser quirks and design.
I think a big part of the reason hiring for the front end is difficult on top of the wide skillset is the discipline didn't even have a name three years ago. I spent years ('03-'06) trying to figure out a job categorization for myself that wouldn't have me doing graphic design or writing stored procedures (I can do both competently but not well). For a couple years, just the fact that I knew "Ajax" opened doors and it took quite a bit of work to wrangle through the various browser quirks but as tools advance the discipline--and people expand their skillset--a much wider set of people have the page scripting skills that were cutting edge in 2005. Similarly, the rise of the second level of javascript libraries (KVO, MVC, MVVM, Modules, etc) will allow more people to build more stable solutions and the general practice will be what's cutting edge today. I expect this second stage will make it easier for the back end developers to transition over, though I suspect the dedicated static language people will continue to have trouble.
Engineering is a mindset. Engineering is a more mathematical approach to the coding (e.g. thinking in terms of theorems and proofs, and being aware of what your fundamental assumptions are (and being able to challenge them)). Engineering is someone else being able to pick up where you left off if you get hit by a bus. Engineering is kicking the tires before you give that live demo. Engineering is beating your own code to within an inch of its life. Engineering is about divide and conquer. Engineering is referring to problems with the code as defects and not bugs (calling it a bug is distancing yourself from it, as though it crawled in there by itself; calling it a defect is taking responsibility).
Engineering is best in life. Engineering is crushing your defects, seeing them driven before you, and to hear the lamentations of the testing team (because they're bored because everything works perfectly).
Engineering is listening to someone talk about the wonders of TDD, Unit Testing and Automated Testing and thinking to yourself, "that's a nice start but you've got a long way to go kiddo".
====
To be a developer is to sit in a circle, giving each other Dutch rudders, and go on about how Agile you are.
====
I'll take one Engineer, or someone who is keen and teachable, over a dozen 'developers' any day of the week.
c = c < 4 ? c + 1 : 0;
It's shorter (which matters for client-side code), and makes it more explicit what you're attempting to accomplish.
Alternatively, increment with c++ and replace [c] with [c%4].
c = c < 4 ? c + 1 : 0;
What is this line of code saying exactly.. ? if (c < 4) {
c = c + 1;
} else {
c = 0;
} var x = a || b || (function(){ /* stuff here */ })()
or var a = b = b || {}Self-taught: check Some college, no CS degree: check Play an instrument(several): check Artist of type X: pseudo check (I'm an amateur photographer)
I think it makes sense under those guidelines where when I interviewed with Facebook in 2009, I ended the conversation after 10 minutes with one of their engineers. Completely the wrong fit for a frontend engineer worth their salt.
recruiter told me the interview would be just like google's. And i should study classical algos and python/java/C++ Studied it for 4 weeks until the day they wanted to call me. first question was a javascript one where the interviewer wanted me to remember the getElementsByTagName(*) solution. Heck, 4 weeks watching MIT algo classes and reading TOC and doing the exercises in python or C, i couldn't even remember proper JS syntax on the spot!
Think that was one of the most awful interviews i had. got so nervous on that 1st question that i blanked out trhu all the rest :)
back on topic, i got 5/5 on this list :) 1. degree in design related area 2. learned FE before BE (could do a little desktop and embeded before the web tough) 3. Still prefer pure JS for my personal projects (at work it's YUI, and open source contributions are mostly jquery nowadays) 4. Who aren't? :) 5. first job was at a newspaper
Fundamentally the interviewing process is not a solved problem. So we have flaws in the system. I agree that playing trivial pursuits is annoying, but what else will they do?
Though Developer/Test Driven Design seems to be working out for them.
The front-end developer takes the design and builds it in code. All of it - code, styles, interaction, etc. There are web designers who are also front-end developers and vice versa, but the roles are not equivalent and they require different skillsets.
- Web developer since before Bubble 1.0.