Story Time
Recently, I applied for a job...
I was asked to do this test task:
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:
- If you would like to hear the full story, I've written it into the comments.
Setting The 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:
- 10x Engineer.
- Full Stack DevOps Developer (I'm not kidding!).
- 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:
- 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)
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
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:
Regardless of the task being time consuming (with the absolute idea of having no guarantee to get the job), I thought inside:
So, I started working on it the first day, and I checked whether things are going wrong or not:
And he replied:
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:
Two things came into my mind at that point:
Is he serious? he wants me to fix the implementation as if I was working full-time and getting paid?!
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:
I spent another 4 days fixing the stuff he mentioned (you can see where this has gone too far).
And, I sent him after:
And this was his reply:
Well, that moment I thought whether he is being dodgy or real cuz:
He asked to use Django Rest Framework, with some frontend, and Docker... shouldn't that be complicated by essence?!
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"!
It does sound like you did a lot of free work for them. Maybe they deserve an invoice?
This
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?
Oh god damn this has gotta stop. I mean, I know where the mentality comes from.
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...
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.
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
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:
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.
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:
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.
Exactly, talking about stuff we don't know is just BAD!
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.
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).
This.
You literally filter for most desperate people.
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.
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.
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.
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.
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:
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.
In my opinion, they wanted a full application. Gosh what an interview, you should have invoiced them.
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.
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.
Thanks for sharing
l learn from you a lot,
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
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.
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.
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?
I was explicitly asked to avoid formalities (with a smile emoji):
For the sake of conciseness, I didn't share how I approached the task:
Yeah, there is the "dealing with humans" aspect, which they might be super bad at.
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.
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.
Leveling out in one skill can mean the freedom to ramp up in something more important, or in a meta-skill.
Hi Yaser,
I have 2 comments:
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.
As long as you do your best, and you love what you do, that should be enough.
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.
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.
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.
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.
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.
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?
Some comments may only be visible to logged-in visitors. Sign in to view all comments.