Most of the startups and companies give assignments to the developers in the interview process. Do you like it? What's your opinion on this?
I have been into this, and as a developer I do prefer creating an awesome assignment rather than just a technical interview. As the uniqueness and simplicity of assignment can give developer a view about the kind of work the company does. Like some assignments I got were to build a Command line Dictionary Using an exposed API and on the other Game of thrones Battles API or even a Simple MEAN APP. It's level varies by the companies requirement.
As the developer works continuously to complete the assignment with proper coding style and to code it in overnight. He expects his work to be discussed and judged as soon as possible. Delaying in judging would have a negative impact on the developer.
Besides, you can find many websites organizing weekly 12hr online hiring challenges e.g. HackerEarth specific to a startup. I love taking part in those challenges as they give pretty amazing 12hack assignments and good for brushing up the skills.
Plus point for developer is they get to show there talent and one extra awesome project gets added to their GitHub account and also learn something new giving the uniqueness of the assignment.
One can judge on various grounds like the type of tech stack used, type to coding style guide followed, the chronological order of commits in GitHub, the level of cleanliness in the code, definitely proper commenting of the code, number of features successfully implemented, etc.
Note: For problem setters, the assignment you set should not be lengthy and huge, else developer won't even bother trying it unless your startup is that good. Assignment should be something different and interesting, it has to be unique and align with your company work.
Some assignments from startups:
I don't like it, just because I don't like being under pressure.
However, I definitely do see the value in it, and I would way rather be judged on my ability to code/solve problems than my social skills of impressing the interviewer with big words and brand names.
I have been on both sides in past 10 years: I got hired by completing assignments once and I myself gave assignments to candidates to see if they're capable of understanding the problems they need to deal with if they get the job. It was OK if they can't provide the complete answer. The method they choose is the key to understand their perspective on the solution. Because of that, about 70% of assignments was Q/A and then a related assignment for their coding skills. If candidate can think right on the problem, coding skills are already easy to transfer from an actual employee or even in short time by reading existing code base, etc. In that perspective I think those assignments are OK as long as they make sense for the job description.
But there're another cases much more different which makes me think of need of those assignments. One of them was happened to me.
I'm not sure of the percentage but companies pick candidates via independent head hunters and sometimes company, head hunter and the candidate can be on different places. A head hunter asked me to if I would like to work in a company of extremely popular online multiplayer game (I am not gonna mention company's name) and I sad that was my dream job, of course I would because I thought they're interested in my experience on backend side. After 2 interviews with the head hunter, he suggested me to the company and I got through 3 interviews with their team and second one was with their project leader which went really good.
After 3rd one with some senior team members, they said they have an assignment for me. The assignment sounds like really good. Design a team game, any-kind of team game, from WoW to 2 people Super Mario and decide some rules to apply and apply them randomly to make sense at the end of the game. They said I can use any programming language I want. That was it.
I knew they were using only Java, C++ and some python thanks to the interview with the project leader. I thought their approach was like mine on the assignments. I mean to see the perspective, not the actual complete code because I had only 48 hours. So I decided to apply a game I already have played some (I am not an online gaming person) It's called Heroes of Newerth. In about 18 hours with a few breaks I have applied 2 teams with 5 people in each one, randomly assignable 20 heroes with their all skills (magic, attack, etc.) and 10 average items with their applicable rules. I decided to apply those in python because it was about 5 years ago and I was more comfortable with the language in those days.
After I sent the assignment in a zip file, I started to wait for the answer. They sent an email for another interview after a few days. I was so sure that I got it. I started to plan that I'd start as a remote employee until I get required papers ready to move to another continent, then 16 hours flight and a brand new life! I accept that it was so good to be true :)
Anyway, on the interview with their same senior team members, they started with asking about the graphics by that question: we couldn't run the graphic mode. I said because there isn't. I explained that I created an advanced server/client mechanism with ZeroMQ for an online gaming model which everything goes trough the server and get validated. Client code connects randomly to make sure server waits for 5 people on each sides and all clients have different hero and items randomly. They could keep tracking events by text messages on the screen and I even added a parameter to server to slow down the game if they would see what's happening step by step.
I said I know that authorized server model's not 100% applicable for a real time online game but that's just an assignment and that's what I think of possible to prepare in 48 hours. They just said they were expecting to see graphics. (from a senior backend developer with socket programming and high concurrency experience)
Then I got cocky, never raised my voice but made sure that they got the situation from my perspective. I explained them what they did wrong such as finding a candidate via an over seas head hunter and having no clue what the candidate capable of, having an unclear and not-job-description-related assignment. That attitude was wrong of me when I try to see all of these in their perspective. But on the other hand, I was in their shoes many times and I always read the candidate's resume and assignments was always about the job description and people never had to solve them correctly. Perspective was the key always.
Anyway, I am not sure how many people would read that long text but as you can see that's a really big disappointment for me. But the real reason I put it here to show different perspectives on evaluating assignments.
I think it's overrated or should be at least not be the major - watching it with the clock - criterion in the process. That's a bad attitude. A general deeper understanding of "how things work" is far more important.. :)
Occasionally, I get a really good question. Usually this involves creating a sample application, or UI. I generally like these.
Now, there are about a thousand questions that have been super silly and a waste of time. I find that most of the time, these questions take you so far out of your element that they are useless.
The best interviews I have ever had went something like this: Interviewer: "Hey, you don't need to do a technical interview because I reviewed your code and it rocks" Me: "Cool!"
I think is kind of stupid... why? Because first of all if you're trying to hire a developer that has already a job, the chances are that he won't make it to the job interview specially if he knows it will take not just one hour but more and a lot of companies don't interview after office hours.
Second thing is that when you have little time to develop something on a computer that's not yours and does not have the IDE you use nor plugins and stuff you're confortable with so you'll write very messy code specially and that's just crazy, how in the world are you supposed to do the front-end of a site and make it responsive in just 20 or 1 hour, I'm a front-end developer and that's the kind of job assignments I got to do.
It's way better that they give you the problem to solve or the thing to develop, but can be something way to complex for it to take it more than one or two days to work on your free time. And in the interview to see the code and make questions on what this function, css does or how and why you solve something. This is way better or just to do some little exercises like I need to to this thing or functionality or something that will not take you more than 10 minutos to solve.
If I were to ever to hire someone, what I would do is to get them to solve a few assignments first.
Now I would prefer to take their hours and will pair with them and see how they go about solving the problem. I had applied to one company and this same happened with me in the process. I got the offer and it was very good experience.
Second option is to let them do the assignments in peace at their home. Now this needs to be comparatively more challenging unlike the above case because candidate is at liberty of getting help from anywhere in the world. Ask them to put it on github and host somewhere better(if applies). Then better is to schedule an interview and discuss on it. Discuss on it a lot - every decision they took in design of project, language etc, go beyond what is already implemented and test their though process on extended(potential) additional features.
This is a way of doing proper assessments of candidates as per my experience(as a candidate only :).
I'm ok with it as long as they don't ask you to build some full blown web app or something stupid.
I'd rather love to have a technical discussion (Not just the plain Q&A) more than anything else in an interview.
I judge the company based on the questions and the person who asks the questions :) so they can be fun but often they are just stupid and I often don't care about skill and more about character :)
I like it, but it's mostly because I like solving puzzles (I like hackerrank a lot).
However, I don't think it accomplishes anything meaningful, as the solutions for most puzzles (or similar puzzles) are easily found, unless the challenge is real time with the interviewer pairing with the applicant to see how they go about solving it.
Rodrigo Garcia
Ninja man
Marcus
Full Stack Developer
Personally I do terrible at those hackerrank puzzles and tests in general. However given an actual project with an actual assignment I will shine. I think it has to do with visualizing what I am doing. If I get a puzzle and its just like those hackerrank questions I seem to lose what the purpose is.
So if there are tests with hey fix this thing with an actual site or at least try. Then yeah I am all for those tests.