DEV Community

Cover image for Are You a Mediocre Developer? ME TOO
Yaser Al-Najjar
Yaser Al-Najjar

Posted on • Edited on

Are You a Mediocre Developer? ME TOO

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.

Top comments (125)

Collapse
 
yaser profile image
Yaser Al-Najjar • Edited

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

Collapse
 
flrichar profile image
Fred Richards

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

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀

This

Thread Thread
 
timjkstrickland profile image
Tim JK Strickland

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

Thread Thread
 
190245 profile image
Dave

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.

Thread Thread
 
tuljmdev profile image
tuljmdev

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.

Thread Thread
 
190245 profile image
Dave

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.

Thread Thread
 
sas1ni69 profile image
Hassanin Ahmed

Why would legal send a letter?

Thread Thread
 
v6 profile image
🦄N B🛡 • Edited

...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.

Thread Thread
 
190245 profile image
Dave

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.

Collapse
 
davidmm1707 profile image
David MM👨🏻‍💻

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.

Collapse
 
v6 profile image
🦄N B🛡

...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.

Collapse
 
lociii profile image
Jens Nistler • Edited

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

Collapse
 
yaser profile image
Yaser Al-Najjar • Edited

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.

Collapse
 
lopis profile image
João L.

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...

Thread Thread
 
lociii profile image
Jens Nistler

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.

Collapse
 
190245 profile image
Dave

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.

Thread Thread
 
lociii profile image
Jens Nistler

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.

Collapse
 
ryansmith profile image
Ryan Smith

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.

Thread Thread
 
lociii profile image
Jens Nistler

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.

Thread Thread
 
yaser profile image
Yaser Al-Najjar • Edited

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?

Thread Thread
 
lociii profile image
Jens Nistler • Edited

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.

Collapse
 
squidbe profile image
squidbe

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).

Collapse
 
Sloan, the sloth mascot
Comment deleted
 
qu4ku profile image
kamil wroniewicz • Edited

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

This.

You literally filter for most desperate people.

Collapse
 
kspeakman profile image
Kasey Speakman

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.

Thread Thread
 
lociii profile image
Jens Nistler

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.

Thread Thread
 
crisog profile image
Cristopher Ortega

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.

Thread Thread
 
v6 profile image
🦄N B🛡

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.

Collapse
 
jeikabu profile image
jeikabu

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.

Collapse
 
v6 profile image
🦄N B🛡 • Edited

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.

Collapse
 
v6 profile image
🦄N B🛡 • Edited

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.

Thread Thread
 
lociii profile image
Jens Nistler

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.

Collapse
 
v6 profile image
🦄N B🛡 • Edited

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)?

Thread Thread
 
lociii profile image
Jens Nistler

Sorry but I don't get your proposal.

Thread Thread
 
v6 profile image
🦄N B🛡

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

Collapse
 
190245 profile image
Dave

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.

Collapse
 
peledzohar profile image
Zohar Peled

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.

Collapse
 
davidmm1707 profile image
David MM👨🏻‍💻

Not even in a 3-5 hours window?

Collapse
 
yuripredborskiy profile image
Yuri Predborskiy

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.

Collapse
 
dak425 profile image
Donald Feury • Edited

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.

Collapse
 
afrish profile image
Alex Frishman

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.

Thread Thread
 
dak425 profile image
Donald Feury

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

Thread Thread
 
afrish profile image
Alex Frishman

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

Collapse
 
msk61 profile image
Mohammed El-Afifi

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.

Collapse
 
msk61 profile image
Mohammed El-Afifi

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

Collapse
 
gergelypolonkai profile image
Gergely Polonkai

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.

Collapse
 
alex_v_to profile image
alex_v_to

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.

Collapse
 
karolispx profile image
Karolis Pliauskys

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.

Collapse
 
leob profile image
leob

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.

Collapse
 
dcboddie profile image
David Boddie

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".

Collapse
 
geraldosantos profile image
Geraldo dos Santos

That's amazing.
Sad.
But amazing.

Collapse
 
vusimb313 profile image
vusimb313

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

Collapse
 
guneyozsan profile image
Guney Ozsan

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.

Collapse
 
v6 profile image
🦄N B🛡

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.

Collapse
 
gabriela profile image
Gabi

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.

Collapse
 
miguelguilherme profile image
Miguel Guilherme

Thanks for sharing

Collapse
 
ghersabilell profile image
Bilell Ghersa

l learn from you a lot,

Collapse
 
lmbarr profile image
Luis Miguel

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

Collapse
 
alanmarazzi profile image
Alan

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

Collapse
 
v6 profile image
🦄N B🛡

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.

Collapse
 
anthony_ndegwa profile image
anthony-ndegwa-dev

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.

Collapse
 
ryansmith profile image
Ryan Smith • Edited

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.

Collapse
 
mongopark profile image
Ola' John Ajiboye • Edited

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.

Collapse
 
yaser profile image
Yaser Al-Najjar

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.

Collapse
 
v6 profile image
🦄N B🛡

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.

Collapse
 
iceorfiresite profile image
Ice or Fire

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?

Collapse
 
nathankc profile image
Nathan K. Campbell

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!

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀

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

Thread Thread
 
aarone4 profile image
Aaron Reese

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...)

Collapse
 
mahmoudjbor profile image
MahmoudJbor

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

Collapse
 
ben profile image
Ben Halpern

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.

Collapse
 
v6 profile image
🦄N B🛡

...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.

Collapse
 
orivolfo profile image
Ori Volfovitch

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.

Collapse
 
lmolivera profile image
Lucas Olivera

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.

Collapse
 
dak425 profile image
Donald Feury

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.

Collapse
 
csoneill profile image
Christopher Smith O'Neal

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.

Collapse
 
v6 profile image
🦄N B🛡 • Edited

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.

Collapse
 
nataliedeweerd profile image
𝐍𝐚𝐭𝐚𝐥𝐢𝐞 𝐝𝐞 𝐖𝐞𝐞𝐫𝐝 • Edited

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.

Collapse
 
davidmm1707 profile image
David MM👨🏻‍💻

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.

Collapse
 
theodesp profile image
Theofanis Despoudis • Edited

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.

Collapse
 
smo0f profile image
Rami Girgis • Edited

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.

Collapse
 
aarone4 profile image
Aaron Reese • Edited

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.

Collapse
 
smo0f profile image
Rami Girgis

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?

Some comments may only be visible to logged-in visitors. Sign in to view all comments.