More on Hiring Software Developers

I wrote a blog post a few months ago about hiring software developers. After which I decided I no longer want to do programming puzzles interviews. I believe the best way to show my skills to a potential employer is to either do a task related to what I would be working on and submit for evaluation, or to work with them for a few days on a actual project.

I’ve recently done an interview that involved a task, and it proved to me that even tasks can be screwed up in a way that shows nothing about the potential hire and does not evaluate their skills in any way.

My task was to request a feed, parse it, and display 3 pieces of information and an image in a list. This task was way too simple to prove anything. Any beginner iOS developer can do this and I thought I would finish it in a maximum of 15 to 20 minutes.

That particular company’s APIs use JSON but they can’t give me access to the APIs, which I do understand. So instead I was given a URL to an RSS feed to work with. While that makes the task a bit harder for me since I never had to parse RSS feeds before, it also makes it even more pointless.

To me it was like going for a driving test, and being told that all I need to do to pass the test is to start the car. That doesn’t prove in any way that I can or cannot drive. To make it even worse, instead of giving me a car, they would give me a truck. Now I need to figure out how to start a truck, to prove that I can drive a car.

I took me 2 hours to figure out how to parse the RSS feed, extract the data I need using regex (since it was all inside a single tag) and present it in a table view.

I ended up being rejected. When I enquired more about the reason I got rejected I was told that it was because of my speed. Again, that is totally pointless. Does completing the task in one hour instead of two prove I’m a better engineer? I would have taken far less time if I worked with RSS before. So was the task’s main goal to test whether I can work with RSS or not? Also pointless, since they don’t need that particular skill (which anyone can learn in a very short time anyway).

I thought that programming puzzles interviews make companies miss out on good engineers because they don’t show their real skills, and that tasks were much better. Turns out you can make tasks dumb enough to do the exact same thing.

Join the discussion below or on Hacker News.

  • Guest

    My 2 cents here is companies shouldn’t provide some simple tasks to judge you upon. I think it’s all about how you think in solving this problem and which methodologies you followed to come up with this solution. So every interview task should be followed by face to face or online meeting to discuss how you come up with this solution.

    And BTW I think you should have used NSXMLParser instead of regex :)

  • BUF

    > I believe the best way to show my skills to a potential employer is to either do a task related to what I would be working on and submit for evaluation, or to work with them for a few days on a actual project.

    For a few days! You’re assuming employers have the luxury of that kind of time? We don’t. You are one of (at least) dozens of applicants Recruiting has to deal with in any given month. Expecting us to assign an employee to work with every potential hire for multiple days is disingenuous.

    As for doing a “task related to what you would be working on”, our project is not trivial. If hired, you’d be spending the first few weeks (at least) doing nothing but learning. You can’t reasonably expect to be handed an actual current development task when you probably know nothing about the company’s tools, environment, or problem-space.

    When doing pair programming interviews, I do at least try to use a piece of technology or concept that is something we deal with every day. It sounds like that’s exactly what this employer was doing with the RSS parsing task. Oh you’ve never parsed an RSS feed before and don’t have access to their JSON endpoints? Can you imagine, just maybe that’s the exact same position the person who *wrote* the JSON endpoints was in? For whatever reason, maybe they will decide to completely overhaul the way they’re dealing with the RSS feed tomorrow. Trying to determine if you’re capable of a task you yourself say, “any beginner iOS developer can do” is hardly unfair.

    When observing potential hires work through a task, I’m looking for a few things:
    – Your familiarity not with frequently changing tools or languages, but with *concepts*. This overlaps with general “code-sense”.
    – How you deal with unfamiliar topics. Can you approach a problem from multiple angles? What do you do when you’re stuck?
    – Most importantly, what’s your _attitude_ like? Are you interested in learning something new, or are you just going to complain when something’s outside your comfort zone?

    Maybe it wasn’t just lack of speed that lost you the opportunity.

  • Stephen Reid

    > And BTW I think you should have used NSXMLParser instead of regex :)

    I think that that’s what the real test was.

  • ceedan

    Yeah. Definitely

  • HeshamMegid

    > And BTW I think you should have used NSXMLParser instead of regex :)

    I only used regex to extract several pieces of data that were inside a single tag, not to parse the XML.

  • HeshamMegid

    > For a few days! You’re assuming employers have the luxury of that kind of time? We don’t. You are one of (at least) dozens of applicants Recruiting has to deal with in any given month. Expecting us to assign an employee to work with every potential hire for multiple days is disingenuous.

    Many companies already do that. I believe it depends on the size of the company and how rapidly they are expanding. I understand this is not practical for everyone.

  • pmusolino

    Working in a company like this would have been a nightmare. Maybe it’s a sign of destiny. Good luck for your future!