Hacker News new | ask | show | jobs
by onion2k 2539 days ago
The feedback was only that the code was disorganized because all 750 lines were in one file and there was no test automation.

These days a coding test has a pretty standard minimum set of features to get a pass, and they include reasonably well organized code and having some tests. If you're working alone those are less important but as soon as you join a team they're critical.

I really got the impression they didn’t even look at the code or execute it to see if I achieved success or followed instructions.

When I do technical interviews I assume the candidates code works (and it often doesn't, but that's not the point). I review it first, then I see if it meets the acceptance criteria. If your code isn't the sort of code that would be acceptable in the organization it doesn't matter if it works.

I would rather reject a candidate on quality than failing the test. Also, occasionally, if the candidate has made an obvious error that stops their code working but it's clear they write great code I might still recommend making them an offer.

2 comments

I don't want to be argumentative at all. I find what passes at one company doesn't at another and it's generally an interpretation of style that can be conformed to. For example, I am of the leaning that one line should do one thing only, and should be explicit -- which is different then many modern practices. Another example is array manipulation which, depending on the operation modifies in place and I reassign for clarity.

Does that make me a bad engineer? No. It makes me experienced. If any of those things aren't wanted at a future employer I can change to match the style.

To reject based upon that when the style isn't defined by tooling is weeding out great people who may not confirm but have the ability to.

As long as they weed out a high percentage of not very good people, companies accept weeding out some great people as a cost worth paying.
Very true. I have been working at startups for a while as a hiring manager and one of the skill sets I've had to develop is finding good people who have been passed on by FAANG or who come from a non traditional background and never would make it past there filters. Simply because we can't afford the salaries, but still pay six figures to non bay area employees. It's been interesting watching the "I should work for a startup" to "I should work for FAANG" over the past decade.
> It's been interesting watching the "I should work for a startup" to "I should work for FAANG" over the past decade.

I would be interested in your thoughts on this. Is it because of salary, opportunity or security?

I am outside the Bay area.

I think it's do to two reasons: 1) salary at FAANG can be 2-3x what a startup can offer, granted that's in the Bay Area; and 2) there's been more then a few examples of equity not being structured in a way that is beneficial to early employees. Sam Altman even has a blog post that says startup equity needs a revamp.
For example, I am of the leaning that one line should do one thing only, and should be explicit

I agree. And this is actually the very reason why I can dig into a 5 year old, reasonably complex bash script of mine and successfully maintain it.

> When I do technical interviews I assume the candidates code works (and it often doesn't, but that's not the point).

Why is that beside the point? For me, as the candidate, if the evaluation is only subjective nonsense then the more important objective qualities aren’t valued in the exercise and probably in the office. That is a huge turn off to me.

Why is that beside the point?

Outside of interview conditions I expect people to be part of a team, which means they don't have to be able to solve the entire problem on their own. They can (and absolutely should) ask for help and advice from the other team members.

There is never a point in real work where it's all on one person. So the same should be true for candidates doing technical tests. If you demonstrate you can approach a problem well, you can write good code to implement the parts you could solve, but the end result isn't a working test then that's fine. In the real world you'd have had other people around to help with the bit you couldn't do.

But this isn’t outside of interview conditions. In a production environment I would write production quality code.

At any rate now I know for next time precise questions to ask to ensure we aren’t wasting each other’s time. Had I known this before the code test I would have politely excused myself from consideration.

Not sure I understand your point here. You're saying that in a production environment you'll write production quality code, but if you ask about the code style before the technical interview and are told to write production quality code you'll excuse yourself?

That just implies you can't, or can't be bothered, to write high quality code in a technical test. Why would you imagine an employer is going to overlook that and think you'll write better code if you get the job? That makes no sense.

But, I was never asked about code style. I was asked to solve a well defined problem and only graded on unspecified code style.

Code style is subjective nonsense. If it’s that important provide a Schema or lint rules. High quality code solves a problem against a variety of objective measures: performance, complexity, instruction count, portability, and so forth. Things that can be measured with numbers.

The inability to differentiate subjective criteria from objective criteria is extremely immature. You wouldn’t write a contract like this or treat a business partner like this so why would a company treat a candidate for employment like that?

Code style is subjective nonsense.

Some aspects of it are. I don't give a damn about tabs versus spaces, semicolons, etc. A decent code formatter fixes that sort of thing so it doesn't matter.

I absolutely do give a damn about things like breaking code up in to easy-to-grok modules, writing testable blocks, etc. In your response a few posts back you said "The feedback was only that the code was disorganized because all 750 lines were in one file and there was no test automation." That demonstrates to me that you can't write unit testable code, because you didn't write any tests and your code isn't broken up in to units. I can't write tests for a monolithic file like that without importing all of it and potentially getting side effects like prototype poisoning or globally scoped variables. That is a good reason to reject you as a candidate, and why you shouldn't write code that way.