21

I am interviewing for a "Full-Stack Developer" position at a start-up. I have cleared on phone interview and one onsite interview where I was asked technical questions. After the onsite interview, the interviewer told me that I would get an assignment which I will have to complete in 2 days.

When the assignment came, it surprised me as what they are asking me to do is almost like to add a full new feature set to their existing tool. I am mentioning the requirements below:

Solution must use the most recent version of Laravel framework, MySQL
and any other open source libraries/frameworks as required.

• Customers should be able to easily create, update and delete new
  documents within a password protected control panel.

• Documents can be either published or private. Private documents exist in the
  database but cannot be viewed publically.

• Customers should be able to customize document title, summary, body copy
  and add image or video assets.

• Users should be able to sign document by filling out a form consisting of
 name, email address and phone number.

• When users sign a document they should be presented with a customizable
 thank you message and receive a customizable thank you email from the customer.

• Customer should be able to view all users who have signed documents
  within a password protected control panel.

OPTIONAL Enhancements

• Reporting/Analytics
• User management
• Custom document fields
• Send users SMS thank you message upon signing documents

Isn't this too extensive to be a part of the interview? I am also curious that who has the rights on the code that I write. What if I do all this in 2 days and submit the code, they don't offer me a job and just end up using all the functionality that I created? Has anyone been in this situation before?

Any help from the seniors would be appreciated!

10
  • 6
    The biggest red flag for me is the 2 days. I mean, it might be possible in that time-frame but only if you're currently unemployed and have no other commitments. You could take steps to not hand over any source code easily.
    – Joe
    Feb 18, 2017 at 1:04
  • 7
    Run, it is a known scam to not pay contractors. Feb 18, 2017 at 7:24
  • 9
    I'm not sure if is a scam, because despite the scope, this seems like a very generic system. However, 2 days seems very wrong - both in terms of your expected investment to get past this stage of the interview, and the scope. Even if you are basically just glueing common frameworks together, 2 days seems very ambitious. It feels like scam purely by being a gullibility filter - if you are willing to do that much work for free, then perhaps you'll put up with other exploitative work practices later on Feb 18, 2017 at 8:26
  • 2
    @NeilSlater back here, scams like those for small works especially in the marketing design/web site area are common place for getting small projects done for free, and in the part of the world the OP is coming from it is worst. "2 days" is too long a time for an exercise. As other comments say, they may be asking for a week of work, either knowingly or not. I would tell them to get lost and find another sucker. Besides that, even if it were true, life is to short to work with idiots Feb 18, 2017 at 9:30
  • 4
    The key to me is add a full new feature set to their existing tool. Sure seems like getting work for free to me. A test for skills work be more specific and stand alone.
    – paparazzo
    Feb 18, 2017 at 13:58

7 Answers 7

15

I'd be very wary of anyone asking for something this extensive as an interview exercise, and would most likely pass over any "opportunity" with these people.

That said - you could code it up, whack it on a free tier on AWS and demonstrate it. You can present the code design and database from your own laptop. Just don't hand over any source code without payment.

1
  • 9
    absolutely no source code without payment.
    – Raychenon
    Dec 15, 2020 at 20:39
11

I don't find this is unreasonably at all - I believe they're merely testing your skills and knowledge with the Laravel framework - because it allows you to create these big web applications with almost no effort with the built-in artisan tool.

Keep in mind that Laravel was created with the intention of simplifying common web-development siturations, such as

  • Authentication
  • Creating/Updating/Deleting data
  • Session handling
  • Database connection and querying
  • Forms
  • Requests and Respones

An example is the command php artisan make auth which sets up full front-end and backend authentication.

2
  • 5
    As someone not familiar with Laravel, are you saying that the task the OP was requested to perform might actually only take a few hours - if they are sufficiently skilled in the required technology? If this is so, then this would indicate the test is actually trying to separate out people who don't know the technology and thus think it's a complicated request (made to sound like a big complicate app, yet may take only a few lines of code to auto-generate). That would certainly be an interesting twist!
    – BrianH
    Feb 20, 2017 at 21:14
  • 3
    @BrianDHall Laravels version of authentication (the one you get by typing make auth) would take me at least 4-5 hours coding manually in plain PHP. Many other commands like this is available, so I think you're right - it is simply a test of Laravel knowledge.
    – Daniel
    Feb 21, 2017 at 7:27
6

Isn't this too extensive to be a part of the interview?

Not necessarily if part of the test here is to see how far you go. Sometimes these types of tests are given to see how much will get done that may be something to discuss in the interview. If you spend 40+ hours of the 2 days working on it so that it is mostly done that may show up in some pieces as a red flag of going too far in getting all the desired pieces done. At the same time, how do you handle that you can't meet all the requirements and document what didn't get done?

I am also curious that who has the rights on the code that I write. What if I do all this in 2 days and submit the code, they don't offer me a job and just end up using all the functionality that I created?

While it is possible for them to use it, consider how basic this system would be that while you may create a base, someone else would have to maintain it, check styles and do a lot of other work potentially to get it into production depending on what else this would be used to complete.

Has anyone been in this situation before?

A few times. Sometimes this is a test to see how far will you get. It is also a test to see what kind of coding standards and other things do you do that may also be discussed in the interview of your code that you submit as chances are this can discussed and various other questions can be answered well there. Not always the best indicator in an interview as this can be taken in a few different ways by some.


To elaborate a bit more on the "how far" portion above. The company may have an unspoken expectation of believing that the applicant will put 5 hours of work into the task and getting only some of it done. Now, how is the remaining pieces documented? How were certain pieces done first? This is part of like asking for someone to write a 1,500 page essay in 2 days that is quite unreasonable but one could get an outline and have a partial completion that could be taken into the next stage of an interview. I have had some cases where I got the job where I was given this information after being hired and it did make sense to me as a "Kobayashi Maru" challenge and other times where my partial solution was discussed in the interview.

Getting it all done is a red flag as it may well suggest there wouldn't be a great fit in the company. The optimum reply is to get some of the work done, include tests and document what would be the next steps along with how long it would take the finish the pieces left. If I told to assemble a car from scratch in 1 hour, chances are if you got it done that I would have questions about how you did that rather than think, "Excellent."

4
  • I don't fully understand how this can test how far one can get, given that this job isn't a full-time investment. 2 days to work on it may actually only be a few hours if we're doing a release at my full-time job (the one that's actually paying me for my time)... however, if it's a weekend, it could be up to 32 hours. Feb 19, 2017 at 5:45
  • How is getting it done a red flag? What should you do instead, what's the optimum reply?
    – ChrisW
    Feb 19, 2017 at 6:25
  • 3
    @JB King, Your answer proves that you can be technically proficient, yet profoundly clueless when it comes to reality. Do you think you can apply game theory to everything in life and that everyone has benign intentions?
    – ATL_DEV
    Mar 12, 2019 at 21:37
  • Watch out for this tricky questions. It's not the right way to engage with a future employer. Dec 16, 2020 at 1:11
5

I think most people have been in this situation before. I have too, with same deadline and but with less work. Of course I told them there's no way I can finish that up in 2 days since I'm not unemployed, in which they decide to make it into 1 week. I manage to finish it, they offer me a job, I manage to find better offer so I turn down the offer. If I can go back in time would I change my answer to: can I do other test?, or to simply turn down the offer because the task is just too big for interview task? I probably will.

This test usually to see how much you want a job, so it is your choice will you do overnight just to score this one interview?

0

IMHO,its all depends on how much do you want this job.

There are lots of red flags on it.

But if you do, make a prototype according to requirements with "Placeholder {name} instead of actual data.

Do not send any code in, instead deploy it on a test server.

It can be your local machine, Azure VM that will spin only for the demo of functionality you implemented or a web server in free hosting under your account

2
  • Might as well just ask my friend to do it then.
    – Jack
    Dec 16, 2020 at 12:06
  • @Jack What in original scenario stops OP from doing what you suggested?
    – Strader
    Dec 16, 2020 at 15:02
0

After reading Daniel's answer (which I didn't know about, I would have posted something like "BIG RED FLAG DO NOT ENGAGE" under normal circumstances), this doesn't seem like an enormous ask; if you are familiar with Laravel then you can try to do it.

That said, the insistence on using MySQL is fishy to me. Unless there is some special thing between Laravel and MySQL, MySQL tends not to be used in many companies because it's pretty much the worst distro of SQL and most developers hate it and most companies like to make their developers happy by using distros of SQL that aren't MySQL (this is my understanding from talking to people who work with DBs a lot, I'm not super familiar personally). The insistence on using specifically MySQL rather than "SQL distro of your choice" makes me think that there might be something nefarious going on. SQL as a language is pretty agnostic; basic SQL commands are standardized and should work on any SQL DB, so there is really no reason to specify MySQL, and the fact that they did rings a few alarm bells. Not many, but a few.

Now, I would commit the least amount of effort possible to this: Run the basic Laravel commands to set up the things they asked you to set up, and do the least amount of customization work possible on top of that to get it functioning as asked and no more. This will do a few things:

  1. You will complete the assignment as asked. If in fact this is just an interview assignment, then it should be enough to get you passed.

  2. You will not contribute a lot of code if in fact they are planning to steal their work. If your contribution is running a couple terminal commands and then adding like 50 lines of code on top of that, and they steal it, then fine whatever, you took a gamble that this company was legit and they weren't, so you didn't lose much.

  3. You will spend not a lot of time on this assignment. You definitely don't want to spend like 40 hours over 2 days completing an assignment for an interview; there's no guarantee that you will even pass the interview and you don't want to waste your time for nothing. Spending like 3-4 hours on some small customizations or whatever is "reasonable".

There are some red flags here, but not enough that it's worth writing the company off entirely and not even trying. There are enough, though, that you shouldn't feel entirely comfortable that the company is legit and you should prepare yourself accordingly.

2
  • 1
    MySQL as opposed to what? It's a standard technology stack with php and Linux. SQL server costs money. That other one no one uses at all.
    – Jack
    Dec 16, 2020 at 12:05
  • MySQL as opposed to "pick your favourite brand of SQL, we don't care".
    – Ertai87
    Dec 16, 2020 at 15:34
0

I am not a PHP person but different tech stacks. I read Lavarel has CRUD commands that can build this project under few minutes.

At the risk of getting downvoted, I developed a sixth sense how to spot a SCAM. The higher time investment asked, the more likely this company doesn't hire at all. Did they send you a template? Or do you start from scratch?

Any projects asking full features application before meeting team members is a red flag 🚩.

They were some instances where I really wanted this job. I sent the code with production quality level, full tests and praises from the reviewers. It solved a certain business issue. I will never know if they used my code in production. Only to learn the headcount has changed. The HR knew this before I sent.

I even sent one project that was not reviewed to another company, I received a template email "Thank you your time, not hired". The worst lie ever is that I know my code was not reviewed at all. The readme.html and project contained analytics.

Signs of red flag 🚩

Excessive time 🚩

Can the authors complete under half time constraint?

The major advantage of these coding challenge is not time invested upfront by the company. However the candidate started the project from scratch with the defined tech stack. The more freedom a project has, the more time it will take to review. At your work, a proper pull request of 500+ lines takes you how much time on a familiar code base? Now compare with a complete project to review. A 1h interview is better time invested for both sides.

So this is not even scalable for interviewers.

No reply 🚩

They let 2 days to complete. Ask them questions if they don't receive any answers within this time limit, they don't respect you. Imagine how much time, it will take to review your project.

Super good, can you improve? 🚩

I got full praise by the reviewer who has for more features. At this point, I stopped and I said I invested 8h for free. This company is still hiring for this position after 8 months.

How to answer?

Send an invoice. Ask to be paid for at least one day of work. If they cannot pay you one day, they likely cannot afford you for a year.

A candidate placement costs around 3 months of salary. Assume 100 candidates applied and get paid. It is still cheaper financially than using an external recruiter.

Companies lose out to skilled candidates who will go for more direct interviews.

Becoming standard during Covid

I see this coding challenge step more and more in the interview. Many companies ( ranging from 8 digits to billion USD annual revenue) use these challenges to filter companies who are willing (and docile). I saw a surge of developer job openings from tourism/travel industry related companies. Do you think there is a larger demand for tourism during COVID? It costs next to nothing to advertise for jobs. Lot of job openings has a positive image to investors.

My advice:

Don't waste your time. Engineers, you are in demand. Go where you are best treated.

I wrote a blog https://blog.raychenon.com/companies-that-give-take-home-tests-before-interview-review-your-hiring-funnel/

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .