loading...
Cover image for Are You a Mediocre Developer? ME TOO

Are You a Mediocre Developer? ME TOO

yaser profile image Yaser Al-Najjar ・2 min read

Story Time

Recently, I applied for a job...

I was asked to do this test task:

task-pic

Quite simple, I did it with some extra bonuses, like using Vue.js and deploying onto Heroku. Here is the repo url: Debtor Administrator

What I got in response was:

tl-dr

  • If you would like to hear the full story, I've written it into the comments.

Setting The Bar

high-bar
Original pic: https://timcoffeyart.wordpress.com/2011/10/26/setting-the-bar-high/

Don't get me wrong, I'm not saying they should've hired me...

I'm just saying their bar seems non-realistic!

Recently, many companies are just setting the bar too high.

You realize this when they start inventing stuff like:

  1. 10x Engineer.
  2. Full Stack DevOps Developer (I'm not kidding!).
  3. Passionate engineers (who work overtime and learn on their free-time). ... etc

Like, SERIOUSLY?!

Good vs Great

There is a fine line between good and great, the best way to describe it is how Steph explained it in her awesome post:

Perhaps “great’, is just “good”, but repeatable.

Hmm, how many people are "good"? and how many people are "great"?

The reality of how good most people are is just in this curve:

good-curve

  • This is called the "normal distribution" in statistics which you might not even care about 😄

You see right there, the percentage of people who are great and bad is just super small.

The odds are, mostly me and you fall among the GOOD developers.

So, instead of chasing that dream of being a "ninja developer":

  • How about you stop chasing that stupid dream, FOR REAL!

  • How about you love being a good developer, repeatedly.

  • How about investing in yourself and learning new stuff every single day.

  • How about you accept that it's very okay to take a break sometimes.

Posted on by:

Discussion

pic
Editor guide
 

Full Story On My Job Application to That Company

Been working in freelance since 2011...

So I have an experience of professional dev for 8+ years (when applying to this job)

I thought about working in an enterprise company, to see how things go there

Regardless the fact that enterprise companies might be dull 9-5 jobs 😁

After applying, I got a call from the recruiter then she forwarded me to the CTO.

I got 3 technical questions to answer in email to continue to the next step, the demo task.

The demo task was mentioned to be 3-5 hours task. Actually, this was not the case.

Check the requirements to know what I mean:

task

Regardless of the task being time consuming (with the absolute idea of having no guarantee to get the job), I thought inside:

This is the CTO of the company, he is not a usual recruiter... he must be evaluating things the right way.

So, I started working on it the first day, and I checked whether things are going wrong or not:

pic-checking

And he replied:

nothing in the wrong direction.

I did the task within two days, here is the repo at that point

He told me that he will hand the repo to the seniors in the company to give their feedback, and this was the reply:

feedback

Two things came into my mind at that point:

  1. Is he serious? he wants me to fix the implementation as if I was working full-time and getting paid?!

  2. I've gone too far, and I don't wanna waste the time I spent already, so I gotta do this.

So this was my reply:

is-serious

I spent another 4 days fixing the stuff he mentioned (you can see where this has gone too far).

And, I sent him after:

final-answer

And this was his reply:

cto-final-answer

Well, that moment I thought whether he is being dodgy or real cuz:

the end result is still too complicated for the relatively easy task

He asked to use Django Rest Framework, with some frontend, and Docker... shouldn't that be complicated by essence?!

Also all of the dev/prod switches weren't necessary

He actually praised that I deployed it on Heroku, how would you do that without those dev/prod switches?

Anyways, I basically spent a whole week working on their "demo task"!

wholy-shit-gif

 

It does sound like you did a lot of free work for them. Maybe they deserve an invoice?

 

I tend to waffle between I-don't-want-to-seem-like-I-have-a-big-ego and this-was-a-week-of-my-life-now-pay-me attitudes on this.

However in this circumstance, you're doing WAY more work than the original prompt was given. On top of that, it seems really strange to me that they would request edits to a take-home project. Isn't the whole idea of a take-home to assess how the interviewee would think their way through a typical problem and then assess their value based on their implementation strategy rather than nitpick about dead code? I honestly am confused by this. And then to end it with a TL;DR as a rejection letter seems way too colloquial for this project. You deserve better for the work you did.

I've seen something like this done before and my mind was blown. I'm curious if anyone on Dev (hiring or being hired) has any anecdotal experience for this?

Here's my response to their TL;DR

I wrote our hiring tech test. We spec it at a day, but for a junior position (dependent on resume) we'll either extend to 3 days or just skip the test all together.

When I get the answers, I don't even bother to read the code. Does it compile? Does it have better than nonexistent tests? Cool.

I do look for the commit history (the reason for the requirement of uploading to a public git repo to share it with us...). I'm looking at two things; commit messages & thought pattern approaching the problem.

If an applicant tried to bill me us for the day's effort, I'd have a good laugh & legal would write a stern letter back.

While we spec it at a day, a decent senior can fulfill it in an hour and change. If you're applying for a senior position & it took you 3 days, you might be lucky to get a low ball offer.

While I don't condone billing your interview at all, OP's experience still seems over-the-top for an interview, does it not? I can understand being frustrated with aspects of the feedback that could have easily been resolved in the first code reviews of full employment.

Don't get me wrong, I agree, OP went well above & beyond.

Even so, billing for that would get a response from legal, rather than HR (or me).

The lesson here, is that OP should have stopped sooner. Particularly on the first reply from them that suggested improvements.

I've had 1 person that I've given feedback to (because the project didn't compile!) - they were subsequently hired (against my advice). I had to fire them a week later.

If there is need for ANY feedback loop in the interview process that isn't face-to-face, it's time for both parties to walk away.

Why would legal send a letter?

...hiring tech test. We spec it at a day...

Oh god damn this has gotta stop. I mean, I know where the mentality comes from.

1 2 3 4 I declare a flame war

Your company must have one hell of a pretty, pretty brand to be able to afford to get rejected by the many, many applicants who all the rest of us are advising not to waste their time on this BS.

But as far as the legal, I'd say anyone who wants to try it absolutely should. Why not? Better yet, if someone posts a problem like this, send them your rates before you start with your own little EULA-style check boxes.

You clearly didn't read the whole post that you quoted. It continues...

While we spec it at a day, a decent senior can fulfill it in an hour and change.

For junior roles, we can skip the test completely, and have hired simply on a 45min face to face chat (with the CV being the gateway to the chat).

So yes, if you apply for a senior role, and spend more time than we think it should take, and try to invoice us for it, it will be the legal team that reply to point out just how silly that is.

Also, you should probably know that the tech test we offer, is a simple CRUD application that you can Google the answer to. But if you do, we'll know. You might still be offered a job (because sometimes, knowing how to Google is a good skill for a developer), but we'll know what happened - and any offer made will reflect the fact that you used Google.

The tech test we give out, has nothing to do with us wanting to make money on your code, and in fact, I'm likely the only person that will see it, ever. Maybe 1-2 others might if they're curious why I'm making the comments I am. And I don't even look at the code itself (that's not the point of the test)! Hell, we've hired people in the past where their solution to the tech test has been "I've done something similar, it's already public on github, can you accept that instead?"

So if you want to submit an invoice for it, sure, why not? Just remember, that when the employer is as flexible as we are, you nit picking over a couple of hours means that you probably fail the "attitude" test and an offer wouldn't be made. We would, however, wish you luck with your future.

 

Man, halfway reading this I was pissed off because I suspected something and then they confirmed it.

They wanted you to build them an app for free.

That's what this was.

Creating a Django app with Vue and Docker, testing, OAuth, setting up PostgreSQL, a few views, design, etc that's not a toy project nor a test for a job. That's a full solution for something.

For something they are selling, I would say.

The fact that the requirements were high, plus the small frame of time they gave you so they can kick you out because you "took too much time", plus what they asked for, and especially the fact that despite not liking (supposedly) what you did yet they require you to fix the errors...

They wanted somebody to build something for them, for free. Dead giveaway.

Django + Vue is my stack too. I'm way less experienced than you (1.5 years of Django, 9 months of Vue), but I work with people that have +15 years of experience and have been working with Django since the beta came out, so I recognize good code (despite not being able to write it myself 😃), and yours is top notch.

Don't pay attention to what they said, they just were sneaky. Don't think for a second you're "mediocre", you should be proud of what you did.

 

...should be proud of what you did.

Maybe proud of the technical accomplishment, but if it was me I would not be proud of being a sucker. I'd recognize the lesson to be learned there.

 

Alright. It's me. The "bad" man on the other side of the email conversation.
I was struggling with myself if I should reply to the post at all because

  • publishing a private email conversation without letting the other party know and agree on it upfront is a no-go for me.
  • so many false claims and hypothesis have been brought up without even trying to think about the intention of the other side.

To find a way for myself, I don't want to get into any of the details of the posting itself.
But I'd like to talk about motivation.

In my reply, I will focus on our way to evaluate and handle applications and why we are doing so.


Why are we doing this at all?

We're advertising our job offering world wide. Therefore we receive hundreds of applications a month.
As you can imagine, we need some kind of differentiation/filter. Is a candidate good or not? How can you tell?

We decided to standardize our application process and try to be as transparent as possible right from the beginning.
Our job description already states the main technologies required to fulfill the position. Python, Django, RDBS, HTML/CSS/JS are hard requirements. Celery, RabbitMQ, Sentry etc. are a huge plus.
However everyone can claim knowledge of these fields. CVs usually are full of fake details. People listing technologies they just slightly got in contact with.

Our approach are multiple steps:

  • Screening CVs - even if most of them are meaningless, we can filter hard requirements. E.g. we can only get a blue card for people with recognized diplomas (thanks, German government), we can check GitHub profiles, StackOverflow, etc. if provided
  • HR phone call - check salary expectations, English language, reloaction/remote setup, etc.
  • Django ORM questions - three questions to challenge knowledge of the Django ORM and if the candidate knows what's going on behind the ORM courtains
  • Django test task - the thing we're discussing here. More on that one later.
  • A video interview with the tech team - 50/50 technical and personal questions, get to know each other
  • Two day onsite workshop - we fly the candidate to Germany to spend two days on different challenges with the team, have a team event in the evening hours, etc.

Moving for a job is a huge change. We believe that both sides need enough time and enough insight to make a proper decision. We don't want to make anyone move from a foreign country to Germany when we're not 99% sure that it will work out.

After each of these steps, we have a commitee of people making the decision if we should continue.
The test task is evaluated and judged by the senior staff, after the workshop the whole team decides. The decision to continue must always be unanimous. If only one involved person has doubts, we stop the recruiting process.

Why exactly such a test case?

Let me start with an open question to everyone reading the text: What would be the alternative?
How can you get to know what someone's really able to do?

This is our biggest question during the recruiting process.
Most of our applications are coming from outside of Europe. Thousands of kilometers/miles away. Even if that would not be the case. A long interview or an onsite workshop at this point would cost the candidate as much time as the test case does.

We're doing the same test case with slight variations over the last few years. It changed from virtualbox to Docker, from Python 2 to Python 3, the API was added etc.
We never got any bad feedback until this posting came out..

Please ping me if you know a better and faster way to tell apart people who can fulfill the job and ones that don't.

What feedback to give?

Ryan already pointed it out in his reply. We're trying to be as open and give as much feedback as possible.
It's always people involved. Humans made of flesh and blood. With hearts and souls.

Even if we reject someone, we want to treat them with respect, give feedback on why we made our decision and what someone could change and learn in the future to compensate. Give them a chance to grow.
Treat everyone the same way you would like to be treated yourself!

I know of US companies that don't give any feedback at all because they fear to be sued or will be confronted with any other kind of resistance. This is not how we want to be remembered.

Why not just try?

Imagine living in south america. Moving to Europe will be a huge change and huge challenge.
We're not happy with the idea of relocating someone here with serious doubts if it will work out.

What if it doesn't? Depends on the visa your embassy will assign.

Usual working visa -> they would basically have to leave Germany right when the contract ends
EU blue card -> better but still only six weeks to find a new job or leave the EU

I would not be able to arrange that with myself.

We fortunately only had to terminate one contract during the probation yet - this was one of the worst days in my life. Not because it wasn't justified, but because we were ending the dream of someone!


Every story has two sides. This was ours.
Connect the dots. Let me know your feedback!

Best, Jens

 

Sounds like the whole reply is to justify:

Why we tell people to work for us a whole week, then we tell them: "tl;dr no"

Wrong is wrong... regardless how much justified.

but because we were ending the dream of someone!

Be realistic, Jens!

No one would like to work in a place and treatment like that.

You can see what people are saying in the comments here, it's not just me.

Ah, in case you wanna see some better hiring ways here is a good article.


I don't wanna go back and forth on this with you... nor do you.

I think did my best; unfortunately, you did not.

 

Thank you for posting your side of the story. I would have sided with the author from just the article, but he lost my respect by posting private conversations on the comments. Also for continuing to argue in the comments. I think a nice tall glass of humility is overdue on Yaser's part. Sucks that he wasted so many days on a project like this - maybe there could have been more timely feedback, pair programming etc to avoid this.

I came to this post from the newsletter expecting a totally different vibe. I thought this was going to be a post about being humble because we're all mediocre, and that there's always someone better than us. On the contrary, the author seemed to get really bitter about being rejected...

No worries - we learned our part on it.

For future tests, we will let the applicant know that we expect them to stop after a maximum of five hours - no matter how far they've got. After that we should have a look at the implementation together. Maybe a video call to discuss it.

And we will be more clear on what we don't expect.
As long as we don't specifically ask for it, we don't expect a single page application or a deployment on some cloud provider.

Thanks for the feedback.

 

Firstly, thank you for stepping forward & joining the discussion - and for keeping it professional.

I have no stake in the "game" but since you asked for alternatives...

You say each step has to have a unanimous decision, yet no-one had concerns when the email to the CTO had "gotta" and emoji etc? You missed an opportunity for early rejection there, and with hundreds of applications per month, I'd be taking everything I could to reject early.

Now, with hundreds of applications per month, and the whole team discussing each stage of each applicant, how do any of you get any work done? I know I'm deliberately exaggerating the point, but surely a select few can make the decision at each stage?

We also hire internationally, but I think we have a radically different approach (even though we use resume, phone call, tech test and Skype call before a flight). Successful candidates also get 6 months accomodation & food paid for by us, and we pay the costs of relocating in the first place...

Our tech test is significantly simpler than yours (basic CRUD application with maybe 7 requirements). Senior Devs can complete it in an hour & change, and it's done that way, because sometimes we choose to do the test at our office, and we can lend the candidate a laptop of they like. Juniors are allowed longer, or we simply skip the tech test.

When we receive the test answer, I don't look at the code, at all. I do look at the test coverage report, any comments in the code, and the commit history (one big commit at the end equals a rejection just the same as 400 commits an hour).

The point I'm making here, is that the tech test is looking for aptitude... If they already know the answer & hammer it out, good for them, they'll be highly productive. If they struggle & try things and back track a few times - I get to see how they think, if they're capable of learning etc.

A good developer should, in my view, know when it's ok to Google & read stack overflow. They don't need to know the way we work, or the depths of any frameworks we use - that'll come in time with the right attitude.

To each their own, though I don't envy you.

Thanks for your reply.

No one involved in our recruitment process is an English native. It's our second or even third language.
We'd like to start with a feelgood settings for our applicants. If that means using shortened words and emojis, that's fine - we will use them later in Slack too.

Not all of the team is involved in every stage of the recruitment.
We can already reject a big share of the applications based on letter of intention and CV.
Since most of our positions are on-site, we expect applicants to think about what it means to make such a move. E.g. expected salary in Indian Rupies for a German position is a direct rejection. I'd guess that only 20% get to the three ORM questions and 5% will get to the test.
The senior staff comes in at the test implementation and the whole team during the on-site workshop which happens at most 2-3 times a year.

Your approach sounds great. But also costy. We're still a relatively small company overall with a dev team of around 10 people. We just cannot afford getting people on-site for a workshop and then reject more than half of them. Most of the workshops have to work out or I'm running out of budget :-)
Same for the learning part - I cannot hire someone on a regular or senior position because they know the language but then have to learn the framework for half a year.
I'd really love that to change over the next few years.

 

I'm glad everyone can hear the other side of the story. Your reasoning and process make complete sense, especially for international candidates.

I'm not sure why everyone is jumping to unwarranted employer-bashing. The assignment does not seem out of the realm of possibility, especially for an experienced candidate. It isn't doing a full project for the company that you are not being paid for, the value of this project is assessing a candidate, not putting it into production. I'm sure their developers are more than capable of building this, they do not need to outsource it to interviewees. I do not know too much about Django, but breaking down the project seems like:

  1. Fire up a local Django/Postgres environment, which I'm sure there is a clear how-to guide out there and anyone experience with it should be able to get up and running quickly.
  2. Create the database schema, populate some test data.
  3. Implement CRUD functions to work with the data.
  4. Implement some basic pages to interact with those CRUD functions.
  5. Create a few API endpoints to output some of the data with some filtering options.
  6. Document your solution.

If you are experienced in the language and framework and starting a brand new project, does that take days?

I'm not sure why there are so many dismissive attitudes on performing coding challenges or a demand to be paid for doing them. I find this method to be much better than white-board coding or trivia questions that aren't representative of a good candidate. This method is a better representation of what you will be doing every day (plus you can use any resources you like and are encouraged to do so), so why not interview candidates that way? If the project is massive, I would understand, but I don't feel that this one is.

Thanks, that's quite precise.

(4) In Django you don't even have to implement a frontend. There is a builtin admin interface which can be easily configured and would fulfill the CRUD requirement.

I do not know too much about Django

Exactly, talking about stuff we don't know is just BAD!

If you are experienced in the language and framework and starting a brand new project, does that take days?

Their "senior" did the task in 6 days:

github.com/vpotter/RHTest/commits/...

What's your take on that?

I will only answer on these claims because you're talking about a non-involved third party:

This task had an additional requirement to implement an Angular frontend for someone who never used Angular.
The candidate was a personal reference and we had some extra agreements with him on that part.

Also commits spread over multiple days don't mean that this time has been spent. Most applicants have at least one job and a family. We don't expect them to finish the task within a day just because we ask for max. 5 hours of their time.

Please don't assume anything you cannot know for sure.

 

Please ping me if you know a better and faster way to tell apart people who can fulfill the job and ones that don't.

Hire a good HR rep who knows how to read CVs and ask useful questions. Your comments about CVs being mostly fake and meaningless suggest your team doesn't have those skills (and why would they, they're developers not recruiters). It's not difficult to see through bullshitting if you look/ask for evidence of each claim. I'd at least increase the amount of technical questions asked before the coding challenge, and move the challenge after the video interview.

Every other industry in the world hires from CVs and interviews. Engineers don't have to build a toy bridge to get a face to face interview. Doctors don't have to perform minor surgery to prove they can. Lawyers or accountants don't have to work on a fictional case. I don't know why software engineers usually consider it impossible.

Have you considered that these tests are actually a negative quality filter? I always turn down coding challenges, because I know I can get a job based on experience alone. Only people who are so desperate for work they'll spend a day doing unpaid labour per job application will complete your test.

Have you considered that these tests are actually a negative quality filter?

This.

You literally filter for most desperate people.

 

publishing a private email conversation without letting the other party know and agree on it upfront is a no-go for me.

But if you hadn't replied, we'd have no idea who you are, so it would make no difference whatsoever that he published a private conversation. That said, you make some fair points about the coding challenge.

It's unfortunate that this conversation seemed to escalate the severity of what was a pretty tame post. The emphasis of Yaser's post was essentially for one to accept one's mediocrity/less-than-greatness (if one feels mediocre/less-than-great). His only actual criticism of you and your company was that your bar seems unrealistic; it's certainly a fair assertion given that such a judgment is highly subjective (i.e., there's no right or wrong about how realistic your bar is -- it's just opinion). But as the comments started flowing, some of Yaser's comments showed that he was, in fact, more bothered by your rejection than he claimed in his post... and there's nothing wrong with him feeling that way, though, again, we'd never know if you hadn't replied.

I certainly don't fault you for your interview process -- you have to do what you think is right for you, and it appears you and your team put a lot of thought into it. But I still don't get why you replied and put so much effort into this comment section when none of us could possibly know who you or your company were.

Best of luck with your new hire (I'm not being sarcastic; I mean it).

 

Thanks for posting your side. The test does seem a bit much. Being that you expect most candidates to change countries, I understand some of the consideration there.

I do want to point out: if properly configuring the Django admin interface was necessary to pass the test, it should have been mentioned in the requirements. Especially when considering workers from a different culture, such an important requirement being unstated seems like a landmine.

Side note: Requiring deep knowledge of a specific framework seems like a trap for your company long term and limiting on your candidate pool. The time that you saved using a framework now has to be paid by new employees knowing "what's going on behind the ORM curtains" (plus product knowledge) in order to work on your product. As well as probably restricting your design choices. The fact that it so thoroughly influences your hiring practices should be concerning, IMO.

In any case, this seems like a bad fit for Yaser and your company, so it probably worked out for the best.

Best wishes to everyone.

Using the Django admin is not a requirement but it could fulfill most other requirements without the candidate needing to code their own frontend and views. Why do more than requested. As some other comments already pointed out: this is also something you would expect later on. If the task is to cross the ocean, you don't need a QE2. A Comanche or whatever other transatlantic vessel is fine.

Please excuse if that sounds harsh - I just don't know any better words in English: I don't get the second part about the framework.
We're almost exclusively using Python and our two largest apps are built in Django. Why should I exclude that framework from our search parameters?

"what's going on behind the ORM curtains" - these questions are pretty simple if someone at least cares a bit about how a database works and what the ORM abstracts for them. IMHO it's not possible to write performant applications when you don't know what the framework hides from you.

Thanks for the wishes - they already worked out.
This week we hired a developer from Colombia - and he's the happiest man on earth right now. And so are we.

Besides the problem, as an entry-level Python back-end dev tasting Django, I can't talk much about this.

Either way, I have experience with other languages and I don't find this extremely hard. I think what complicated the scenario was trying to get beyond requirements with front-end.

Sharing the private conversation was not right though I beneficiated from the feedback provided by the CTO.

I wish the best of luck for you in future applications, but I also understand the company due to the reason why they are so cautious when recruiting.

This week we hired a developer from Colombia - and he's the happiest man on earth right now. And so are we.

South American and Eastern European devs are seriously underrated. Glad to hear you're taking part in changing that.

 

Sorry to resurrect a dormant post, but I liked seeing the other side to this.

I won’t comment on whether the test was onerous or not. I’ve spent a week on programming tests before. I did when I really wanted the job and didn’t when... well, I didn’t. I’ve spent multiple weeks navigating through multi-stage interview processes only to not get an offer. It sucks, and it hurts, and it really sucks. But you could have reapplied at a later date... until you posted this.

After a decade as a hiring manager I understand both sides of the resume better than anyone that hasn’t done the same. I’ve seen it all; unacceptable people get hired for unacceptable reasons, and acceptable people not get hired for unacceptable reasons.

But whatever you do, don’t post it online for potential employers to find, and learn to move on.

 

publishing a private email conversation without letting the other party know and agree on it upfront is a no-go for me.

This is a really good point Jens I am ashamed I didn't think of that sooner.

dev.to has come to resemble long-form Twitter enough already without pushing it further toward that abyss, without egging on their "publish screenshots of my side of an extremely private conversation get internet sympathy" pattern here.

 

Let me start with an open question to everyone reading the text: What would be the alternative?
How can you get to know what someone's really able to do?

I can't comment on processes I'm directly involved in. But just to give you some hope, I'll just say that it is possible to apply DevOps / kanban styles of reasoning to this, to the point of a single day process from initial contact to structured interview to hire with very, very minimal cost of time to the candidate within that day.

Haven't personally seen ways to deal with the time zone thing, but I've heard rumors of good things in that area too.

Would love to hear details about streamlined application processes.

As this post is quite old yet, we've since heavily revamped and automated our process and test.
The application test is now using a scaffold and is hard limited to 2 1/2 hours.

 

some kind of differentiation/filter

Yeah this is the most reasonable part of the thought process where a lot of the hiring anti-patterns originate. Beyond hiring, to any market selection process.

Aside from antagonistic people like me (or at least like I was a few years ago), people aren't going to respond "No." to a job post.

So you don't see all the people who pre-reject you.

Just keep in mind who's filtering you, and that you will often not see the negative results. Even if some change to the hiring process bumped the rejection rate by qualified candidates, how would you know?

Did you know that there's often an inverse correlation between available time and the factors that create demand on it (competence, grit, hard working attitude, customers first)?

Sorry but I don't get your proposal.

Oh, no proposal in that one, just useless grousing.

 

I've interviewed all but one member of my team (the one I didn't interviewed me)...

As an employer, putting this like "Gotta" in an email to the CTO, during the hiring process, is an immediate no. After you've got the job, be as friendly as you like.

From the other side of the table, as the applicant - you went way too far.

If the spec says 3-5 hours work and it takes more than a day, that's a red flag that the company doesn't understand complexity. Should you accept a position, you'll never have sufficient time to complete requirements, and they'll likely expect free overtime to meet unreasonable demands.

The fact that the CTO said "no problem with the approach" yet the senior(s) had a lot of negative criticism also tells me that the seniors don't share the CTO vision, and that's another big red flag.

Overall, I think you dodged a bullet.

 

Man, it's not you, it's them.
Would be nice to see one of these companies come up with their own solution to the mini project they give their candidates. This way, they could actually explain why they think their project is better the yours when they don't hire you. Of course, I've never seen this happen.

 

Not even in a 3-5 hours window?

 

You didn't do a third version from scratch, did you? I'd do it for my own development and professional growth.

Been there, seen that, got rejected in a similar manner. But each rejection made me a better software engineer (mostly thanks to feedback and self reflection).

You did well to address the feedback, but I believe it would be a great experience for you to rewrite the project from scratch using provided feedback since you already did a great job at two attempts and fixed a lot of issues. That third iteration could be something that helps you grow professionally, something you can branch off of in the future when working on similar projects. Something you can use as a base for teaching others some basic concepts.

I highly recommend doing it.

Oh, and judging by their feedback, they understood your work well enough to be able to write something similar, thus wouldn't really rely on your code. I'm not saying you did great or horrible, I'm just saying that:

  1. You weren't a great match, they were looking for someone with more XP. They wouldn't hire me either, I'd simply reject that task. I believe they made a good decision for both of you.
  2. You did a good job to work on the task, but you can do even more. A few more rejections like this and you'll reach new heights of professional development. Just don't lose faith in your skills, most jobs are like this, but not all are.

Aaaand no. I wouldn't pay for a test task. If you're willing to do it without getting paid in advance, you shouldn't put in more work than you feel comfortable doing for yourself (been there, did that, got annoyed, learned from it, got a better job eventually).

My point: it's a part of the game (hiring process). You find a team that works for you, they check if you can do what they want under conditions they set. They may be unrealistic and they will be unable to hire anyone. They may find their ninja. But you should concentrate on what is important for you - your growth as both a professional and as a person.

Hopefully, someone finds this interesting :)
Best regards,
Me

Ps: Personally I believe the task was way too complex and I would reject it outright and offer to write a portion of using my preferred language and my scope of work, while decreasing complexity to 1-2 hours. If that is not good enough, we part ways without wasting each other's time.

 

I'm curious as to how much this position was offering for pay. It doesn't seem that uncommon nowadays to look for someone who is a generalist and can touch the entire stack as needed but buddy you better be paying me something reflective of having all that responsibility.

However, if I knew anybody who was competent in all those areas, I would just tell them to learn some business skills such as how to sell your service and product, find a pain point that you can build a solution for, and just build and sell the damn thing yourself.

 

I know this is going to be complete off topic, but I must ask anyway. How would you suggest someone to start learning to sell your product/skills? I've seen this advice many times that you have to be able to do this, but it never goes beyond that simple sentence.

Yeah sure, if you know someone who works in sales professionally you could ask them to tutor you. You could also learn from well respected figures online. I'm watching alot of Dan Lok's videos at the moment. You should check them out youtube.com/user/vanentrepreneurgroup

Thank you so much for the link, I will give it a try.

 

I've enjoyed reading this article a lot; it's poignant and reminiscent.

Yes, I know your feeling as I've encountered in my professional career(14+ years) companies like these. I can tell you outright that this was a real job production task. Some companies tend to include real job tasks in their assessment tests for job applicants. I can go as far as saying that sometimes even the job vacancy itself is fake; it's an awry back door to get some free work from job applicants without paying for it. The promise of the task not to take a few hours is just a troll to entice the applicant to accept to do the job.

I learned the bitter way(after being bitten by similar traps a couple of times) to reject such assessments right off the bat. I can go on and on and list stories from my own experience similar to yours. The good thing however is that you hopefully learned what to accept or reject when you're offered an assessment task for a job application.

 

This's another vibrant article along the same lines as yours: gayle.com/blog/2013/09/18/companie....

 

Let me tell you one thing.

They were right.

They asked you to do this task in 4-5 hours. If itʼs possible or not is debatable. You, instead of telling them up front, worked on the task for two days before telling them it wonʼt be ready within their time limit.

You also made mistakes, the licensing bit being a huge one. Big companies put a lot of work in preserving licenses. If you make a mistake like this, it may cost the whole company. It could mean they have to open source all their stuff, including the most precious business logic. You basically killed the company with this one.

You also paid zero attention to the requirements. They asked you to do it using Docker, and you deployed it to Heroku. Deploying to Heroku is no big deal (they even gave a plus on it) since they can live test your app.

If you want, i can give detailed answers on all the other points, but i think this is just enough for now. If you want to work for a big company, you must pay attention to such details.

Oh, and if you think it doesnʼt worth all the extra work, one more thing: the same applies to startups and freelancers.

 

It's not even a new trend: some time ago I replied to a contract offer for a healthcare government organization. The dept. manager asked very specific questions about problems they were encountering while developing an Oracle app. The questions were all over the map: architecture, data modeling, performance, implementation details, deployment.... After an hour I stood up and told him to call if he needed additional help. I later found out that Patrick from .... had done that before: he posts a job and gets several hours of free brainstorming.

 

The fact that this article has been publicized just goes to show that Jens and his team made the right decision in not hiring Yaser.

I'm sorry that you feel like you've been cheated, Yaser. I hope you learn your lessons from this experience and eventually get a job you truly deserve and love.

 

Lot of nitpicking from their side and the fact that they require you to implement a "simple" task of this size and magnitude in your own spare time, unpaid. Red flag should have been there right away, you could have said "thanks" and move on (because there's still a pretty huge dev shortage in the market so half a dozen others in place of them).

And don't get met started about the rockstar and ninja crap that companies/teams are throwing around, and the silly coding tests where they required you to have memorized every obscure detail of a language's syntax or of a framework's API.

You know what you're worth, if a potential employee doesn't get it, then JUST MOVE ON.

 

Wow. I haven't even started as a coder yet (trying to move from hardware to software), and this has got me worried. I guess this will teach me when to say "no thanks".

 

That's amazing.
Sad.
But amazing.

 

A demo task should be about thought process, not end product. This doesn't sound like this. Perhaps it is good that you are not accepted. Working there would even be harder.

 

In my opinion, they wanted a full application. Gosh what an interview, you should have invoiced them.

 

If we may set aside any justifiable indignation (or resigned dismay) aside for just a second here, this is kind of getting close to the line on what I think should be shared from a private email thread without asking the other guy.

 

This sounds horrifying. And I hope you don't care about that person's/company's personal opinions about what your *n years of professional software development should look like.

 
 

And let us hope that you when you lose, you do not lose the lesson.

Seems like a classic case of "hiring by committee," and perhaps someone close to that CTO fearing competition or new ideas.

 

THIS IS NOT A 3-5 HOURS TAKS!!!!!!

 

To me this looks like their devs aren't able to give accurate requirements to people. And I bet they complain all the time about not having the right requirements from business. Bullet dodged

 

l learn from you a lot,

 

You did your best but it seems they wanted to just use someone's skills to build an app for them to benefit in their own ways. Very bad.

 

I do not mean to be confrontational in this comment, but as an independent person looking at this, I would like to offer some feedback.

  • If I am leading and defining what a team should do, what would make me the most happy is if they do exactly what was asked for and it is done well. I do not feel that you did that. There was no mention of Vue, Heroku, or going above and beyond in the assignment. From my point of view, if I were to ask someone to create a "web-based front-end", I'm thinking of an HTML page with some forms and minimal styling. If that candidate invented the next great front-end framework as a part of the assignment, I would turn them down. Why? Because I did not ask for it and I do not have the knowledge or time to understand it and review it. Focus on understanding the interest of what they are trying to assess. It was very clearly focused on Python/Django. By doing more, you give them more to critique. By doing more, there is more that can go wrong. By doing more, it is more for them to review. By doing more, it is more for them to maintain. They are reviewing you as a potential team member, you have to remember that.
  • The language used in the emails is not something I would ever use on the job or while applying for a job. Words like "gotta", "gonna", "cuz", ":D", "!?", "lemme", and emojis. I'd let one or two of them slide but you should ensure you are presenting yourself in the best way possible when communicating with your potential boss.
  • The assignment specifically mentions building the application in small logical steps so they can see how you can visualize the problem, break it down into manageable steps, and then solve it incrementally. You may have made small commits, but if it didn't clearly show your progression then you did not meet this challenge. The email the next day saying "I'm almost done" and "Gonna review the requirements to see if I missed something" raises concern for me that you did not do that. The requirements should have been understood and a plan to meet them should have been established before writing any code.
  • In reading their initial response, they gave you more feedback than any job I have seen. They also gave you a second chance to make updates and redeem yourself and I believe they were sincere in that. Your response to their feedback seemed a bit confrontational, even if it was not intended that way. Their final rejection was very explicit and offered great feedback for next time. They even gave an example of someone else's assignment. It seems to me that you are disregarding their feedback and making it seem like they are ghosting you when I think they went above and beyond.

I hope you can reflect on this and take their feedback and mine to heart. I don't believe that you are a mediocre developer, you have the coding skills. There is more to being a developer than cranking out code, so work on those aspects and you will be fine.

 

This is one lesson I learnt over time because of a great feedback from a company in Germany. Even when they made it clear upfront I didn't manke the cut. They spent time on both written and video interview-styled feedback. That was very valuale time. I realised all of the negative feedbacks came from the extra stuffs I was trying to do.At least 90%. Like I tried to deploy to Heroku but couldn't, then just used firebase instead. I left some heroku related files.I implemented a complex modal I wasn't asked.It turned out to have the most criticsm.

At that point, I had very little experience and was always trying to impress. It backfired every single time.

 

I would like to clarify few things:

Since when doing well in a task and going beyond sounds bad?

Words like "gotta", "gonna", "cuz", ":D", "!?", "lemme", and emojis.

I was explicitly asked to avoid formalities (with a smile emoji):

formal

but if it didn't clearly show your progression then you did not meet this challenge. The email the next day saying "I'm almost done" and "Gonna review the requirements to see if I missed something" raises concern for me that you did not do that

For the sake of conciseness, I didn't share how I approached the task:

done

There is more to being a developer than cranking out code

Yeah, there is the "dealing with humans" aspect, which they might be super bad at.

 

Since when doing well in a task and going beyond sounds bad?

Hooo, boy have I got examples for you. DM me if you want to hear horror stories about this. There's a value to effort ratio to these types of things that can slide into the negative real fast.

 

As someone who has done a lot of interviewing over the past few years, I concur with some points. We give candidates very strict guidelines on what we expect from the submission, both in terms of scope and style, so ignoring that is definitely a red flag.

That said our exercise is a lot more manageable since it's a task that can be done without any external libraries (this is in fact a requirement) in anywhere between 2-6h depending on skill level and attention to detail.

 

Hey Michael, would you like to share more details about your test case?

The external library is intentionally part of our requirement. There are a ton of libraries to validate IBANs. How will the candidate chose between them? Will they use one at all or implement an already solved problem again reinventing the wheel, etc.

 

I personally would never apply for a job like this. A simple task that shows I know how to program is reasonable but this is crazy. You should have just told them no thank after the first round of changes. Maybe they wanted you to code this for free so that they can use it without paying you?

 

agree with this - sounds like you just worked on spec for them and built an app their team didn't have time or desire to deal with, and they wanted it to better fit their internal code styles so when they do have to go do maintenance, it's an easier lift. Sorry man!

 

I would whole heartedly agree this looks very much like free work.

One 1:many relationship is not a production application. Is is clearly a contrived scenario designed not to disadvantage a Dev with no domain knowledge (apart from knowing what an IBAN is...)

 

Agree on this, and would never continue with this kind of take home tasks

 

I really feel like the outcomes of being good instead of great is pretty favorable in general.

If you reach good status with a lot of hard work, you've reached above average salary for where you live, and you're a pretty solid contributor but you're not the best around... That's a pretty good outcome.

Instead of striving to be better and better and better and better, you may want to strive for maintenance, with less and less effort, allowing your brain more time for general happiness and hobbies.

Don't strive for promotions, strive for making your current contribution level easier.

This is easier said than done, and probably isn't what many people would want (it wouldn't be my thing, for example), but I think there's a stigma against leveling out which is misguided.

Of course, part of maintenance is ongoing learning. You'll regress if you have your head in the sand.

 

...I think there's a stigma against leveling out which is misguided.

Leveling out in one skill can mean the freedom to ramp up in something more important, or in a meta-skill.

 

I get turned off by any job posting that seems to put some emphasis on spending a lot of extra time outside of work either doing more work or working on skills specifically for work.

I place a very firm distinction between "my" time and "company" time. Unless there is a really really good reason that I need to borrow from "my" time and use it for "company" time, it isn't happening.

I got family and friends to spend time with. I've got other interests outside of my job to spend time on. I've got other things to do besides earn you more money.

 

Oh man, that's a lot for a single person. I have heard of some "companies" who make you program entire applications to "evaluate you" and actually make you work for free!

At least this experiences make you grow as a developer.

 

Hi Yaser,
I have 2 comments:

  1. I'm not sure that normal curve is the right curve to describe the market.
    assuming that bad engineers can't find a job, or keep losing jobs, they will probably leave the field, while the good ones stay.
    Which would might leave us with a right tail curve, of good and great engineers.
    right tail curve
    As long as you do your best, and you love what you do, that should be enough.

  2. Do yourself and the rest of the DEV community a favor, and don't go to companies who explicitly ask you to work overtime and learn on your free-time, or unrealistic demands like 10x engineers / fullstack devOps developers.
    Companies that ask for that in their job demands should get crickets sounds in response.
    If you will work for such a company you will eventually regret it.

P.S.
I actually do work overtime, and I do learn a A LOT on my own free-time!
But I do so when I choose to.
I will not even apply to a company that explicitly asks for that. there has to be standards.

 

If I was asked to do 2-3 days worth of dev as part of my job application I would've walked away... I'm more than happy to do a few hours, but 2-3 days is just unfair for everyone involved.

But I agree that companies are setting the bar too high.

 

Remember that this was a simple project that would only take 3-5 hours, with OAuth, a few views, endpoints, testing, docker, etc....

And yeah, I'm being ironic.

 

To actually do 3-5 hours of work you, actually need to have 10 years of experience on your back realistically. All of those technologies cannot be learned and understood in one go. But yes with lots of practice and really focusing on the task at hand (no deviation from original requirements) you may do it.

 

Some companies are not only looking for winged unicorns. they are looking for people able to eat, sleep and breath company lifestyle while kicking away families, friends, and social life.

A couple of weeks ago I received from a big company an invitation for an in-home test and an online quiz. The instructions were delivered on a Thursday. The in-home test was divided into 3 easy,2 medium,2 hard and 2 extremely hard questions that have to be completed during labor day weekend. Each and every question requested coding, but the 2 hard and 2 hardest included UML, sudo code, and a myriad of documentation. The quiz had 25 questions to be completed in 45 minutes. The questions were very hard. I did the quiz just for curiosity.

I rejected it because on a personal level, I found the rules for the assessment ( to complete it during labor day long weekend ) totally disrespectful because they are saying ' we do not care if you have plans for those days 'or worst ' You are having an idea how demanding is this job'
-Based on the previous point I can't imagine the level of stress there.

 

These guys often don't realize all the devs rejecting them, guys who simply cannot be arsed.

At that point they're not selecting for competence, they're selecting for neediness and free time.

 

The requirements they provided just cannot efficiently be completed in 3-5 hours, and by just one person. This task should at least take a week. I'm so glad I've been at the same job for 5 years and don't have to go through interviews anymore. Companies seem way too awful and greedy now when it comes to hiring developers. Salam habeebs.

 

The technical requirements are to install Django framework, instantiate a Postgress database, create 3 tables:user, debtor, invoice. Use the ORM to create basic crud, integrate Google oauth And generate some server side controller/actions code to validate form data and return database results via an API. Without CSS styling, client side validation and SPA routing, I would expect a dev experienced in the stack to knock out a proof of concept in a day. This wouldn't be production ready but it definitely shouldn't take a week.

 

Right, it shouldn't take a week and it might not be production ready, but they're expecting 3 to 5 hours, isn't that way too little time?

 

I'm beyond words here! That this happened, that you created this post, that the employer directly replied and that there are so many people on both sides of the argument. It's nuts!

 

I think it is great that we got both sides. The author and responder both wrote eloquently on the subject and both views were valid. I completely respect the conversation, feedback and response. I would hire him in a heartbeat because he is able to assimilate and act on feedback.
The hiring company clearly has some very specific requirements either around tech or culture and maybe they didn't communicate it well enough. F1 mechanics are away from home 7 months if the year. The hours are long, the pay is low and the pressure relentless but they do it for the adventure, to work with the best and to be able to say that they were there. Even if I was the best mechanic in the world, I wouldn't make the team because I don't fit the culture

 

both views were valid

Yeah, but both were unsound.

 

That Mediocre quip caught my attention. Like, "who would really call themselves mediocre that can actually code?" so I read on with interest. I read through the entire commit history and I read through the full story in the comments. I've also hired with "take home assignments" So....

First, the project is unrealistic for under 5 hours for sure for most developers. For whatever it's worth, probably about three hours for me and if it were a Ruby on Rails task instead of Django.

But I fully recognize that the only way to do this project in under 5 hours is because you're already pretty darn good at all areas it called for from Docker to Django. If you do not happen to be in that camp, this will be a challenging project from time-perspective. But I can also say this is a company that knows what they want to hire and they know what they don't want to have to train the new hires on.

First mistake here, is if you already thought this task was well more than their estimated time to do, then you have to think a) opportunity to grow and learn from this interviewing process or b) move on to put energy into other job opportunities that really could use your energy and focus and likely to lead to positive outcome. I suspect the ultra-casual commentary to the CTO was also a bit off-putting to this firm. So at least use proper English in your initial communications and relax to casualness after the hiring event. Aside from that, I'd say this company at least is clearly aware of what they're looking to hire. They are very obviously (to me) seeking the top 1% of developers and that's "Ok". They'll of course pay for it, but that's not our problem! We must seek right-fit for us as much as they do.

The feedback the code reviewer provided was on point and yes, it's the kind of feedback you could expect in a code review if you were employed there. So you have to ask yourself if you can handle that kind of critique and rise to the occasion. In this case, if I were on the receiving end and I recognized many more hours to complete the requested changes, I would likely have written back and added ETA on every line item and tell them, "I can only do 2 more hours on this project, here's my estimates for each. Which would you like to see me do?" You'll earn respect for pushing back, for providing clear estimate and demonstrate you can negotiate and discuss expectations rather than just accept the work/tasks being pushed down in your direction.

Besides, here's also the opportunity for you to have real interaction to learn about this team more in-depth and decide for yourself if this is the team you want to work for. It's probably uncommon for most job seekers to push back in an interviewing process, but I actually valued those that did more than those that never spoke up and just did the tasks assigned. Sometimes tasks are ill-defined and added in purposely to find out how you communicate to clarify issues. When you don't reach out for clarification and just assume, it becomes another clear signal of who you are as a developer to the hiring managers.

 

I've said much in the last few years on the trend toward using code projects like the one you were given to suss out an Engineers ability, unfortunately though this method is light years better than live white board exercises it is still not the optimal way to suss out an Engineers talent.

The best way to suss out Engineering talent gives you an efficient understanding of these key abilities that you require in a real world Engineering scenario. 1) Tenacity. 2)Problem solving ability. 3) Time management.

That's it. Nothing else matters in any Engineering role on the job. Not if the Engineer can write out Dykstra or a* or any other algorithm. Not if they can tell you how garbage collection works. Not if they even know how to use a particular obscure feature in the tool de jour... Tenacity, Problem solving ability and time management.

The fastest way to get at all three is not to ask them to waste their time on your behalf and without pay (which is immoral IMO) for the hope of being pushed to the next step but to ask for an EXISTING project of theirs that they are proud of that can be used to exercise the three key talents listed above.

For tenacity, you can ask "In this project, did you have any problems that you first thought were impossible but figured out? How did you realize you could solve the problem?" Their answer will zero in on those issues for the project and you can assess if what they deemed difficult matched with your and your teams conception...thus sussing technical fit.

For problem solving skill you can ask "What are the steps you go through to solving a new problem that you've never seen before?" This gets you to the 1, 2, 3 of solving a problem. Do they have some idea in their head already and get going? Do they start with R&D by hitting google and stack overflow? This gets you an idea of how fast they go from clean slate to skeleton project actively being fleshed out.

For time spend you ask how long the project took to complete, how did they task out their work and manage their development process. This gets you an idea of how quickly they can work and if they can do the necesary work on time. To a company this is probably the most important factor as time is money.

Everything else is fraught with bias...of single points of failure (One Engineer) disqualifying good or great candidates because of gotchas put into live coding challenges or discounting people for being nervous while live coding ...it's all fracked. As part of my consulting company I take part in hiring drives and have interviewed many Engineering candidates and I find the best are the ones who excel in the three traits described above...even when they don't have a project that I can look at the code for.

Links:

sent2null.blogspot.com/2014/05/liv...

sent2null.blogspot.com/2013/02/gra...

sent2null.blogspot.com/2013/01/rub...

sent2null.blogspot.com/2012/03/eng...

 

I don't really get the stigma I've read a few times in here about:

Oh you spoke casually to the CTO, immediate GTFO

I can understand if the critique was being rude but being casual?

Listen, I was under the impression one of the main components about a hiring process was getting to know the person. The CTO is a human being like the rest of us, so I'm going to speak to them like I would any other person. I'd rather be genuine about my personality and fail than present myself as someone I'm not and succeed.

Maybe I'm just too blunt and to the point, which, so be it if so. I just try not to place people up on a pedestal. I'll respect and praise them all day if its warranted but they aren't a deity people.

 

This an invaluable post for me. Have the opportunity to know both sides of the story and learn how some companies approach the recruiting process is something amazing. I didn’t know, for example, that some companies don’t check the code at all but they check the test coverage or the commit history, this is pure knowledge for me.
Thank you so much for all the parts involved in this conversation, I have grown a lot with some minutes of reading.

One more thing. From my experience you were lucky to get and answer (a detailed one), in my case I almost never get and answer at all :)

 

I find very disturbing this kind of behavior from a supposed serious company. I haven't faced anything like that, but that sucks. I understand maybe you want to work on that company, or after a long search for job, you actually agree to do this, but it's awful they take advantage from that situations...

 

Yaser, my spidey-sense indicates you have been bamboozled. You went above and beyond the call. A demo task should provide the employer a basic sense of your abilities. The word demo implies a demonstration, not a full working implementation. You should not need to "improve your implementation" because they "believe in people". Take it as a lesson learned.

 

It doesn't sound like you did free work for them. It sounds like they subcontracted you and you did free work for someone else. Someone told them to have this done quickly. Maybe they were supposed to have it done already. It doesn't matter.

They submitted your work and sent you the feedback they received.

 

Yaser this was a great article! Thanks for posting it!

I've managed to be successful (that is, have a job where I am of service to others and I get paid a wage that allows me to pay my bills and save a little money) because of these principles taught to me by mentors:

  • Show up to work
  • Do the work
  • Don't disturb the work

I hear that this sets the bar low but it keeps my expectations in check in such a way that if something doesn't happen, I wasn't attached to it anyways, so no big deal. If it does, it was a nice bonus and something extra (in addition to have said job) that I get to be grateful for.

What's cool is that you're advising others to be realistic and just enjoy the journey. I think that's awesome! :-)

 

A friend of mine was in your position not a long time ago.

He got offered a job and as part of the interviews he had a test task on machine learning (finding identical and almost identical images).

They kept asking and asking more of him and he did work on those new specs they added to the requirements. The end result was a program better then the company was using at that time and still he did not got the job.

So whenever i see something like this happening i directly say thank you for the opportunity but goodby :)

 

This is a synthetic test case we do with all people reaching that point of our hiring process. Nothing you could use or sell as a product.

 

Sorry you had to go through that. But I want to say while it sucks that you didn't get the position, they did you a favor in one small way. You got to see how it would be for you on a day to day basis at that company. I think you dodged a bullet in that respect, and I hope you found a place that sets realistic goals for interviews as well as work life balance.

 

Hi, I don't really understand how Yaser dodged a bullet. They provided amazing feedback to his work and rejected him in a firm but kind manner.
The extend of the task was quite large, but Yaser also did some extra stuff like the vue frontend which was not part of the task, but added a lot of effort from his side.

I'd say, be grateful for the feedback and use it to grow.

 

Feedback from day one would have been okay but giving feedback and stalling for days of wasted time for both sides is just wrong, I did assignements too, some recruiters gave feedback and some didn't but I appreciated both as none of them wasted my time and gave false hope like what happened with the author, such a pitty really.

 

First of all, although maybe it was already mentioned below, when I read "Quite simple, I did it with some extra bonuses, like using Vue.js" I choked!
Man, you're not mediocre, you're great. I think I'm never done this for free even if the company was my dream. And it's not simple at all, so respect :D

Second of all, where do you have interviews? Because in Russia and in most Europe we have such a lack of developers so you rarely will face a picky employer like this.

 

Pretty simple.

If a company is unable to/won't pay you FAANG wages, they shouldn't have expectations that of those companies.

"Rockstar developers" don't even make efforts to apply to mediocre jobs. They already work at the aforementioned companies, or building their own stuff.

Never be ashamed of not wanting to jump through hoops for companies that claim they are building "the next big thing". Chances are they aren't, and also they don't understand supply-demand in HR terms. It's a sign of future failure.

 

This is why I avoid interviews with coding challenges. One is trying to conform to the incredibly high standards of another developer, and it's a time waster. Coding challenges, in my opinion, should be for those who don't have a portfolio but do have years of experience, otherwise, this is why I think a portfolio is vital for job searching.

 

Holly molly!! This is insane. I mean, an almost week-long homework for a job? I had a case where a company made me do a script which took me 4 hours and I thought that was too much.
Anyhow, I don't think you'd actually be happy to work at this place. I mean, if this is what they expect, and this is how they operate, the place is probably a mess.

 

This is the reason why nowadays I don't take any dev assessment to apply a new role Ina new company. If I must be confident of the company's name then they must have confidence in my habilities. And thats is all.

 

I hope that tech test was paid...
If not, they deserve to go bankrupt.
A tech test (or rather, whole app) like that takes time to build and could be considered a basic prod-ready app in itself and represents 75% of the kind of apps freelancers build.

Like you said, they expect a "great" developer who can do absolutely everything, and spends his on free time learning stuff that the company is going to use, plus the fact that they on top of that expect you to spend close to a full working day on a test only to get told "Uh hi, thanks but no thanks, bye"...
Just plain insulting. I'd stay away biiiiig time from these kinds of snobs and hypocrites.

 

@yaser Perhaps you should have stopped when they asked for the first changes (like if you were already employed).

Job interview demo tasks tend to be unreasonable at times but heck this is the nature of the game we have to play.

Thanks for writing this up it is very therapautic for the rest of the community that deals with similar issues.

 

Bad news buddy, but looks to me like they just used you get free stuff. There may not have even been a job in the first place.

 

So you were conned with a real freelance assignnent disguised as a job interview.

 

Dear Developer,

Since you didn't pass the interview, it doesn't mean that you are a mediocre, maybe they're looking for someone with different characteristics

Don't worry, there are many other better opportunities.

You will make it!
Cheers

 

I would have definitely walk away the moment I was asked to do such assignment. No interview worth more than 2 hours of your life

 

If only we all did this. These time wasters would be shut out.

 

Oh, you deserve better than this
Yaser, seriously!

 

"Here and there some small dirty pieces of code, print statements, etc."

At least they could point this out as comments on your commits.

 

Your implementation is much better than one he shared with you for me. I did just a quick view :D

 

Dude, you should definetly know your value.

 
 

IMO, being a good developer is always striving for more, and keeping on top of the ever changing development scene. But then, that's just my opinion.

 

Jacob Kaplan-Moss - Pycon 2015 Keynote: "I am a mediocre Programmer." youtu.be/hIJdFxYlEKE

 

100% I'm one of you :)

 

Good post! thanks for share your story.. same to me, i just fill like a mediocre developer some times!

 

Thanks for sharing the story. I am sorry to hear that the firm screwed you in a very unprofessional manner!

 

A great talk about being a mediocre developer: youtube.com/watch?v=hIJdFxYlEKE
Jacob Kaplan-Moss, a self-described “mediocre programmer”, gives a PyCon keynote

 

Thanks for sharing a great experience, but I think it's not a demo app actually.