Writing after a long break.
So I have been giving interviews for quite some time and usually it involves an assignment where they will define some requirements according to which I have to work on them and also a deadline.
Some of these are given as weekend project & some of these have been given to work right while I was being interviewed in their office.
Ofcourse, I won't be revealing the company names but I will mention the industry type of the company I was giving the interview for.
I have also listed the assignments which were difficult for me to do at the end of the article.
All of these interviews happened in Bangalore, India. So the interview process might be different in different parts of the world
1. A responsive web app which consumes an api and lists the data and also make a form and send data via a POST request.
Type: Was given to work over the weekend.
Requirements: Make this with jQuery and Bootstrap & it should handle all the edge cases like validations(without using any external library), api errors & placeholders when the api was loading. I was given 24 hours to complete this.
Role: Junior Frontend Developer
Industry: Healthcare
Status: Selected (This was my first job as a developer)
2. Convert a landing page design prototype (an invision file) to code, without using a css framework.
Type: On site
Requirements: Make this in 1 hour and I can only use pure css. I was given access to internet and they allowed me to google things.
Role: Frontend engineer
Industry: CRM and SaaS for sales teams.
Status: Selected but did not join as I found a better company to my needs.
3. Clone zoomcar (a very popular car rental service in India) webapp. It should have filtering, sorting, add price ranges, should paginate data and filters to be persistent even if move to next page.
Type: Weekend project
Requirements: Make this with vue.js and I was given an api with some data like car mileage, seats,
Role: Frontend engineer
Industry: Vernacular Platform for content writers
Status: Could not complete on time and hence was not selected.
4. Make a clone of trello and it should have cards draggable feature
Type: On site
Requirements: I can use any javascript framework, any css framework. This was a competitive interview with 4 other candidates and we were given 1 hour 30 mins to complete it.
Role: Javascript Developer
Industry: Real Estate property Listing Platform
Status: Rejected, because another developer made the clone flawlessly and my submission looked like a kid in front of it
5. Make an admin dashboard
Type: On Site
Requirements: Whatever javscript framework I can use, but they mentioned brownie points if I use react (which I didn't). An use case of Employee details platform was given. They were expecting a dashboard with data filtering and sorting and I had to decide how to visualise the data and show it in the dashboard
Role: Frontend Engineer
Industry: An HR management SaaS Portal.
Status: Rejected (Assignment was completed as requested), when asked for reason they said I did not make it scalable and my project structure was not good enough and I did not document the code properly (I think I didnt name the variables properly).
6. Make a Tic Tac Toe game
Type: On Site
Requirements: I was given as much time I want, I can use any framework and I had to make the game responsive (should look on phones too)
Role: Growth Engineer
Industry: Gaming App.
Status: Selected. I worked there as a consultant for some time.
7. Make a e-commerce platform with Vue.js
Type: Weekend Project
Requirements: A mock api was given and I had to showcase these products. They wanted animations involved in it and I was supposed to use Vue.js and Any CSS framework I am comfortable with.
Role: Frontend Engineer.
Industry: An agency which builds only e-commerce sites.
Status: Rejected, because I could not crack their technical round.
7. Make a Data Visualisation portal of Sachin Tendulkar's sports career
Type: Weekend Project
Requirements: Sachin Tendulkar is probably the best cricket player of all time and I was given a csv file to showcase the data in using Tailwind CSS and Nuxt js, the project came out very well -
Demo - https://sachintendulkar.netlify.app/stats & here is the source code.
Role: Senior Frontend Engineer.
Industry: A SaaS company which specialises in Data Visualization.
Status: Rejected, reason not mentioned.
8. Make a text analyser from a text file.
Type: Weekend Project
Requirements: Make an api with Node which accepts a text file and I was supposed to return the most repeated words in it. A huge text file (around 7 mb) was given to me as an example. Here is the code if anywants to know how I built it https://github.com/fayazara/text-analyser
Role: Full stack engineer.
Industry: A service which makes AI bots for enterprise companies.
Status: Selected.
The assignments 7 & 8 (data visualization and text analyser) were probably the most difficult to make for me personally and I completed and I am proud that I was able to complete them.
There were some other assignments as well which I think were not worth mentioning, let me know in the comments if you want those as well.
I hope beginners & people who are looking for a job will benefit from this and feel free to share some of the assignments you were given while interviewing.
Top comments (74)
The thing that is annoying about this is that it is so much value that is wasted into an app that no one will use.
I'm currently hiring for a team (not front end).
Why do you think the time is wasted? Why do you think no-one will use the application? How else is a hiring manager supposed to judge your skill (apart from resume & your word)?
As a point of reference, I give juniors two technical questions during a Skype call. One is "fix the bugs" (spoiler, there's a missing semi-colon) and the other is "fix the bugs & optimise the solution."
That last question is a little evil really, because it's deliberately designed so that it's impossible. Test #1 proves you know the language, Test #2 tells me what you do when you don't understand how to improve something.
My senior test, is a list of maybe 7 requirements, and they're given a week before interview. People already employed that have tried the test can do it in a little over an hour & give a passable solution. Some candidates I've talked to have taken around a day (7 hours), mostly because of the "showing off" during an interview factor.
Glad to see the hiring process moving away from writing algorithms about prime numbers or fibonacci series (using a terrible online IDE).
Thanks. I changed it because I also hate those online IDEs.
Though I'll hold my hand up, the junior test still talks about perfect primes. But that's in test #2.
(EDIT: This goes mostly for over the weekend homework type tasks described in the article, not the smaller things you described in your comments that happen during an interview.)
By not being a complete dick and compensating the possible future employee for their work?
How about just having someone work for a day or two? They get paid, you get some extra help around and, if you end up hiring them, the'll already have those days of experience in the new environment and will be as productive on day 1 as they would otherwise have been on day 3. Everybody wins.
And even if you're not going to pay for that short time, at least it's a two-way thing and the applicant also gets a better impression of the company, so they still benefit more than with the one-sided interrogation mirror of a weekend homework.
Conclusion: Stop treating software engineers like schoolkids.
Lets keep this both civil, and to the point shall we.
All applicants have to send their resume. From there, I make a decision about seniority.
Applicants for a Junior position on my team get ONE Skype call (set at an hour, but we can be a little flexible). During that call, we cover everything, including a two question technical test. After said call, we make a decision and either hire them or reject them.
Applicants for a Senior position on my team have a take-home test to do. A passable solution can be done in an hour and change. We allow a week for the turn around time, and it's a simple "Create a CRUD application that has 3 entities, use your own judgement for test coverage and documentation." After that, they get an interview, and in some cases, that is set at 4 hours.
Neither of those are "work" and neither of them are paid. Nor will they ever be.
So, kindly explain (and I've censored for you) how you think I'm being a d*ck? The compensation is the feedback I give (I've lost count of the times that Senior applicants have replied to the feedback with "thanks, I've learnt some things I can take with me").
Re "just having them work for a day or two" - lets skip the domain specifics, having someone new in the office means onboarding them. It means other people on the team have to invest time & energy into that candidate, and as a result, they're not working on the projects we get paid for. If we're talking about a junior candidate, I wouldn't expect them to be productive for at least a week. If we're having them work in the office, it means the desk, the laptop, the network all need to be setup in advance, for someone we may not hire.
Now lets factor in the legalities... lets say I've hired you. I have a fresh laptop sitting on your desk, fully setup with relevant permissions on the network, and I've even installed your favourite IDE into your user profile. You cannot access the building without signing security paperwork, and you cannot (legally) access the floor where your laptop is until you've signed even more paperwork. Allowing time for you to read that paperwork before signing, it's after lunch time on your first day before you even get to touch your laptop.
Lastly, considering my approach is always "I put in twice the amount of time that a candidate does" (to the extent that ~400 lines of code can warrant 2 pages of feedback)... I'd love to hear why this is a "one sided interrogation"
I completely understand that other employers might not act the way I do, but lets not tar everyone with the same brush, shall we? (My style is actually modelled on an interview I went through as a candidate, where I had a 45min chat, some whiteboard drawing, and a 50min paired programming exercise)
I should probably have made it clearer that I was talking mainly about cases as described in the post, which is what the top-level comment was talking about, which you replied to.
There's nothing wrong per se with having a job applicant solve some sort of challenge interactively, but I see a clear line being crossed when people are asked to build whole applications that may take them an entire afternoon.
You're not directly profiting from those tasks, but you're still telling the applicant to do them so one way or another they deserve to be compensated for it (ideally by gaining an equal amount of insight into the company).
You say you give them very detailed feedback on their projects, which does sound reasonable, but how common is that? And do you always give this feedback? Even if you already decided to not hire the person?
Re Re "just having them work for a day or two": What you describe sounds awfully restrictive. I will assume you work in a field where such an emphasis on secrecy is warranted, but for most cases so much paperwork just to give someone a computer to work on some simple task seems overkill.
My newest coworker just came here for one day, got my desk as I happened to not be working that day and got to work on some simple tasks. He spent an entire 8-hour work day here, and the company spent an entire 8-hour work day on him. That sounds fair, no? Sure, he wasn't being very productive, but again, on his first day, he was already one day ahead.
What does that feedback tell the applicant about the company? Do they get to know their coworkers? do they get an impression of real code as it is used in the company? Does it tell them anything about the work ethic? Does it show off a common workflow at the company?
Surely your feedback is valuable to the applicant, but it probably doesn't give them the same sort of insight than you get.
Overall what you've detailed sounds very reasonable. Roughly an hour is about the upper limit of what seems acceptable for homework, but here are two thoughts on that:
Are you sure most people don't spend way more than an hour on the task? I imagine most people would spend at least a few hours to make sure it's spotless.
Aside from direct feedback, do you also offer the applicant an insight into the company? A while ago someone (might have been here on dev) mentioned that in interviews they always ask to see one one example of good code and one of bad code written at the company, which seems like a very fair deal considering the applicant has to provide a code sample as well.
Thanks for the reply, taking your points in order:
Insight into the company is both tricky (for reasons I'll shed more light on in a moment) and of limited value to a candidate - especially if that candidate gets rejected during the hiring process. Granted, giving them exposure could improve our word of mouth, but we use recruiters for the PR type issues around recruitment.
So instead, I treat candidates with a "you're trading your time for my knowledge of the tech stack, if I can give you more knowledge about the stack, you can freely use that in your future, whomever that might benefit." Of course, I could meet a candidate that already knows more than I do about the tech stack... though unless they fail the "personality" side of the job, they'd be hired without having to worry about salary negotiations (we'd probably offer them higher than they came in the door requesting).
Always? Yes. Especially if it's a rejection. I know what it's like to be a candidate & get no feedback other than "thanks, but no." Even for hires that we make, I've not only given them the feedback verbally during the interview process, but they then have access to the git repository where I store it (everyone has to attempt the same requirements, so I treat them as Merge Requests, and comment on them before the interview).
If I'm expecting to interview a Senior candidate for 4 hours, I've already put in around 6 hours dedicated to that one interview, between discussions with HR, my management, the team, reviewing the Resume & making notes on it, reviewing the take home test, etc etc. After an interview, I still probably have 2 hours of work to do around that one candidate. All of this is the same if I'm hiring them or rejecting them. In fact, it's more if I'm rejecting them because I then write up my notes to pass back to the candidate via the recruiter.
Valid assumption - because of the work involved, there's legal restrictions around who can go where/when, and unless the paperwork is signed, I can't simply grant access to our code repositories. Oh how I wish...
As for demonstrating work ethic etc, candidates have two choices... either they can accept what I'm telling them, or I can hook them up with an OTR video call with someone else on the team (they all know the rules around what's a legal minefield to talk about... and things like how we run Agile or what the PMO folks are like to talk to is all perfectly fine to talk openly about). Of course, such OTR conversation adds more time that the candidate is spending on the application.
I agree, though since we ask for it in a git repository (so I can see what commit strategy you default to, and I can see if you copy/pasta'd a solution or if you actually worked on it)... I know most candidates spend longer than an hour on it. I want to say that the average is "about a day" - and in most cases, during the interview, I'll be telling them how they could have written the same functional code, in less typing to save time. Unfortunately there's little I can do to control for that, but I do tell recruiters to "expect it to take an hour or so, but if they're sinking a whole weekend into it, that's a red flag, and they're free to get in touch to ask questions to clarify at any point."
If a candidate worked on it for an hour or two, and submitted a partially complete application, didn't fulfil the requirements etc... I'd still take the time to read what they wrote & make an informed decision about the next steps. If you were to write good code, but slowly, I'd still want to talk to you (maybe there's some personal reason like your new born baby that kept screaming in your ear). Half a submission still lets me see what I'm looking for, so it's always better than no submission at all.
I've honestly never been asked that... though if someone did, say, ahead of the take-home test for a Senior position... I have enough examples of good/bad that we could demo both sides of everything Uncle Bob talks about, for example. Despite our legal obligations, it wouldn't be hard to find some method to demonstrate that doesn't expose more information than needed, and worst case, I might have to lightly refactor some things for the purpose of sharing.
And this one is out of order on purpose:
I completely get your point, and one candidate I talked to recently felt the same way. Their response to the test was "I already have my own CRUD application using the same tech stack, hosted publicly on GitHub" - so they skipped the test & I reviewed the work they'd already done.
Some industries, yes, having someone sit at a desk, talk to the team, get paid and get given free coffee etc all day is do-able. Unfortunately, I still work in a "dino industry" (it was only in recent months that the development team were allowed to see logs from the Production system, owing largely to the InfoSec policy).
hey boomer, chill out.
Now, see, you have me interested... your profile says you're looking for work (amongst other things). Yet you openly reply to someone that says they're hiring, with a comment like that? Why?
(I would have hit the "report abuse" button, but lets be honest, I'm perfectly chilled & your comment isn't enough to constitute "abuse" in my eyes).
Well, it's not really abuse. Just low-quality, tasteless and unconstructive.
That'd be why I didn't report it as abuse.
In my opinion, the problem here is an old one: the golden hammer approach. In this case, applied to recruitment and hiring.
Technical assignments can be a valuable measure of competence. These might even be welcomed by a candidate when there is no combination of previous projects to show, references that vouch for skills, and a clear experience record. In this situation, both the employer and candidate have an even field to assess and demonstrate applied knowledge, respectively.
However, I too believe their value is overrated in many situations, especially when a good personal interview and a careful review of previous experience in the field should be sufficient.
This opinion comes from someone who has never been X years in a single industry. For me, assignments have been and still are useful. For many other folks around here, probably not so much.
What app?
I mean these projects, it's all "wasted" labor
Dude, if you had a company and you were hiring, how would you evaluate their work?
Their previous body of work + a pair programming session. These projects are just a waste of time for everyone involved.
EDIT: What I said above isn't necessarily true. If you learned something from the assignments or they're things that you can anonymize and add to your portfolio, then obviously it wasn't a waste for you.
I personally have no issues with these assignment, I find them interesting and I find so many use cases and solutions to them.
Maybe when you have like >10 years of experience, these projects dont make sense.
Do you think that at some level of experience you will refuse home assignments?
I am 22 years in the industry and I feel that after some point giving a 48 hours home assignment is disrespectful for your personal time (work-life balance), especially if you are working full time at another place.
I think they might not be necessary when you reach a certain level of experience, but the employers have no other way of evaluating interested candidates work other than giving them a task which they think the interviewees should be aware of, so I guess it's fair.
Whether it’s a fair examination of the candidate or not, it’s a significant amount of work. And some of these seem like the company just wanted some free coding done.
Free coding done for what? These are just make believe scenarios, I don't they wanted some "free code".
I have a few issues with companies handling interviews like some of these were. So much that I honestly would had told them that I don't see myself as a good fit, thanks for the opportunity, and walked away.
Example: you had 1 hour and 30 minutes to make Trello against 4 people. Unless you are interviewing to be a competitive programmer, that proves nothing. Interviews are already hard enough, turning it into a full on competition is what should not happen.
How does the person making a really good Trello clone in that time limit mean that they a good fit for the company? Did they work well with others? Do you see them working well with the current team members? There are so many questions that a competition does not answer. It is not the type of work that they will be doing for the company. And if making something in 1 hour and 30 minutes is the type of work that is happening at the company, be glad you were rejected.
I'm fine with technical assessments/problems. Though when I interview people I am not looking for the right answer. I'm looking more for how you think. What was the process like for you to solve it? I want the people I interview to work with me to solve it. To talk to me and for us to have a conversation. I learn so much more about how they work from that, than some timed competition that they must do perfectly.
It's up to the employer on what they decide for the interview and how they eant it to be done, and if you want the job you do what they ask you.
Then I guess I won't work there. There are a ton of very good companies that don't believe in competitive programming as a way to interview.
Just to clarify, I have no problem with technical assessments/challenges as interview questions. My issue is with competitive type programming and judging someone purely based on solving them correctly.
I will work where I am a member of the team. When you are interviewing for a company you should also be interviewing them and have just as many questions for them. See if you find yourself fitting in there. If I don't see that then I won't take the job.
I have personally turned down some interviews to go further because I can tell it's not a place I can see myself happy at.
I understand and I just think it's fair for the company to have the interview their way, it's up to us at the end.
Chad is not talking about whatever is fair for the company, he's talking about better ways to approach job candidates on which I completely agree.
I can assure you I'm not the best full stack developer, but beyond my decent skills, I would say my personality has opened many doors at workplaces than my skills, to the point that managers don't want to let me go, offer salary increases, and even give me side jobs after leaving the company. All that occurs because I am a team player, provide great customer service, are positive on any situation (issues) 99% of the time, have a sense of humor, doesn't get easily offended, are reliable, etc. Most of those personality traits are difficult to show when asked to code something too difficult.
A few thoughts, from someone who has been on both sides of the interview numerous times:
Furthermore, terminology quiz interviews are crap. I've seen great devs bomb (and I've bombed plenty as a candidate even when I knew all the answers, because my mind was on actual problems I was solving at my current job), and was overruled when I said they were likely the best candidate anyway. Homie don't play dat anymore.
My first round is always conversational. The more experienced the candidate is, the more it's about trading war stories. Either way, we're talking about the tech they've been working with and how it might apply to what I'm looking to hire them for (they might have a solution I never even considered), and letting them ask plenty of questions and make suggestions for what I've already got in place. This is a phone call, so they don't have to stress with a commute to an interview (I work remotely anyway, and so will they) or worry about the feeling of being in a fishbowl during a Zoom interview.
Why? Because it's a lot easier for me to detect BS if they're at ease, and conversely it gives them a chance to make their best case on their terms.
I guess most of these companies are startup’s in “growth phase” and they care lot more about shipping out code fast, rather than making it good. They probably don’t see any value in an Engineer thinking deeply about code structure and shipping something out over 2 days, compared to someone who gets the job done in 2 hours.
I recently saw a series of videos by DHH on how he thinks about his OO code. He goes into a detailed analysis about how a variable should be named, where it should be placed, should he use a constant, should he make it private, where should the constant be in relation to the method that uses it etc... I guess DHH would find it pretty hard to get a job in Bangalore.
Yes, I believe you are right, most of these companies are in their "growth phase" & I am sure DHH will bash the companies for having this kind of interview process but I guess it is up to these companies on how they want to hire their employees.
Well obviously. It's a free country. So of course they have a right to hire the way they want to.
People getting furious for some reason that "I" jad to write these assignments 😂.
Wow. Exactly what I feel about hiring process especially here in India.
I Wish, I see an interviewer like you soon. ❤️
Hmm something I haven't seen in the comments is what happens when you refuse to do the assignments for time constraint or life stuff. Is it possible to work out a smaller assignment or have them adjust it in any way? Interviews should be as transparent as the people you work with I think? Whats the worst that can happen if you don't do exactly what they are asking Interviews are two sided right?
Thanks fort the list dude!
PS, I have rejected assignments, during my last job hunt, I was told to build a Google Keep clone with Next.js, I said I dont have enough knowledge on react to work with, they were generous enough to offer me 7 days to complete it, but I had to reject because I was not comfortable enough to work on react.
The employer appreciated it and said he'll be looking for othet candidates
Ah ok cool - ya good to know. I mean the fact you have so many assignemnts means you had lots of interviews. no shortage of work in the end right? Good job guy!
A lot of people said these projects are a waste of time and resources & that the companies were just getting some free code written for them.
I would strongly disagree, I have learned a lot from them and I have used them in a lot of projects as a freelancer.
Fair enough. People gonna hate. No idea why people get so mad about these trivial things. You do you. Devs in general get a lot of choice. Choice many people will never obtain.
Keep posting dude!
Actually, I would say that fitting in at the company can make you better.
For a few reasons:
1: if you are not happy working there, chances are your productivity will go down at some point. You will just have the mindset of just getting the job down and that's in. It'll effect your work and productivity.
2: if you fit in and are happy, chances are you enjoy who you are working with. Which means you'll probably learn from each other.
I've been in the situation before of being unhappy, and not enjoying it. It very much made me worse at my job.
It is mostly not agreeing with how the company does things. From everything being a huge push/deadline or just feeling like you have no say and that you aren't a team member.
I have found that companies that usually do crazy coding completions or put you in a boxed time limit to complete a technical assessment usually end up running their company that way, and it kills employee morale.
I just believe you should be looking for a company where you are a team member, not just an employee. And their is a big difference between the two
I have mixed feelings on these assignments.
On one hand, the demand for competent software engineers is growing and growing, to the point that a bachelors degree or other qualification is often given "nice but not essential" status on position descriptions. Employers like some way to verify a candidate they like knows what they are doing, to a reasonable degree. I get that.
The issue is often time frame. Sure, if I am really keen on a job I'll put in the effort. I'll take time out to go to interviews, do phone screens and the like. But the time it takes to complete these assignments feels could be a lot, even for skilled developers.
You're handed a full-stack web application assignment on Friday afternoon to do over the weekend? What if you have a family that you'd rather spend time with and you've been working all week? How about just experiencing the outdoors? Seeing a movie? Maybe you're working through an actual bachelors degree part-time.
To reasonably expect a candidate to complete these assignments, along with possibly continuing to work their current job, I would honestly say they'd need a few weeks. A weekend timeframe might simply filter out candidates who are not workaholics who willingly neglect other aspects of their lives in order to spend the majority of their out-of-work time building applications.
I enjoy building my own applications as much as anyone. I like the feeling of building something out of nothing. But a weekend to build an API-driven responsive web app with POST requests? For a junior position? Sure, it can be done in that time, but I'd rather spend my 48 hours of non-work time at the beach or something.
A whole separate issue is when companies use these assignments to farm candidates for unpaid development work, with no intention of actually hiring.
I'd be sceptical of any company which is not OK with these assignments becoming open-source projects on the candidates own GitHub.
This was a great read, thanks for sharing! I've always been interested in interviewing with a company that provides the challenge of building projects like these. I've only experienced LeetCode / HackerRank type questions at interviews, which I'm not really a big fan of to be honest.
My point is, are knowing DP and binary tree manipulation important? Of course, they have many applications. But I would receive questions about these topics in interviews for webdev positions and never use my knowledge of them even once in the job. I would think that companies would be more interested in learning about my skills related to the actual job rather than how many different ways I know to determine if a string is a palindrome.
That being said, I'm still in university and have only applied for internship positions. I'm also in the US, not India. Maybe these types of project based interviews are more common for full time positions / in India? I'd be happy to hear what insights other people have on this.
Hi Fayaz, thanks for sharing this post 😄, i just got my very first assignment 4 days ago and time limit to complete the task was 48 hrs. i did it within 24hr and submitted the answer on github repo, i haven't got any response yet so far 😥 and as per repo's traffic statically says there were atleast 3 unique viewers. does this mean they ghosted me or somewhat?
It's common for employers to collect resumes and coding assignments from a bunch of candidates and then review them all at once. Maybe it's busy and they won't start reviewing them until next week. Don't give up hope yet. 🙂
Give it some time, if they twke more time than expected, contact and ask for an update.
Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more