I applied for an entry level software engineer position, and before even getting an interview with a company, they asked me to complete what I'd consider to be a rather significant coding project. I am given two days to build an application stack using SQL database, node.js, REST APIs, front end UI with react.js. I'm certain it's doable in time frame, but to me it seems like this is overkill. No other interviews I've had included a coding challenge of this size. Is this a common practice before even talking with someone at the company?
Whether they call it "a test" or whether it's getting you to do some production work, I think what's being missed is (given the amount of time involved here),
They don't think your time is worth anything.
It's one thing to do a test, but to do something that takes 2 days deserves compensation. Period.
Think about it this way:
If this is how much they value your time now, what makes you think they'll value you later?
We train people as to how we are willing to be treated, with every action we take and every reaction. How is doing a 2 day project for free telling them you're willing to be treated?
This isn't a two day task - you've been given two days to complete the task - that's a big difference in the size of this exercise....
If it genuinely appears to demonstrate your full-stack abilities and it's a good job opportunity, then I'd go for it.
If it just seems as though you're doing work for them for free, then I'd think twice.
This really depends on who the job is for and the role you're going for.
They might be trying to get you to do some work for free, without having any intention of calling you in for an interview. Or they may have so many talented applicants that they only want the very best.
I'd be a little bit cautious in this instance because of the minimal contact that you've had with them. I would typically expect this to be a "step 2" kind of thing, after an interview. But ask yourself how the market for developers is in your area (is it a software hub where lots of devs come for work?).
Generally speaking I would consider a coding test for an entry level position overkill. You're new at the whole development thing, and by definition have lots to learn. So what do they expect to see in the code of a novice whom they should have the expectation of having to train?
You will now have to decide whether this is worth your time. This is something that many people don't seem to remember when looking for a job - you don't have to put in all that time and effort! It's entirely your choice whether you want to sacrifice those 2 days for a shot at an interview. After all, no one is paying you for that effort! This could very well be interpreted as a lack of respect for your time.
If you're getting other interviews, you may wish to tell them "thanks but no thanks", and focus on other opportunities. Or you could contact them and request more information about the company and their policies before you engage in this exercise (I'd do this at a minimum). After all, if they're not willing to put some time in for you, why would you put two days in for them?
If, however, this looks like it might be the job of your dreams, do your best on that test.
The more I think about it, the more I think that this sort of request for a junior position is a total scam. Full stack app, and two days of work for an entry level position? Unless this is Google or Amazon, or it pays insanely well, it's not worth it IMO.
Let's not talk about 2 days, because nobody really will work 48 hours straight on it.
Let's assume you're unemployed, you got time, and you sink 4 hours per day into it. 8 hours of work.
Did they give you any specifications? If not, a smart programmer will be spending that 8 hours hammering out the specs. Not a single line of code will be written after 2 days.
If they push back and say "Well, I wanted to test your coding skills." You then reply "Planning IS a coding skill. A very important one at that!"
Let's also try on the interviewer's perspective.
You just got dumped a bunch of people's code they wrote over 2 days. Let's assume it is a light day. You get 20 applicants.
What the hell? How are you going to review this kind of code? Run it and see if it works? My god, it has a DB! It's a full stack application! It's not compiled! What if it opens a freaking backdoor to your corporate network? WTF? How are you gonna test it?
You don't. You just randomly pick a handful of guys and interview them.
Extremely unrealistic scenario. If this is pre-interview, they'll be getting massive amount of code. It's probably analyzed based on some sort of stats like LOC or something equally useless.
I would go for plan A and hope it is a trick question. If not, then spend some time doing it and, if you get interviewed, ask them how much of your code did they read. Ask them how they secured the testing environment and not have viruses infect their network.