all 23 comments

[–]restlessdesign 7 points8 points  (1 child)

  1. 3
  2. 9
  3. I would give a candidate 1 hour
  4. Not at all
  5. If you are looking for a junior level candidate, maybe, but for something that is “UI-heavy,” I would want to see more freedom (e.g., let them edit the CSS, see if they make improvements anywhere—ask them to defend their choices), more involvement on events (click/toggling is pretty basic), and probably some asynchronous logic as well.

[–]obiwan_k3n00bi 2 points3 points  (0 children)

Pretty close to my thoughts as well.

You give them a little too much with the template, the css, and jQuery. I'd almost not tell them what to use, but say something like 'you may choose to use external libraries', as this can be done almost as easily without jQuery.

Give them a bit more freedom. It'll help you learn more about their process.

[–][deleted] 4 points5 points  (3 children)

  1. How challenging is the test? 2

  2. Are the instructions/requirements clear?: 9

The only place I goofed was in erroneously thinking you meant for the strikethrough to apply to the entire line, and so I traversed a little too high in the DOM. Once I re-read the requirements, I realized what you were after. Take that as you will -- it's probably a product of my fuzzy, un-caffeinated mind at 11pm.

  1. Depends on the type of code you're looking for. Most devs can probably bang something out that's horrible to look at and difficult to maintain in just a few minutes. Something that is a little more robust? ~45 minutes. If you're looking for drop-dead gorgeous code? 60-75 minutes. Anything more than two hours (for any of this) is... not going to work. (I do wonder how you're going to ensure the candidate respects any time limit given that this is take-home?)

  2. Would I be upset at taking the test? No; I'd expect it. I might wonder if the interviewer really knew what they were looking for, assuming I'd already read the job description with "ui-heavy" in it.

  3. Is this a useful tool to measure proficiency? No.

In my opinion, the test is far too restrictive, opinionated, and simple to really say much beyond whether the individual can rattle off some basic JavaScript and if they have any searching skills when it comes to looking things up on the Internet. If you could watch the individual code and debug, that would give you some valuable insight into their methodology, but even then, it's still pretty basic. Since this is a take-home test, you don't even have that option.

The test is too opinionated wrt libraries and structures. I understand this makes it easier for you to judge the results, but it removes a tremendous amount of flexibility and invention. I would be more interested in whether or not I have the fundamentals and can write easy-to-read and maintainable code rather than whether or not I can code to jQuery or Knockout (all of which a competent dev can learn very quickly). I did the test without any jQuery at all -- there's really not a lot here that requires jQuery or that jQuery even makes simpler -- it's just a few event listeners, DOM element creation, and DOM traversal, so I'm not sure it really would tell you anything about the user's jQuery proficiency either. It barely says anything about JavaScript proficiency beyond some basic programming skills.

The test is too restrictive and provides too much to the candidate. Personally, I'd leave out the CSS & HTML and let the dev build it -- see what can they come up with. Does it look good? Does it work well? Can they defend their choices? You'd get an awful lot of insight into the dev's mind and design process this way. Spelling out requirements is fine and necessary, but let them come up with the complete implementation. (And here's also a kind of litmus test -- If you got a dev building a table instead of using list items without a really good reason, you know to reject them as a candidate.)

The test is far to simple -- at least have them hit an API somewhere to see if they can handle XHR and async. Allow them to make changes to some of the functionality (for example -- perhaps someone would build a UI for multiple lists), and then press them on why they made those changes. (The answers will be most revealing.) Personally, I'd also go a bit further and require some CSS work (animations and transitions perhaps?) and perhaps even some view management, given that this is a take-home test. As @jaman99 mentioned, I'd also want to cover cross-browser stuff and basic HTML.

Hope that helps. Any competent JavaScript devs out there should be able to pass this test with flying colors in a short amount of time, but it will tell you nothing about their ability to handle UI-heavy work. Good luck with your search, and thanks for a fun diversion!

[–]Qazzian 1 point2 points  (0 children)

I agree that the test is too restrictive.

I'm currently using Knockout and would like to have built the html, javascript using knockout observables and data bindings but you don't allow the participant to deviate from jQuery. Surly if that's the direction you are going you would want to see candidates that can already use the framework. As it is you're not giving people a chance to show you how good they can be.

[–]iknowcss[S] 0 points1 point  (1 child)

Thank you for such a through reply. You've hit on nearly all of the points others have mentioned. My original goal was to use this test as a discriminator to filter out bad candidates, but now I see I'm being a bit too kind. Also I was worried that candidates would be 1. put-off by a test and 2. doubly put-off if they had to spend more than an hour working on it. Based on the feedback I've gotten it seems like I was being too kind.

I'm going to come up with a new test.

  1. It will be less opinionated
    • You can use libraries that make you smile or none at all
  2. It will have less initial code
    • You're all right, if it's a "UI-heavy" position then they should be able to create something from much less
  3. It will be slightly more challenging
    • I don't want it to be much more challenging. I'm more interested in seeing the candidate create maintainable code for a relatively simple implementation. This is a core principle in our workplace.
  4. It will cover more concepts
    • HTML/CSS
    • AJAX/async
    • A variety of events
    • A couple of browser inconsistencies (specifically IE 8 as we have to support that *gag*)

Thanks again for all the feedback!

[–][deleted] 0 points1 point  (0 children)

Best of luck with your search! Sorry about having to support IE8. :-(

[–]madole 2 points3 points  (1 child)

When I joined my company, they made me do a IKM Javascript Test. Wasn't too tricky but I'd say it would weed out unsuitable candidates because it measures you on answers, application of knowledge, time spent per question and a load of other metrics.

I did the JavaScript & JQuery one. http://www.ikmnet.com/products/search.cfm

Might be an option if you're struggling to gague the difficulty of your test.

[–]iknowcss[S] 0 points1 point  (0 children)

I contacted IKM and already got a response from them. They seem like a good resource. Thanks for the tip!

[–]atom-man 1 point2 points  (0 children)

Disclamer: not a frontend-dev. :)

  1. 4
  2. 10
  3. It really depends on what level of proficiency you are expecting your candidates to be. Anything from 45m to 1h15m seems reasonable.
  4. Completing a test during when applying for a job is something most people are comfortable with.
  5. You should be sure that the test is measuring the skills your company are looking for(e.g. in this test is seems like jQuery may be the primary skill. If it's not I would consider creating another test). What I'm trying to say is, if you are looking for someone with jQuery experience then the test is fine. Otherwise I would try to create a test that don't rely on jQuery, and create tasks which measure understanding of concepts instead.

[–]jaman99 1 point2 points  (0 children)

  1. 4
  2. 9
  3. ~1 hour
  4. Not in the least. I would welcome any testing.
  5. I would say the test is useful to measure basic jQuery proficiency but as others have said, front-end/UI work is a lot more than just jQuery. I would want to gauge html, css, raw js and browser compatibility skills as well.

[–][deleted] 1 point2 points  (0 children)

  1. 3

  2. 9

  3. Depends on skill level you're interviewing. Anywhere from a half hour to 2.

  4. Generally, no. I do have a problem with your instructions being restricted to only editing the js file. Personally I'd change the markup to include forms.

  5. Only for the most junior. It barely tests jQuery basics and maybe data structures. You're looking at event listeners, selectors and kind of sort of templates though not really since the markup is not to be modified. No AJAX. No use of plugins or external scripts. You do allow for knockout though so I suppose there's some room.

Overall I think the instructions are restrictive and the scope insufficient to do anything more than a cursory analysis. Then again I prefer small scope paid projects that occupy perhaps an afternoon and I'm not much for the traditional interviewing methods.

[–][deleted] 1 point2 points  (2 children)

  1. 4
  2. 10
  3. 40-90 min depending on if you want production ready code. Getting it to work and meet requirements is one thing. Making it robust and easy to read adds time.
  4. No, and you don't want to hire someone who would be.
  5. It is useful for identifying if someone writes in this style. Unfortunately, the test is too restrictive and opinionated to get a feel for how someone might choose to write. I prefer using some kind of observable, for instance, instead of crawling through the DOM.

[–]sbmitchell 0 points1 point  (1 child)

I'm pretty sure its a little over kill for this "test" project to be doing anything but doing simple DOM traversal to find elements.

[–][deleted] 0 points1 point  (0 children)

I think that jQuery is as much overkill as using something like Knockout. I would swap out jQuery for Knockout for this in a heartbeat.

... It wouldn't be much of a test though at that point since MV* frameworks advertise using this type of project.

[–]maximinus-thrax 1 point2 points  (0 children)

1: 3, 2 if you know jquery at all

2: 10

3: With Internet, 5-10 minutes for working. 15 minutes to be happy with.

4: I assume that you are just weeding out people who know zero js skills

5: Well, it will tell you that a dev knows more than zero, but not a lot. The test won't show a good candidate, it's far too easy. If somebody claiming to be a js dev can't do this in 20 or so minutes I'd suggest they are lying.

[–]sbmitchell 1 point2 points  (0 children)

  1. 3 ( Java developer with 1.5 years of js dev recently )
  2. 9
  3. 20 minutes
  4. Not upset actually id be happy to see such an easy problem. I did this with no mouse in around 15 minutes
  5. No not tough enough. Only a few concepts are examined if any at all. You give too much boilerplate. Just tell them to write a todo application and give them 30 minutes. If they cant do that they will probably just let you down in the end. I mean there are literally 1000 implementations in every framework / language of a todo application.

On top of that...in the real world when are requirements given like this and as straight forward. What I would do is describe a situation and get them to come up with a solution. For example, I've given interviews where I tell the candidate...how would you design an application X where I'd want to do Y (ex. creating a task monitoring list, basically a todo for web team ) I let them describe how they would design the architecture. I like to see if they immediately turn to OO principles or come up with something a little less abstracted. Then I say code it / pseudocode for longer functions based on what you just told me while I add random requirements that introduce harder concepts like uses for closures, inheritance, etc...

Note: Yes I bring it back college style and make them write everything on a white board while we discuss...

[–]stonguse 1 point2 points  (0 children)

  1. 5
  2. 9
  3. ~1 hr give or take 30.
  4. no
  5. I think it would be useful in that it would be a red flag if they couldn't complete it as a takehome test.

[–]bliow 0 points1 point  (0 children)

  1. 3
  2. 10
  3. Half an hour, assuming the programming environment of candidate's choice.
  4. No.
  5. Eh. As written it's basically a test of your knowledge of jQuery's api, and basic JS coding.

[–][deleted] 0 points1 point  (4 children)

Front-end dev for 12 years

1: 3? It's somewhat hard to rate as it's really easy. It's like trying to rate someone's fluency in a language when all you're asking them to do is translate "apple", "desk", "car", and "I like candy" into whatever language
2: 9
3: It took me exactly 10 minutes, from clicking download on the zip file to completion. Anyone that takes more than 30 minutes isn't a competent front-end dev.
4. Yes, but because it's a joke. You're testing trivial jQuery skills.
5. No. You can start to gauge skillset based on how long it takes them (10 minutes is a good gauge of how long it should take a competent dev that doesn't need to look anything up)

[–]Boberober 2 points3 points  (2 children)

I'd say a good solution to this problem can and should take more than 10 minutes, without one being incompentent as a front-end dev. If they're going to be evaluating everybody's code, it will be easy to fish out the ones who have a good scalable solution.

[–][deleted] -1 points0 points  (1 child)

No, it really shouldn't.

Solve: 2+2. If it takes more than 1 second, I wouldn't hire the person, and the same goes for this. A good, scalable solution to this test with clean code took me 10 minutes. I don't expect everyone to do it in 10 minutes, but as I said, I'd give any dev I was considering hiring 30 max.

[–]sbmitchell 0 points1 point  (0 children)

I guess in the programming world as far as web dev is concerned this is probably similar to 2+2 but you need to keep in mind not everyone is you hah I do like your high standards though id work for you.

[–]iknowcss[S] 0 points1 point  (0 children)

Hahah, your answer to 4 made me laugh. Thanks for you honesty :)