3 ms·
This is fairly common. I've seen the tech tests we receive from potential candidates and they are for the most part appaling. Our technical test is incredibly
by LandR 7y ago
This is fairly common.
I've seen the tech tests we receive from potential candidates and they are for the most part appaling. Our technical test is incredibly simple as well and they can do it at home in their own time.
Imagine something as simple as write a console app where you have a class that represents an Account. Write a function to debit and credit an amount that value and have a property to return the balance and a property to show if the value is negative.
The amount of code we see that looks something like:
public class Account
{
public decimal Balance { get; set; }
public bool IsNegative { get; set; }
public void Debit(decimal amount)
{
Balance = Balance - amount;
if(Balance < 0)
IsNegative = true;
}
public void Credit(decimal amount)
{
Balance = Balance + amount;
if(Balance >= 0)
IsNegative = false;
}
}
In fact we've seen that almost line for line more than once and they get an hour to do it. Worse, we've seen stuff that can't even compile!
I've wanted something harder for a while as a filter and we changed the test to write a very basic WEB API. The tests you get back are equally hopeless.
When you finally get a test that looks somewhat acceptable and they get an interview, they invariably are awful in the interview if you ask them anything other than the most basic of questions.
We are still looking. Getting someone you can give a problem to and they can't be left alone for a reasonable period of time, with minimum of hand holding, and they will come back with a working, implemented solution is so hard.
If these programmers that can't program drop out of the industry, then great. Maybe we will eventually raise the bar for what it means to be a programmer that we will get some decent software.
- nlh 7y agoIt would be helpful for the junior folks among us (and those still learning) if you explained a bit about why that code is so terrible.
- LandR 7y agoSure, Well first off. IsNegative and Balance are idependantly mutable. I could do this: var account = new Account(); account.Balance = 500; account.IsNegative = true; Or var account = new Account(); account.Balance = 500; account.Credit(-600); Now Balance is - 100 and IsNegative is false. Or vice versa for both. I would expect anyone applying for a job that is asking for 5+ years of experience to pick up on something as basic as this.
- dekhn 7y agoThat was your criterion? OK... so you're complaining that the coder could use the api to violate an invariant. I've worked with millions of lines of code and this is certainly not a criterion I'd use to evaluate a serious programmer. Many codes I work with permit this sort of behavior (I guarantee you can mess up using the C library this way).
- dekhn 7y agoI'd like you to articulate why you don't like the code fragment you provided. Does it have a bug (didn't see one on simple inspection)? Is it because the isNegative could be computed at runtime rather than using a boolean flag set when the balance at runtime?
- LandR 7y agoSee: https://news.ycombinator.com/item?id=20778491 https://news.ycombinator.com/item?id=20778491
- commandlinefan 7y ago> We are still looking I’m not quite sure I followed your post, but if I did, you’re still looking because you’re being obnoxious. If you asked somebody to write a class that represents an account with a balance/negative getter _in a job interview setting_, the code you posted looks fairly reasonable (assuming it’s written in a programming language that that compiles in - it’s obviously not Java, C# maybe?). I wouldn’t make “isNegative” a property; I’d replace it with “public bool isNegative { return balance < 0; }”, but otherwise, without any further instruction, again in an artificial job interview setting, without you clarifying what you’re looking for, there’s nothing wrong with this. Or are you pushing back on the “write a command line app” part when there’s no CLI attached? Because if you actually wanted one, you need to provide a lot more context than “write a command line app” (should I be tracking multiple accounts? Should there be a command to create a new one, or is there just one with a starting balance for demo purposes?).
- masteruvpuppetz 7y agoSo what kind of candidates you're looking for? Judging by the example code, seems like you're in finance industry? Can I pm you on this?
- adamredwoods 7y agoIf you're weeding out candidates, then the test is working, no matter how simple you think it is. The correct question is how many applicants are remaining that did this problem successfully? How many from that pool are companies hiring? I wonder what the actual numbers and percentages is.