The following is a guest post by Lara Schenck. I heard her tell this story at a CodePen Meetup in New York. I saw an awful lot of nodding heads. It’s a fact that there is some trouble in this industry with job titles, descriptions, interviewing, and that whole rigmarole. Check out this story from Lara, then follow her, as I’m sure this isn’t the end of this discussion.
I’ve been self-employed for the past three years. Though I did spend my first year out of college working for a three person, now-defunct startup, I’ve never had a typical 9-5 (or more like 10-8 nowadays) and to be honest, never really wanted one. Lara Schenck, LLC is a profitable business, and every day I do work that is enjoyable and challenging. I make my own hours, take vacations when I want to, and run everything on my terms.
While that’s all awesome, what you don’t get from working independently is the team experience. I base my work on teaching technical literacy to non-technical designers and content producers so that they can better communicate with developers. The theory is that if a designer understands why it’s a bad idea to request 18 fonts, and if content producers know why it’s not trivial to edit the titles of a set of related posts, life will be easier for everyone. At least that’s my theory, and the assumption on which I’ve developed my business.
Lately though, in a bout of the good ‘ol impostor syndrome, I’ve been feeling like, wait, how can I be telling people how to work on teams if I’ve never really worked on one? I’ve always been the ‘Lead UI/UX/Visual/Web/Front-end Designer-person-thing’, and have never worked for a larger company with separate teams for product, UX, marketing, content, frontend, backend, etc.
So I felt the urge to look for a job, and a seemingly perfect one fell into my lap. It was for an awesome company, and it sounded right up my alley skill-wise. The title was ‘UX Engineer/Interaction Designer’. I usually balk at the the term “engineer” (perhaps for good reason) but considering the presence of “designer” and the nature of the job post, I wasn’t too bothered.
FizzBuzzed.
When it came time for a technical interview with the lead developer, I felt pretty confident. Except for JavaScript “engineering” and anything related to algorithms, my technical skills are sharp. We begin with a great talk about style guides, Sass, the designer/developer phenomenon, atomic design, content, all those awesome things that get me super stoked. Then came the coding portion. I was anticipating questions about nitty-gritty positioning, semantics, maybe some UI based JS stuff, and development workflow. The first question was:
Interviewer: Are you familiar with FizzBuzz?
Me: Um, to be honest, no.
Interviewer: Ok, well, you have to write a program where multiples of three print ‘Fizz’ instead of the number and for the multiples of five print ‘Buzz’. For numbers which are multiples of both three and five print ‘FizzBuzz’. So it would look like ‘1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz’
Me: (OMG MATH. I tried to talk through it a bit, but then said:)
Me: Ok, again to be honest, my JS knowledge is more regarding UI/UX based tasks. And I don’t really understand the point of the question. Like, what’s the use case? When would this come up in the role?
(Only after recounting this interaction to a friend did I realize you should not ask “why are you asking me this?” in a job interview.)
Interviewer: Well, it’s an exercise in programmatic thinking. No worries, let’s move on to the next question. Write a function that takes a timecode string and turns it into seconds.
Again I started talking through it, but it was impossible for me to figure it out with someone watching. I needed to do some serious Googling. He said I could email back my solutions. I toyed with the idea of calling up and saying, “forget it, this isn’t for me” but I decided to stick it out. After spending a few hours coming up with something that semi-worked, I found the solution on StackOverflow and, in my honesty, linked to it in the code.
Unsurprisingly, a few days after I sent my solutions I got a “you don’t have enough experience for the position, but we’d like to keep your resume on file”. In my impostor-prone state, I felt called out as a just-good-at-Googling-and-maybe-jQuery developer. I was embarrassed.
But yeah:
<rant>
After letting this self-doubt dissipate, a new emotion settled in: anger. FizzBuzz is a way to filter out fake programmers. I am fully aware that I am not a programmer, at least “programmer” in the sense of algorithms, data modeling, etc.
Let’s go through the job description I saw (only slightly altered for anonymity). To me, this job description was definitely not for a programmer according to that definition.
UX Engineer/Interaction Designer
(…blah blah blah, we’re a great company and looking for a great person…)
Responsibilities
- Create low and high-fidelity mockups to effectively convey interaction and design ideas (e.g. wireframes, sketches, ‘pixel-perfect’ mockups, etc).
Awesome. Except for the ‘pixel-perfect’ part. But maybe this could be an opportunity to help them update their processes.
- Deliver engaging, innovative prototypes, and contribute to front-end development of our products.
Sure thing!
- Collaborate with and synthesize feedback from other members of the team.
You got it.
- Evaluate the usability of new and existing products, apply user research findings, and make constructive suggestions for improvements.
I’m in.
Minimum qualifications
- B.S. degree in Design, Computer Science or related technical field or comparable practical experience.
Little problem. Feel free to contradict me, but can we agree that there isn’t such a thing as a B.S. in Design? And that Design and Computer Science degrees are wildly different? But I decided to let this slide.
- 2 or more years of designing clean, valid, and compatible websites and applications.
Yes!
- Knowledge of Adobe Photoshop and Illustrator.
For sure!
- Clean and elegant visual design aesthetic.
Yeah!
- HTML5, CSS3, JavaScript.
I’m a master at the first two, but since there was no mention of programming stuff and the responsibilities section was so design-centric, I figured my jQuery proficiency and capacity to self-teach would suffice.
- Passionate about creating responsive and delightful interfaces and experiences.
My favorite!
Preferred qualifications
- Experienced with Object Oriented JavaScript and modern JavaScript libraries such as Ember, Backbone, or Angular.
I’ve played around with these and understand the concepts. I wouldn’t say I’m proficient, but I definitely have ‘experience with’. Sure, this could be a lack in my qualifications for the position but again, the verbiage in the sections above is way more oriented around design and prototyping skills.
- (blah blah stuff about self-motivation and communication skills)
So, where does FizzBuzz play into this? Sure, “engineer” is in the job title, but so is “designer”, “UX”, and “Interaction”. To me, that definitely doesn’t indicate a programming job. I wouldn’t have applied if I knew that.
It’s a problem.
I imagine I’m not the only one who’s had an experience like this. The job title conundrum is a known issue. But job descriptions are just as bad or worse.
Let’s take a look at a few more examples I’ve seen.
UI/UX Designer
UI/UX is far more non-descript than I’d like.
In addition to your experiences and capability with UI and UX design, if you accidentally mastered HTML, CSS, JavaScript, front-end development, then that would be seriously awesome.
Remember when you woke up the other day and were like, woah! I mastered JavaScript and didn’t even realize it! No.
Frontend Developer
- Write front-end code in HTML/CSS/SCSS and JavaScript
- Occasionally write front-end code in PHP (WordPress) or Ruby (on Rails)
Umm, PHP and Ruby are not front-end languages. Maybe they are talking about templating, but… no. Also, listing SCSS and CSS as required skills is suspicious. I smell someone listing buzzwords.
Frontend Developer: HTML5, CSS3, JavaScript
What You Will Be Doing
In this role, you will collaborate in designing, building, and testing world-class web applications. You will work across product, marketing, legal, business development, and operations teams to build and improve our core products. Test and deliver solid, reliable code that meets all requirements. Discover and experiment with new technologies and share with the team.
You will be the entire company. Not helpful.
What You Need for this Position
- HTML/CSS
- JavaScript Frameworks
- CMS (WordPress a plus)
- Adobe Create Suite
- UI/UX
- Eye for Design
Very non-specific.
Now for my favorite…
Competencies
- Creativity
- Problem Solving
- Dealing with Ambiguity
- Customer Focus
- Functional/Technical Skills
Lolz.
Sheesh.
Hopefully you get my point.
Who is writing these descriptions? I’m sure these companies find a perfect match now and again. But I have a feeling that’s not the norm. It’s more likely that many of these companies just don’t know what they need so they look for everything. A recruiter or HR person whips something up and puts it out there to see who bites. Maybe they’ll catch a unicorn!
What’s more, based on my (albeit minimal) job application experience, who knows what will happen in the interview? I imagine you’d talk to a real designer or developer with a much better idea of the situation, and who knows how well that matches the job description, let alone the interviewee’s skillset?
</rant>
I feel like it’s pointless to rant without proposing a solution, so here are some suggestions for whomever is in charge of this hiring stuff:
- Audit your process and identify the gaps. Either hire a consultant or do it internally, but please look at the big picture, talk to a range of employees (junior and senior), and figure out where the pain points are. Don’t just interpret the opinions of dev/design leads and managers and lump their needs together.
- List tangible, example tasks that are relevant to the position. Particularly if JavaScript is listed in the role (can you tell I’m a little sore about this?). Something like:
- Implement image sliders and smooth scrolling
- Migrating our CSS pipeline to Sass
- Make quick design decisions about interactive elements, such as button hover states and form styles.
- Create a registration form using AngularJS.
- Use regular expressions to detect any date within text content.
- Recommend improvements to our Rails deployment workflow.
- Hell, put code examples in the description. Why not? Seriously. If I saw that I would be expected to sanitize data with pure JavaScript, I wouldn’t have bothered.
Storytime
That’s my story. I call it “Tale of a Non-Unicorn” because, going into this application process, I kind of thought I was a unicorn. They’d be lucky to have me. I’m a designer/developer if there ever was one. But, thanks to an erroneous job description (and JavaScript… grrrrr), I realize my unicorn-ness was a fallacy. Sad face. Except not sad face at all because business is booming at Lara Schenck, LLC.
I think other people have dealt with this. Yes? No? Am I just being bitter and snarky?
This post is near and dear to me and all to similar to many “interviews” I’ve been on. The whole fixbuzz thing is a huge joke. I have never used the or heard of PHP’s modulous operator before or since I failed the fizzbuzz test.
I’m also learning that if you have mastered all the skills listed in the description then why would you be interested in their company? You’d be at Google or something.
After consulting for a while (many interviews) I now go in more confident than ever. This is who I am, this is what I’ve done and this is where I’m going. Any time that approach doesn’t work I have not wanted to be there anyways and the times it has worked I’ve spent time at the company. :)
One very real use-case for the modulus operator, which I do use from time to time, would be to loop through a set of data and add an extra class or run a function every 4th item. This might be helpful in a WordPress loop, for example, if you wanted to insert an ad between every few posts.
In the days before :nth-child() was reliable, adding a “first” and “last” or new row classes using a modulus operator was something I did in PHP templates all the time.
Fizzbuzz isn’t an algorithm puzzle, which are fun in their own right. It is a test to see if the person, claiming to “know JavaScript,” can at least solve simple multiplication. It should take no more than a few minutes unless the problem was not explained thoroughly.
JavaScript is gross. Math isn’t.
I use modulus math on a somewhat regular basis.
Just last week, I was using it to split a number into three subgroups (Microsoft decided to store time as a number, where first two are hour, second two are minutes, third two are seconds).
Not the same as fizz-buzz per-say, but knowing it’s available makes problem solving easier.
“OMG MATH”
You lost me there. it was very hard to be sympathetic. What does FizzBuzz have to do with Math other than a addition and conditionals. (You could use the modulo operator but it’s totally unnecessary to solve the problem.)
Perhaps this will help you in future endeavors.
https://github.com/h5bp/Front-end-Developer-Interview-Questions
Notice FizzBuzz is included in the questions above. Happy studying!
“The fizzbuzz thing” can be solved without the % operator.
And you’re right about being confident, you have to be sure you want to work at a company, if you don’t like their ways, you will have a bad time.
Jinsib,
Correct me if I’m wrong, but I don’t think she really labeled herself as a developer. I think the gist of the article was the frustration with the lack of consistency between the job description (seemingly design-heavy) and the interview (seemingly developer-heavy).
But I would definitely agree with you if there was someone who identified as a front-end developer and couldn’t solve similar JS logic problems.
Which is why I don’t identify as a front-end developer! My JS is really bad…
You are not being bitter. Snarky maybe, but I find snarkiness to be a pretty common indicator of excellence – or at least lack of patience with bull$#!^.
I think we need to blame keyword-sniffing resume processing software for the reliance on buzz words. Many an honest-to-goodness Unicorn will fail to make it through that obstacle.
As to why a hiring manager is asking about fizz/buzz. ??????? No clue. When I was a hiring manager, I asked applicants solve a few common problems, but always something directly related to the work they would be expected to do.
I mean – I would be suspicious of someone who could solve fizzbuzz off the cuff. They are likely to:
1. have too much time on their hands
2. had too many interviews asking that question
3. be unsufferably arrogant
4. or all of the above.
This sounds like every job application in Richmond, VA ever. I’ve seen so many companies list stuff like this where the people doing the hiring don’t even know anything about the technology they are trying to hire for.
FizzBuzz does have its place, but definitely not for the average web developer. If they wanted someone who did serious backend engineering, then it would be a decent way to see how someone steps through logic, but very few web dev jobs really need anyone who does that.
Before I left my last job, we came up with some real case design scenarios (one’s that we had already solved) and gave them to candidates for my replacement. That way we could see someone’s coding style, ability to problem solve, attention to detail, and programming capabilities. These are really things that matter, real use cases.
This test was sent BEFORE the interview, that way someone could gauge whether or not this was the job for them. It also allowed us to have some of the answers upfront, as well as additional new questions we could ask based off of the solution that was used.
Nice, that’s refreshing to hear. How did you guys find candidates? From job posts, or more through your networks?
You didn’t fit the role. Waa. Move on.
Front end development is /development./ Especially considering all the poop we’re lumping into the browser these days. Writing code is not only valuable, but necessary to maintain conciseness, efficiency, and application workflow. If you wanna make consumer-grade pretty-pieces, sure, eschew javascript. If you want to do anything that actually /works/ — learn to write code. It’s nothing to do with math. It’s problem-solving.
I think the fizzbuzz problem is perfectly applicable in web development. Full stack web developers actively work in multiple languages at the same time. Some people are back end developers and some people are front end, but most of us have been exposed to tons of languages, but only specialize in a few of them. The fizz buzz test proves that you have a general understanding of the language. IMHO, you should be able to solve a problem like fizz buzz in any language on your resume. If you looked at some python code once, or maybe changed something in a ruby application, it doesn’t mean you “know” python and ruby. I can count in French and order food in Spanish, but I don’t put that on my resume because I’m not fluent. Fizzbuff is a quick test of fluency in programming language. If you have to look up how to solve the problem, that is fine, but that means that I’m going to pay you less than your counterpart who can do it off the top of their head. They are already halfway done solving the problem, and you are still reading the first stack overflow answer.
Kudos, Lara, I can completely relate.
Yeah FizzBuzz is BS even for “Engineers”. Its supposed to test logical thinking, but its such a strange and narrow problem.
I have interviewed people who could ace things like that but could code a real system to save their life, vice versa and everything in between. In my experience most of those programming puzzles have 0 correlation with job performance, even for back end algorithmic jobs.
Bottom line, they are trying to figure out who can think logically, however they are the ones not thinking logically about what their test tests.
If you want to hire someone who at least as beginner level knowledge in a language it’s great, as it’s very very easy, and anyone who actually knows the language should be able to solve it. No reason literally anyone knowledgeable in basic programming can’t do it with pseudo code either.
“Strange and narrow problem”
If x / 5 = 0 print buzz
These comments are giving me nightmares.
@John Gotti
Only 0 would ever print “buzz”
Sounds like another company that expects a web programmer with 15 years of experience and wants them to work for $22k a year.
Or a company with a manager like person with little to know technical knowledge trying to hire someone for a technical position and doesn’t know what the actual requirements are for that position.
Yeah, and on the other hand you have bootcamp graduates up for an $80k role because they can check off the languages/frameworks on the list. Bootcamps are a whole other can of worms…
My favorite is when they want 15 years experience in something that has only existed for 5 years.
Hi there.
I get it. I understand when rejection comes around and bites you. It’s not a great feeling, but think of it this way, if you are not comfortable with what they asked you in the interview, then you probably wouldn’t like working there.
But lets be clear, would you hire a painter without asking to see them paint, or a house builder without seeing other houses they have built?
What about someone who will have to solve problems in code? Would you want to hire someone without seeing if they can solve a problem in at least psudo-code?
For the longest time I was of the mentality that “web development” was not real development, it was silly scripting languages. But times have changed, SPAs are becoming much more normal, and with it, a need to have more tools in the proverbial tool-belt (or perhaps more fishing implements in Lara’s case).
I’m one of those managers who uses questions like this to filter out who can and cannot cut it, and honestly I don’t use FizzBuzz any more; too many people know about it.
Years and years ago when Joel wrote about it, it was a great go-to. Now I expect folks to do slightly harder, but still super simple problem solving in psudo or real code (up to them).
But lets be clear, these tools are not any indication of technical knowledge by the asker, despite human nature to vilify anyone who rejects you.
So to end this long winded comment, like many things in the past, times are changing, and you either adapt or you become extinct.
N.B. Designer jobs will always be around! Just don’t think you wont have to learn more about the underlying JS/other problem solving. Knowing “this issue is fixed by using this JQuery method” is ok, but understanding the why is better.
This post is so correct. It just needs to reach out to several corporates. I was interviewing for a renowned search company that made me apply to a technical position for an internship while I was looking for a UX design position. They had reached out to me through the career fair. At no point before the interview I was aware about the position I was being interviewed for, not even the work I was supposed to be a part of. I failed badly in my interview as I was not prepared about what pieces of my portfolio should I be talking about. Only when I got the reject email I got to know about the product I was supposed to work on. How can one showcase their capabilities if recruitment will happen like this.
Aha, I had the exact same experience, only the opposite. The job description was something technical/development-related; the requirements mentioned almost nothing about design and I felt quite proficient at just about everything they were asking for. Even during the interview, the hiring manager was impressed with my background and confidence that I could make significant improvements in their small team processes.
But then I was asked to come up with some design mockups. I was honest with them that graphic design was not my favorite thing to do – I love working on graphics but hate the back-and-forth nature of designing UI, not to mention the blank page syndrome. All of the sudden he began to get nervous, like that was a deal-breaker, even though the job description never mentioned design.
It’s been my experience that great developers are rarely great at design, and vice versa. (I think it’s the whole left-brain/right-brain thing… I may be wrong about this, it’s just my experience.) I mentally filter out any jobs with “Designer” in the title. That one interview really burned me because it was going so well up until they dropped that bombshell.
…And I’m with you on the whole “PHP and Ruby are not front-end”… I’m cool if it means back-end templating, but when it comes to business logic, that is clearly back-end. (I also tend to think back-end devs tend to make poor front-ends, and v.v., but I’ve seen a few exceptions.)
Oh man. This has been my life, to the “T”, for the last 5 years. It’s something I’ve just gotten used to, for the most part. But it’s the recruiters who are calling me up every week with new leads who I worry about. I’m constantly telling them no, because I can tell they’re looking for back-end programming even though there’s the slightest hint of it in the job description. And the recruiters must be fed up with me. But every time they guilt me into going on an interview, it turns out I was right.
By the way, those job descriptions you quoted? They’re ALL like that. Everywhere. It’s… insane. They want someone who can do it all. Because they don’t know any better.
Great post. This happened to me last week. I was interviewing for a front-end HTML/CSS position and I was asked the ‘eight balls problem’.
I answered the question, but I think I should have taken your approach and just replied ‘Why are you asking me this?’ Like you described, there was no indication in the job description that algorithms or ‘engineering’ would be necessary. Quite the opposite, in fact. When I mentioned my knowledge of JavasScript and Ruby, and that I participate in and score highly on CodeEval, HackerRank, etc. it seemed like they actually viewed that kind of thing as unrelated to the job, even a liability.
I think the interviewer must have read an article on ‘How to Conduct an Interview’ which said ‘ask the eight balls question,’ and was just following that advice to the letter. Really irritating.
I would have walked off immediately and not looked back.
BTW – I’m a physics/math grad and unless you’ve taken some abstract algebra recently, you will be totally loss.
For fizzbuzz?! Fizzbuzz is easily solvable by anyone who’s taken CS161 (first programming class at college level), or gotten to loops and if/else on any online resource. It takes less than a week AT MOST to learn enough from any language to solve it, even if it’s your first language. If you are not technically literate it might take a little longer, but if you don’t know the difference between a computer and a monitor you shouldn’t be applying for an engineering position that requires JS!
This is absolutely false. (Source: I have a PhD in mathematics and have done research in abstract algebra.)
A physics/math grad who calls this “abstract algebra”?
You better rethink your decision to study math and physics because if you can’t easily grasp the basic concepts here, you’ll be in a world of trouble later on.
Because physics will get complex… fast! Bra-ket notation in Quantum Physics would be just one example. Differential equations (both numeric and analytic), complex ring integrals and tensor calculus. Just a small excerpt of the mathematics involved, upon which the physical concepts are heaped on top.
(Only after recounting this interaction to a friend did I realize you should not ask “why are you asking me this?” in a job interview.)
Disagree completely. Remember, any job interview you go to is just as much about YOU interviewing THEM, and asking “why are you asking me this” is a great tool for drilling down to exactly what your job description is going to actually be.
My experience: I interviewed for an “HTML5 Front End Developer” role a couple of years ago. Job description listed all the cutting edge tech that every dev would give their left hand to work with. Fast forward to the interview and in the technical portion they handed me a piece of paper and asked me to WRITE OUT BY HAND the code for a CSS-based dropdown menu that would work in IE 6.
“Why would you ask me to do this? Is this going to be indicative of the type of work I’ll be doing in this position?”
When the interviewer said yes, I politely thanked him for his time and got up and left. No interest in building IE 6 compatible CSS, thank you very much.
Being able to solve clever riddles is a waste of time to evaluate job readiness. For many of those employers, it seems like some novelty trick they read online as a way to weed out the “fake” or “bad” applicants. It’s about as helpful as interview questions like “What animal would you be and why?” (which, yes, still get asked). Test me on tasks that I will perform on the job; that’s more helpful to both of us.
As far as the elusive unicorn who can do it all: I wonder whether that is more because of salary constraints (get away with hiring 1 person instead of 2 or 3), poor understanding of how designers/devs work (it’s all on a computer and involves web stuff!), or the assumption that what we do is fun and easy all of the time, so we can magically accomplish all of those tasks (the computer does all the hard parts). I’ve had clients who have fallen into all of those camps.
If those companies manage to find that unicorn, either someone with that skillset is surely out of their budget or is good at misrepresenting their talents.
For developer jobs, it is impossible to test you on things you will do on the job. Such things require mountains of context: what the end user wants and why they want it, what the technical limitations you have to operate under, the deployment architecture, any legacy code you have to work with, the style and architectural guidelines the rest of the team has set forth for the project.
This was a job that was mostly designer tasks, and required a bit of programming. The amount of programming represented by FizzBuzz is not unreasonable, is not a “clever riddle”, and asking for a little splash of another field is not asking for unicorns. It’s some simple logic (not even math, if you think about it) that someone with rudimentary programming experience should be able to answer. Here are some questions that get asked on interviews for real developer positions:
http://ayende.com/blog/163394/new-interview-question
http://ayende.com/blog/168066/interview-questions-large-text-viewer
http://ayende.com/blog/163361/evil-interview-questions-unique-random-c
That’s not to say that the author isn’t extremely talented at what she does! She just didn’t have what the company was looking for (which, again, doesn’t sound unreasonable). When they politely handled the situation (the interviewer didn’t deride or embarrass her, he even let her submit it by email in case it was just a case of interview nerves, and he politely told her that he didn’t think she was a good fit) she writes a blog post trying to make them out to be the bad guy.
FizzBuzz is not a clever riddle. It exists to weed out people who cannot program AT ALL. For that reason, it is extremely helpful.
It cannot tell interviewer if you are above beginner status, but it can at least tell you they have some beginner knowledge.
It is one of the easiest programming problems around. If you cannot solve FizzBuzz without google, you are not a “coder”.
I’ve been here. It sucks.
I had an interview where they wanted me to build an entire prototype in two days. I busted my ass to get it done, I leveraged a jquery library to help with the layout.
At the code review they wanted me to explain the mathematical formula the javascript library uses to create its layout. If I knew that I wouldn’t have to had to resort to using a library to begin with.
The point being even if you can go on stack exchange and find a solution these peoples expectations are that you are able to explain, down to the semicolon, what the code does.
Knowing what the code(or even CPU) does is a great skill to have. Helps out a lot.
There is a use-case.
Make a table where every even row is of different colors.
nth-child called; it wants you to stop explicitly using alternating classes.
@Fiskie
My company called; They want me to support IE8. What now?
n-th child isn’t the “fizzbuzz of design”. If you know all CSS 2.1 and CSS3 selectors like the back of your hand then you’re probably a good designer – or at least fluent in the markup.
Fizzbuzz is a basic programming test, so the equivalent would be a basic CSS test like using simple selectors to change common properties, adding classes to elements, etc.
Sorry Lara, but I can’t disagree more. More or less every point in this post is assertive or biased. I understand that’s a huge rant in a blog post shape, but I hope you will not get offended if I try to give some constructive criticism. Let’s start:
You mentioned Javascript and front-end development. If you develop you need at least to know programming. Development is not just that, we all know, because programming is a tool… but you need it (plus algorithms) if you want to develop something on your own. Moreover, Javascript is a programming language and it’s Turing-complete. Hence if you work with Javascript you are (or should be) programming.
I’m not sure if here you are discussing the “S” part or the “B” part, but I can tell you that (at least in my country) there are several Bachelor’s degrees in Design (Communication Design, Industrial Product Design, etc) which are taught in Technical Universities. What’s strange about that?
Again, Javascript is a programming language. If a job description requires you to have a car, they need not specify that you should own a driving license. To drive a car you need to know how to do it.
It’s not a programming job, it’s a design job that requires you to know programming. Front-end web development and design do, as long as you want to use more than just markup languages.
My point is that, as you wrote, you should’ve declined application because it’s a job requiring programming skills (which was pretty clear). The fact that job ads are usually too vague is not an excuse: in fact, usually they require you to be able to do everything: programming, design, cleaning the floors, … :P Ok I’m kidding now, but they usually list a lot of required skills, it’s not that programming was not mentioned, it was.
One more thing…
The ad you quoted correctly mentions WordPress with capital P.
The “S” stands for Science. Design is a science, but not that kind.
@Lazza –
Ya, just noticed the P thing which is because of capital_P_dangit actually. Those sneaky WP folk.
Criticism welcome! Some thoughts:
Sure, but that’s kind of the problem, right? A design job that requires you to know programming? Or a programming job that requires you design? I am all about bridging the design-dev gap, but let’s be realistic.
Yes, JS is certainly a programming language, but with jQuery etc. it’s quite common to write JS without “programming” at all. And that’s totally awesome for the industry – it lets us hybrid designer/developer types leverage the language.
So, I definitely see where you’re coming from there, but given the huge variety in how we use JS there just needs to be more clarification.
I’d argue a more accurate metaphor would be that designing the interior or exterior of a car doesn’t mean you need to know how to build the engine. You should know the larger concepts of how it works, but you don’t need to master fuel injection.
Sorry, I have to reply to myself because the website allows only one level of nested comments. :P
Zoe, if you study in a Technical University you are not going to get a MA (or whatever is called, in English, that thing obtained in Arts school), you are going to get a BSc. We may discuss if it’s appropriate to include Design in Technical Universities (I think it’s fine) but that’s another story.
When we write Jquery code, most of it is based on
$
, which is an instance of the JQuery object. Moreover, it’s an object-oriented paradigm which encourages method chaining, which is again programming. :)Honestly I don’t think your metaphore is accurate because Javascript programming is an integral part of front-end work, while engine construction is not a part of car design.
To be precise, I am not arguing the fact that the examples of job listings you gave are vague. They absolutely are. But it’s pretty clear you’ll have to program something. What, how, and why… that is totally unclear. :)
This seems to be about an unclear job requirement and that would suck as I would be pretty startled if I got questions about design when I thought I was interviewing for a pure development position.
However some people seem to deride FizzBuzz as a test and I think that is wrong. I’m generally against “clever” riddles in an interview like the famous “Why are manhole covers round” and things like that.
But FizzBuzz from a programming perspective should be incredibly simple for a developer. It is more the equivalent of putting 3 distinct and popular fonts in front of a designer and tell them to identify them. I can understand that it is frustrating if you come from a different background; but one of the points of FizzBuzz is that it is not a trick and something all developers should be able to do (you don’t have to use modolus either).
If someone asked me that question verbally, I would probably be lost and confused.
But if the question was written down (paper or on screen) I would know the answer in 3 seconds.
I am wearing Engineering glasses: imperative programming might inspire you to come up with very different approaches and solutions.
I read your post immediately after reading a post from Jakob Jenkov, the guy who thought me about SVG-programming and who has many excellent tutorials online. I think he tries to make the point that if you select an imperative language, you will still be able to program declaratively.
Perhaps declarative programming is suited better to create great looks and imperative programming to implement behavior (towards user, the server, the runtime-environment). But in order to make a rational choice, you should understand them, i.e. to be able to provide a solution in either way.
I’m afraid that the poor job descriptions reflect that the interviewers don’t know what they need.
Go, Lara!
I run my own small business. At one point I decided to hire someone to help me, and had to put together a job ad / write the job description. I wasn’t sure where to start, so I looked up a few dozen similar positions, picked out my favourites, and followed the same pattern. The result was a typical job ad with all of the flaws you mentioned. Next time I will incorporate some of your ideas. Thanks for the tips!
From the other side of the coin, I would say that a lot of IT people have poor resumes. It’s easy for employees to fall into the exact same traps, and only list things they know – “I’m good at CSS/JS/PHP” or similar. Personally I would prefer to see more info on experience – best projects that you have worked on, which projects you worked individually and which ones you worked as a team, what your role was in each project, what tasks you completed, what challenges you faced and how you overcame those challenges, and please if you’ve done anything that’s frontend on the web, provide screenshots and URLs (so I can open those sites up and evaluate the end result’s design, coding skills, logic, optimisation, etc and get an idea of your strengths and weaknesses, before the interview even begins). If projects are difficult to list for privacy or whatever reason, leave out the project title, leave out the URL and leave out the screenshot, but still provide some anonymized detail about what you did.
Also, people who are good at design and frontend development and backend development do exist… but they are very rare.
You said “I can use jQuery” but are not able to write a simple program in JavaScript that will use only
for
andif/else
. I really doubt if you can really use jQuery.Now Lara, how would you find all the comments by Pedro, and give them alternative colors (like odd/even rows in a table with different colors)?
@Steven Luu With css ;)
@Gijs
You can’t do that with CSS.
You can’t select an item by content
Even if you could, you can’t select an ancestor, so you can’t style the comment which contains the comment author “Pedro”
Even if you could, you can’t use nth-* to stripe only Pedro’s comments without striping the whole comment section
You have to use a FizzBuzz-style algorithm whether in JavaScript or the template.
My limited experience has been that job descriptions ask for more than what is actually required, but the actual interview covers a lot less. Maybe it’s just for the more technical jobs, I don’t know.
Also, a bit unrelated, but one tip when it comes to wacky job descriptions: If all you see is a generic job title and (misspelled) buzzwords, check out the “company” that posted it; more often then not, it’s a 3rd party recruiting agency, and what you see isn’t a real job. Don’t fall for it!
https://www.brandonsavage.net/why-recruiters-are-bad-for-your-career/
I dunno, the job description seemed pretty clear that they were looking for a programmer. They mentioned Computer Science degree and they mentioned Javascript. It doesn’t look that ambiguous to me. They even mention that they prefer a candidate with experience in Object Oriented Design and several MVC frameworks in Javascript. I’m not sure how else to interpret that job description. It seems clear that they are looking for a programmer.
So they interviewed with some questions to discover if the applicant knew some basic Javascript programming, and you don’t know basic Javascript programming. So you weren’t a good fit for what they were looking for. Makes sense to me. That’s basically the point of the FizzBuzz exercise. It really does do a good job of revealing whether or not the person is a programmer or not.
You can learn all this stuff though! Don’t feel down on yourself because this one position wasn’t a good fit. You’re not an impostor, you’re a designer that has not yet learned Javascript. I’m sure you’ll be able to learn some basic programming skills if you stick with it.
tbh, you just didn’t read the job title clearly, it’s got all the hallmarks of a job that requires at least minimal programming experience, and it’s pretty obvious for the description that when they list non-CS degrees as an option they want you to have non-degree related experience in the CS topics, and vice versa if your degree related or job related history is in CS.
You could have solved that fizzbuzz question with just a little bit of experience in JS, you only need to know the basic math operators and how to do loops to solve it, it’s very very simple.
You made a mistake when reading the job application, own it and prepare better the next time, but the rant is really unwarrented.
the job title stated “UX Engineer”, and the 3rd requirement in the description was “Javascript Frameworks” … better be prepared to at least demonstrate understanding of
mod
Too lazy to read comments so someone might have pointed this out already, but computer scientists are taught UX/interaction design and it’s very much part of the field.
I’m not a qualified trainer, and I’ve taught a bunch of 14 year olds JS for 6 hours, and let them do a variant of fizzbuzz on their own. They all knew how to do it.
Unless, of course, you’re saying that a UI designer doesn’t need knowledge of for loops in JavaScript, which definitely limits your capabilities.
Honestly, if you can’t solve FizzBuzz quickly and easily, you are better off not getting into a job position that involves programming. You’d be frustrated on the job, on a regular basis, guaranteed. Even network administration would be a stretch. Design would be ok if it was design only, i.e., if somebody else was going to do the implementation. But if the position wants you to know Javascript, it involves some implementation.
There are a number of problems with the with FizzBuzz test, and I personally wouldn’t use or recommend it; but being too hard or involving too much math are not among its problems. It’s basically just checking to see if you understand the principle of if/then/else, and I don’t see how you can write even the most trivial UI code in Javascript or any other programming language without that. Just for example, you use conditionals every time you write code to toggle the expanded/collapsed state of a UI element, because you check to see if it’s currently expanded to decide which to do.
“Frontend” is one of those words which means different things to different people. At my current company, ruby would definitely be considered the front end, since our mainframe and legions of COBOL programmers is the backend. In another company, the browser is the front end and the web server is the backend. In another, the browser and web server could be the front end and the oracle database, triggers and stored procedures the backend.
Two things:
That’s why I removed “Front End Developer” from my title a some time ago. Basically if we don’t know JavaScript we can’t call ourselves Front End Developers. Knowing JS is MANDATORY in that field.
True story:
I’m a web designer, some time ago I was referred to a job description that listed:
Requirements
Proficient with RWD and mobile – Check! 1 point
Willing to learn new subjects on his/her own and great drive to learn new things – Check! 1 point
Very good understanding of CSS, HTML and JavaScript – Pseudo-Check! 0.75 points
Good with Photoshop and/or any other design tool – Check! 1 point
Advanced knowlege of scale, color theory and typography – Check! 1 point
Desired (although not required) (notice the “not required” part :])
Skills with project management and agile – Check! 1 point
Exposed experience to Angularjs, Emberjs and other Javascript MVC frameworks – Fail! 0 points
Good skills at visualizing data – Check! 1 point
I’m not a JavaScript programmer but I fit 99% of the Requirements: 4.75 points out of 5 (not bad), which is what they’re looking for. And fit 66% of the “Desired” skills, 2 points out of 3, again I’m not a JavaScript programmer.
In total I fit 6.75 points out of 8, that’s 84%+. However, keep in mind that is all about the Requirements (I fit 99%), not the Desired list.
Then I get asked: “You think you’d be interested in learning Angularjs?”
¬¬, FFS.
ROFL!
I don’t understand why you act annoyed. Yes, you read the job description, but you didn’t understand it.
Maybe “web designers” have a different definition of what “desired” means, but for me it’s painfully obvious that “desired” doesn’t mean “optional”.
“Desired” means “it would be perfect if you already knew the particular technologies our company uses, but if you don’t we expect you to learn them on the job”.
It’s great that you used percentages to make yourself feel better, but to be honest: You failed the only hard skill requirement the company mentioned in the ad.
Gonna have to read it again brother: Desired (but not REQUIRED).
“NOT REQUIRED” == Optional. Let go the ego.
I failed the JavaScript part, but that’s not the point. The point is I fit practically all of the “REQUIRED” requirements ;}. Plus most of the Desired (but not REQUIRED).
I feel pain too, pain seeing that a programmer’s ego is talking. Ouch! lol.
… and the problem is? They didn’t ask you to know AngularJS, they just asked you if you are willing to learn it.
’nuff said.
I don’t think you grasp the concept and the reason behind the FizzBuzz test. It goes beyond modulos and algorithms. It’s a simple test designed to evaluate a person’s competency in the use of iterations and logic.
After reading your rant the only advice that I can offer you is that you really should take the time to learn some basic programming concepts. Trust me, it’s well worth it.
For instance, SCSS is the go to tool for a lot of designers when working with stylesheets. And like any of the CSS preprocessors, the more you dive into it the more you will use logic in your code.
Oh and Just for future reference, here’s an example of FizzBuzz in Javascript and SCSS.
http://jsbin.com/gojulonela/1/edit?js,console,css,output
I wish you the best of luck.
You should learn more programming and logic. You can do it, you deal with things that are just as conceptually complex all the time. And it’ll give you another reason to raise your rates!
Reddit is ripping you a new one in a huge display of self-congratulatory fervor, but I’m going to go against the grain here and agree that this is an unreasonable job description.
I’m a highly proficient Javascript programmer and I wouldn’t touch that position. I would get the same impression: that it’s mostly about design, with a sprinkling of Javascript. As a -Javascript programmer- and not a -designer-, I want to write NodeJS or do HTML5 Canvas game development when I go to work every day.
What I don’t understand is, who are they really expecting to find? What kind of “real programmer” would want that position? Sure you MAY indeed find the extremely rare superhuman who is both a great artist and extraordinary programmer but more likely you’ll find someone who is mediocre at one, the other, or both.
If their requirements truly need great design and great programming on the front end, then they should hire two separate people and have an effective process that lets them collaborate well. If they want a great designer who can do a bit of Javascript, they should just hire you and train you up. If you can already string JQuery calls together and understand callbacks, it’s not a huge leap to train you to implement a bit more logic.
I also don’t agree that asking for a CS degree and Angular/Ember/etc experience makes their intentions clear. Everyone asks for a CS degree if even the slightest hint of programming is involved. Job postings throw all kinds of shit at the wall to see what sticks. It’s like saying you want to date someone who’s 6’4 and Ivy League educated with muscular body and a big bank account. Sure you do, but at the end of the day you’ll settle for someone 5’10 with a beer gut and a great sense of humor.
While I agree that the listing is self-contradictory and sketchy, the fact that they listed that they wanted an “engineer” and a “developer” specifically means that they want someone who is a programmer. There is no ambiguity about what those words mean. So unless you’re going to apply to a job hoping that the people who made the listing are wrong about the job actually entails, you really have nothing to complain about. Ultimately this person applied to the listing despite the listing’s sketchiness, and despite their own lack of proper qualifications for what was listed. Whose fault is it that they interviewed poorly?
As someone who does UI in professional game development(I’m an engineer and do UI basically across the board), I have to be quite familiar with many aspects of design (not however, color theory, etc), but I do have to be able to effectively use photoshop, batch jobs, etc. I take designs and implement them, but I have to know some stuff on the other side of the fence. FizzBuzz is one of the easier programming question you could get in an interview (I’ve seen write a for loop stuff too, but.. yea, trivial).
In all honestly, i’d never hire anyone for any job in game development(unless they were doing pure design or art) without them being able to do FizzBuzz. I already get enough frustration from the lack of technical know-how of a few technical artists who create flash files which then I bring into our game. It increases my workload to fix their shortcomings.
It might seem like the title/job requirements were not properly disseminated, but it did say Engineer in the title of the job. Engineers in the traditional sense are EE/ME majors who have a great deal of mathematical background. Boolean logic and logical operators are critical in a lot of game development. The same with OO programming. You really need to do it a lot to get a feel for it, otherwise you’re always working with just enough rope to hang yourself.
It does feel like they overemphasized the UX/UI part just to rail you with programming questions. They’re probably trying to double-dip and get someone with skills on both sides of the aisle but without paying them appropriately.
To add, I think it’s important that all the “real programming” stuff so to speak was under preferred qualifications. That communicates to me that they want a good designer first and foremost, and if you are a good programmer too, then their wildest fantasies will come true. Like you, I would assume that some JQuery proficiency and the ability to self teach would be enough to be a strong candidate for the role (assuming you’re a good designer).
They seem to have forgotten the difference between requirements and nice-to-haves during the interview process.
You can do FizzBuzz in CSS3 if you have a list of numbers:
http://www.boogdesign.com/b2evo/index.php/fizzbuzz-in-css3?blog=2
Sorry, but a simple programming exercise shouldn’t be completely unexpected for a posting that mentions you need proficiency with JavaScript and (preferably) Angular & other JS frameworks.
As others have mentioned, FizzBuzz isn’t supposed to be much of a “real-world” challenge. It’s to see if you can use simple arithmetic operators & loops in a given programming or scripting language. If you don’t have at least that level of familiarity, you don’t know JavaScript (or Python or PHP or whatever). I’m not much of a developer (some college classes before switching majors & a bunch of self-taught stuff), but I could do FizzBuzz in any of the languages I use.
Reading the job title,they are searching for 2 different persons.
They missed, at least for me, to make clear if they wanted a designer or an engineer.
It would be better if they focus on one thing.
“We are searching for a designer with a strong attitude for engineering.” or “We search for an engineer with knowledge in design.”
Over the years I recognize a miss-use of the term designer.
A designer solves problems in visual communications, at least that’s what I study years ago. (maybe we use the word designer in an other context over here in germany)
It says “experienced with”. We’ve all had experience with (used) technologies… They’re looking for a little bit more than that. The “ed” at the end makes a difference.
Also, the other description you posted asks pretty clearly that you have experience in “JavaScript Frameworks”. That means MVC, routing, syntax, etc.
“You don’t know what you don’t know,” but this post makes you sound like you really don’t know what you’re doing. I doubt many developers will sympathize with your point-of-view.
Full stack developer here. I use CSS, HTML, JS and a number of other languages all day every day. Not a designer, but I can get by in a pinch.
I think I have to fall on the side of expecting any web development aside from building a design document or layout in photoshop to be fairly familiar with JavaScript. A lot of the more interactive elements of a website require sometimes surprisingly complicated code. Even more so back 5-10 years ago before we had a lot of the nicer features of CSS3.
I know as primarily a programmer I’m going to be a bit biased, but fizzbuzz isn’t that difficult a problem to solve, and while it doesn’t have a whole lot of practical use, it demonstrates a simple puzzle with different states, of which building websites offer all the time.
Incidentally, this showed up in my twitter feed today about and hour or two before I read this article; a pure css implementation of fizzbuzz.
http://jsfiddle.net/e9y4rsue/1
I’m sorry, but the interviewer is quite right to include a basic programming problem in a job interview whose job description includes mention of Javascript.
You probably have a unique set of skills and so need to push them in a unique way in your CV/application. Try just spelling out what you do and how you add value to stop future misunderstandings. Try thinking of the interview from the interviewers point of view – he was expecting your great skills PLUS a programmer – you missed an opportunity to convince him that minus the programming, you are still a great choice!
Lots of different discussions here.
Sure, a developer should know fizzbuzz, but this can go too far too:
https://blog.svpino.com/2015/05/07/five-programming-problems-every-software-engineer-should-be-able-to-solve-in-less-than-1-hour
Reactions:
My take on it:
http://codepen.io/sakri/pen/MwKyeG
It’s a team, don’t know how to do fizzbuzz? Ask someone on the team who does.
The math thing? My wife had an awful math teacher who told her flat out she was bad at math. She was traumatized and believed him until I’ve slowly been able to ease her out of it. Anyone can do math, not everyone can teach it.
Recruiting is an art form, like math teachers, there are good and bad recruiters. Time is money so unfortunately filters like fizzbuzz and degree requirements get used a lot.
I’m sorry, but I will going to disagree with you. Please, don’t take it as a personal attack. I know little about design, and I’m sure that you create beautiful and easy to use web-sites. And more importantly, I think that you’re a great person because you wrote a public post about failing an easy task on an interview — something most people would be too embarrassed even to talk about. This takes a lot of courage and openness, and these qualities in a person are more important than programming ability.
FizzBuzz is not a “programmer” test. It’s a test of understanding the most basic programming concepts at all. Even if the job is primarily about design, and all the person has to do is to write an occasional jQuery, I would still use FizzBuzz as a pre-interview test to weed out the clearly incompetent candidates.
The FizzBuzz is an incredibly easy test; the whole point of it is that if you can’t pass it, you shouldn’t write code in a commercial codebase, at all. FizzBuzz tests understanding of the most basic control structures: loops, conditionals and basic math operators. That’s all. If someone can’t pass a FizzBuzz test, it means that the code he writes will make the codebase significantly worse. It’s not just a question of low productivity; it’s a question of negative productivity. I’m sorry, but the JS code you would write, would, most likely, create more work for other developers on the team on the future.
So, may be the best course of action for a great designer like you would be to tell straight-away to the HR person that you can read code, but you’re not comfortable writing it.
I can totally relate.
The problem is that a lot of job descriptions still lump CSS (SASS/LESS) and HTML together with JavaScript. This might have made sense 6 or 8 years ago, but today you really need a person to do UX/UI (I call myself a ‘Frontend UX Designer’), with basically exactly the skills you have and a JavaScript developer (programmer) who handles everything else including the FizzBuzz type of problem you mentioned.
If in the past you could have ‘web-designers’ who only do Photoshop and frontend developers who create a website from a static design which fits pixel perfectly into IE 6 (gawd I’m glad those days are over), you can now certainly have a UX designer who creates a template using atomic design, SASS, HTML5, responsiveness, photoshop, webfonts etc. and a JS developer who does all the programming.
I’ve personally dropped JS completely and have begun to focus on UX and UI design exclusively as a freelancer. But if somebody can do it all, more power to them.
Simple, just solve FizzBuzz in CSS! http://codepen.io/SachaG/pen/jCpba :)
I have lived this before :-D, I was once interviewed for a C++ Position, since the beginning I told the employeer, “I have no knowledge on this area”, his answer was pretty clear, “ok no problem, that is not a real requirement”, after successfully complete 3 skype interviews,I had to make one in the company, after a 4 hours trip to the city… the interview was mainly focused on that technology I didn’t know about it…, srly… employeers should think about their methology, well after that I got a better job so, karma sometimes works.
Wow, this post and a lot of these comments are really disheartening.
First, when an interviewer asks you to solve a logic puzzle (of which FizzBuzz is about as basic as you can ask), they are looking for two things:
1) They want to see your thought process and how you work through problems. “How does she lay out the problem? Where does she start? What are her go-to methods?”
2) They want to see how well you can communicate what you’re doing. Walk them through each step, let them know how you plan to go through it and articulate each step.
If you can do those two things and are confident and semi-competant, chances are they’ll be happy with you even if you can’t fully complete it or get stuck on a tough part.
That said, how can you expect to be a “UX Engineer” without being able to code and use basic logic? I am a front-end/UI developer. I don’t do backend work, I would never call myself an engineer or software developer, I don’t know backend languages. I am a typical front-end dev with a very typical skillset. My entire job is taking objects passed from our API and displaying them in our webapp, all 100% on the front end. If I didn’t know how to use recursion I wouldn’t last a day at my job. How do you expect to lay out UI without using JS? Simple things like taking a data set and laying it out based on two properties takes the same amount of knowledge (or more) compared to FizzBuzz. Also, you linked the StackOverflow answer to your response? If you not only can’t do FizzBuzz yourself, but can’t even do the research to do it a different way to show that you actually gave it some thought, how can you possibly think this will get any other answer than a no?
I want to point out that there is nothing wrong with being over your head in an interview. After I was at my first web design position out of college and realized I wanted to be a front-end/UI developer instead of a designer, it took me failing many first calls and in-person interviews and a year of self-study and crappy personal projects before I was ready to actually get a developer job and keep it successfully. If you aren’t a CS major, you’re going to have to learn it for yourself. People go through what you went through every day, but instead of publishing a lengthy complaint and passing off the blame, they go back and learn the skills that caused them problems. Can you understand why people don’t take this seriously? Look, everyone uses StackOverflow or a Google search if they get stuck, but if you can’t do something as basic as FizzBuzz without looking it up, then you aren’t qualified and you are going to do more damage than good. You’ll be over your head, uncomfortable, and that company will be hurt by having you on their team. That’s what interviews are for, to see if you have the skills needed for the job.
Second, if you want to be a designer, that’s awesome. Web design is a great job that is needed by a lot of agencies, and you’ll be able to write HTML/CSS and design all day. If you want to make mockups and demos, apply for UI designer positions and you’ll be able to use those same skills and your UI expertise. It’s what I did while I was working on being good enough at writing solid code to get a job as a developer, and it was fun and fulfilling, even if it wasn’t what I personally wanted to do forever.
“Ok, again to be honest, my JS knowledge is more regarding UI/UX based tasks. And I don’t really understand the point of the question. Like, what’s the use case? When would this come up in the role?”
This is the part that really made me start to lose sympathy, even if I empathized with your situation originally as I had been in the same uncomfortable place a year ago. What’s the use case for FizzBuzz? UI/UX BASED TASKS! That is almost besides the point though, because if someone snarked at me like that while showing how inexperienced they were in the field all at the same time, I would give an automatic “no” without giving it a second thought. All I can see is bringing you on a new project with a language or framework we hadn’t used before, and you saying “Why should I know how to do this? This wasn’t a part of my job description”.
Third (this is directed more at the comments than the article), the “unicorn” thing I keep seeing both in the article and some of these comments in regards to people knowing UI/design principles as well as scripting languages like JS and Ruby is ridiculous and honestly a little sad. JS and Ruby absolutely apply to the front end, especially if you’re working with UI and not just design.
I personally could care less about what job title you want to give yourself, especially in such a weird, multi-niche industry as web development. Call yourself “super rocket-powered incredible web engineer” if you want. The problem comes when everyone that wants to call themselves developers (which is fine! everyone can call themselves developers it doesn’t matter) want to apply to development positions with only a knowledge of design, markup, and styling, then are unwilling to actually learn the skills it takes.
To wrap up, I’d like repeat that I empathize with your situation in a tough interview with questions you aren’t sure of. I’ve been there and it stinks. It makes you feel unworthy and that is the worst feeling to have in a potential workplace. This was just the 100% worst way to follow it up.
Dejavu!
This kind of “interviews” & Job Descriptions is common in my country. Even if you are good as a designer & developer(JS) both they will pay you peanuts as a salary.
Most of the interviewer are busy proving that they are better than the candidate.
I’m from India too , and if someone asked me to solve a problem such as FizzBuzz , I would’ve done it. Because :
The job requirement says a little bit about javascript frameworks
I have mentioned I’ve a bit knowledge regarding JS and frameworks
I’m not a douchebag.
But that’s just my view and moreover our country is filled up of managers who don’t know a shit.
There are some fizzbuzz solutions on the web that require some maths, starting with “modulo” (which is basically “the remainder after division”) and working up to some really esoteric things that are interesting if you like that kind of thing but you’d likely never use in a company if you wanted other people to maintain your code, but if one is not capable of implementing fizzbuzz in at least one way in a language, one is not proficient in that language to the extent of mentioning it on a CV or applying for jobs which require it.
I’d consider this the most straightforward way. It’s maybe not as “elegant” as other solutions, but it gets the job done, and unless you’ve profiled a bottleneck in your code, it doesn’t matter.
may this bit of insanely simple code help you in your future endeavors.
Note: i did not get this code from stackoverflow.
So what about if you were asked this instead of fizzbuzz: “we have two css classes that need to be added to table row elements in a table dom object: one of them to every 3rd row, and the other to every 5th row – how would you do this in javascript ?”
I would say this was your mistake, jQuery proficiency does not equal JavaScript proficiency.
What I would agree with is that from the ad it looks like the company is looking for a jock of all trades. In the places I’ve worked at I’ve never seen same person doing both graphical design and development and I don’t have a good opinion about a company that would require this broad range of knowledge.
I was asked this question. I was caught off guard, but I saw it as a challenge.
I was able to get the answer, but what they were really testing was my thought process. I made it a point to think out loud. I never do that normally.
Interviewing has a lot more of ‘show’ than actual tasks. I always sell myself. I exaggerate in areas I’m comfortable in and am upfront in areas I have no knowledge. I bring up cool projects I worked on, etc.
Also, this question is not the reason you didn’t the position. They need someone to be a good fit. I think they did you a favor. Best to have a job that’s a mutual benefit.
Don’t know why my post responded to you. Disregard.
I’m amazed that just about every comment here missed the bigger issue: there’s no standardization in this industry when it comes to job titles. One company’s “developer” might be considered a “designer” somewhere else. Another company might be looking for a “UX whatever” when what they’re really looking for is a front-end developer. And “strategist?” Fuggetaboutit. Nobody has any idea what that word even means. Don’t believe me? Ask them to explain the difference between “strategy” and “tactics.” Most likely you’ll get two definitions that essentially mean the same thing.
Oh, and one other issue: employers really need to stop posting job descriptions that include every skill they can think of (or crib from other companies’ job descriptions). If they’re specific about what the REAL job requirements are they’ll be able to compare apples to apples. If they post job that requires everything from “killer copywriting skills” to “proficiency in embedded systems engineering concepts,” they can’t be surprised when they get 8 billion resumes from wildly disparate candidates…or they get nothing.
There really isn’t confusion about job titles when it comes to “developer” and “designer”. “Developer” means that you program. Companies rarely ever say “developer” when they don’t mean “programmer”, and when they do it’s because they don’t know any better, 100% of the time. Please show me a listing from a reputable agency which has a “developer” listing that does not include other things in the listing indicating that they are looking for a programmer. Even in Lara’s listing there are several obvious references to programming. They even list “OOP”! The confusion doesn’t come from the employer side of things or even the industry side of things, it comes from applicants like Lara and yourself who don’t know the difference between a developer and a designer and who slap those words willy-nilly on their websites and resumes anyway. As for “UX whatever”. The “whatever” is the important part. “UX Designer” does not necessarily include programming, but may, depending on the listing. “UX Developer” always means programming. “UX Strategist” almost always means a leadership position and that they expect you to have a good understanding of both UX design and development, even if your actual job responsibilities don’t include those duties – you are often providing UX direction for other people who will actually be doing the design and development. It’s really not that complicated.
If in doubt about whether or not to call yourself a developer, don’t.
Also, the simple explanation of the difference between strategy and tactic is that strategy is a broad goal and a tactic is focused on a specific outcome. A UX Strategist is someone who provides an overall vision and framework for a company’s user experience design. The specific implementation, or the “tactics” used to accomplish the specific end-goals of each project are left up to the people implementing that strategy (designers and developers). So UX Strategy means what it says it means.
This is hilarious.
Recruiters are too lazy to learn what clients want, clients are too lazy to create real job descriptions, and if teams can’t put together requirements that are accurate, they don’t know what they are doing, and you don’t want to work there anyways.
Plenty of interviews, I’ve been fizzbuzzed, I finish it, and I leave because it is a pointless test of arbitrary knowledge that I will never, ever, EVER use. I use Ruby and Python for automation, that is it. Just because I list ruby and python does not make me a developer, nor do I want to be a developer. If a company can’t figure out what my job role entails, they’re worthless anyways.
The basic complaint is valid, a designer should not need to be a godlike programmer. But this question is not that hard. It’s just a “for” and two (or three if you haven’t thought about it clearly enough) “if”s
A solution that took about 5 minutes in Python:
If you can’t do that, you can’t make an Excel diagram about the hours you’ve spent on project x, you can’t write a JS function that checks if the input in the email field really is an email address, you can’t write a mock-up of your design. It’s very valid to fail you if you can’t do that.
Asking for a designer to implement QuickSort with Javascript is too much but fizzbuzz is barely the stupidest programming question possible. The only thing easier would be asking to implement a basic print 1 to 100. If you claim to know JS, it’s implicit that you know how to do a conditional, a loop and basic math.
But generally I agree with the post, disqualifying you for lack of JS skills for a UX position is ludicrous.
Great article Lara, and I empathise.
I get bombarded with job adverts from recruiters wanting the impossible – an ace UI/UX designer who can do all the front end coding themselves, and who is proficient with the latest JS frameworks (Angular et al).
These people do NOT exist.
For example, would an “expert” in Angular understand the nuances of responsive design? Probably not.
How about accessibility or SEO best practice?
And how “clean” would their CSS be?
Etc etc…
We need to be more realistic about front end / UI skillsets. And so do recruiters.
I could rant for ages about this stuff, and “impostor syndrome”, but I have a day job to do.
:)
Ok, so I agree job descriptions tend to suck. Usually this is because it takes some specialized knowledge to properly describe a specialized job-description.
However, if I see “Javascript” in the required qualifications and “Experienced with Object Oriented JavaScript and modern JavaScript libraries such as Ember, Backbone, or Angular.” in the preferred qualifications… I have to admit this would make me suspect they are looking for someone that can do the kind of FizzBuzz “programmatic thinking” stuff. After all, what their preferred qualification describes is a framework-agnostic JavaScript developer, someone skilled enough at programming to hop frameworks like it’s nothing.
Is it unfair to put it in the preferred skills section rather than the required skills section? Maybe a little.. but then again, with the quality of job descriptions for web-technology oriented jobs the line between preferred and required is very blurry.
The description sounds like it’s looking for a designer that understands the basics of JavaScript.
Understanding the basics would include being able to do something like FizzBuzz.
Howdy everyone! Chris Coyier here. Owner of this site. Professional designer and developer, going on 10 years. Learned FizzBuzz two weeks ago.
Also Owner of a job board. I’m learning first hand the struggles between people seeking jobs and jobs seeking people, and the language and process used.
Also the proprietor of some large-ish communities. Fully admit to deleting a bunch of comments here. That’s what I do. Been doing it since day one. That’s my job as a community manager.
Most of this discussion has been awesome though, and that’s what both Lara and I were hoping for. We’re at the same web conference together right now. Learning new stuff and leveling up our understanding and ability of all things web. I hope you all get a chance to meet Lara one day. Super smart. Great teacher.
I think it’s perfectly fine to remove nonconstructive comments. One of the main rules of having a constructive discussion is to keep it civil. I have seen many comments here that are unnecessarily harsh or rude. Rudeness adds nothing constructive to the conversation so I’m perfectly okay with seeing rude, harsh or nonconstructive comments removed.
There are some people writing that if you can’t “FizzBuzz” you don’t belong in this industry. That’s a harsh thing to say and it’s simply not true. For each commenter here that can write a FizzBuzz program, there has been a time when they couldn’t. They took the time to gain and/or improve their programming skills and now they can do it. And so can Lara or anyone else reading this article and these comments, if they want to.
There also seems to be some discussion about what degree of programming skill is required to be a web developer. I’d say, if you want to be a ‘developer’ you need to learn the art of programming. The art of programming involves both the theory ánd the practical experience needed to write good code.
If however, you want to specialize on the more conceptual part, like design and/or UX, rock-solid programming skills may be less important – at least for now.
Now, for the people that need to work with code, there is a tricky problem that many of the more harsh critics here seem to forget: It takes a certain amount of programming knowledge to realize that you don’t know all that much about programming.
This is a tipping point many people that simply ‘mess around with code’ have not reached yet. If you have reached that point, though, good for you! Spread your knowledge and help others improve their skills to move towards and beyond that tipping point. It sure as hell beats telling your colleagues they are idiots that don’t belong in this industry…
@Chris, maybe this is a good time to create a post that rounds up some good resources to get started on fundamental programming skills?
Howdy again! I’m going to close this thread. We’re over the “more than half vitriol” level which is pretty crazy for CSS-Tricks. This isn’t the CSS-Tricks community talking.
But good conversation around this is still encouraged! Feel free to email me directly at [email protected] if you want to discuss it with me (just the site owner, not author), or blog about this subject on your own blog. Old school blog back-and-forth is one of my favorite things ever =).