As a person who came to America legally, as an Immigrant, I seriously do not want this. How is this at all fair to those of us who had to work so hard and wait so long to get in?
Being in the country and using its services isn't free. It's unfair because low (or no) income immigrants are a burden on everyone in the country.
The unfairness is that the bar for participation is being significantly lowered to the point where it risks the social safety nets for everyone. It's unfair to both native citizens and naturalized ones.
Instead of punching down on the literally the most vulnerable people in our society, why don't you direct energy at all the wealth being accumulated at the top? That situation is much more harmful for our social safety net.
I also came to America legally, and that was the second time I legally emigrated from one country to another. As an "experienced immigrant", I've lost count of how many times I've come upon the astonishingly selfish attitude your comment espouses.
Make no mistake, I'm also against completely open borders without deportation, for a variety of reasons. "Fuck you, got mine" is not one of those reasons.
Seeking asylum in America IS legal. What's happened with the Trump admin is they've essentially made traditional routes for seeking asylum nonviable, so people cross the border, and if they get apprehended then instead of being released and assigned a court date like they used to, they're being held indefinitely in concentration camps.
Java is a wildly successful language, and I find the title to be rather clickbait-y in that it attempts to be polarizing for no reason. Original sin implies a failure, and the author (of the blog) discusses a nuanced design choice of the language. It is one the most successful languages I know in terms of adoption and scale (alongside Javascript, C++, and Python).
By what measure, if not this one, can we truly compare languages?
In my experience on services with billions of users - no one knows the whole thing. There are potentially thousands of hops in a roundtrip of a given system from the user to some source of truth and back. The larger companies grow, the more complex these systems get, the higher the load, the more likely we are to see a break. Systems break constantly, recover constantly, and very rarely does the user see it. So perhaps another way to reform this question is - why are the users seeing it now?
My Amazon interview was the most ridiculous experience I have ever had interviewing anywhere. That round I got offers from Facebook (insta), Google (team matching said maps), Uber (eats) and a few others but not Amazon. At Amazon, I pulled out and declined with an email to my recruiter from the lobby of the building at the end of the day. My interviewers were broken up into two categories: Engineers who didn't want to be there, and terrible mid level managers that quizzed me on memorization of their company competencies. One of the managers was clearly reading his questions from a list, and did not care at all about what I had to say. That, combined with the sad office (manager's share a tiny office, everyone else sits in grey cubicles without sunlight), and no food or snacks (it matters) really broke it for me.
All that aside (I am willing to chalk it up to luck, god knows my first (failed) round at trying to get into Google went terribly), Amazon clearly does not compete by hiring the best engineers. Rather, they compete by throwing money at the problem and undercutting everyone else, getting by with mediocre engineering.
> Amazon clearly does not compete by hiring the best engineers. Rather, they compete by throwing money at the problem and undercutting everyone else, getting by with mediocre engineering.
Evidence please. Amazon has a lot of freaking fantastic engineers and "throwing money at the problem" is definitely not how they solve problems.
It's a huge company and not every single engineer is excellent and there are definitely rotten bits but that's true of _every_ company that's large enough.
One of my friends has a saying that is very difficult to translate to English, but a fair translation would be "everyone has different memories of the party". The point is not to use anecdotal evidente as absolute truth.
Maybe a few rounds of interviews with each company could help to paint a better picture. Personally I could say me interviews with Amazon have been some of the most pleasant I had so far, while other companies have arrogant engineers that ask incredibly hard algorithmic problems that you would hardly ever find in real life.
Just because I had one bad interview doesn't mean I should write off the entire company.
I recently had an interview with a 5 day code assignment to build services, perform data transform against several competing requirements, and some other things. I provided lots of code comments, interactive documentation, test data samples, and a detailed readme file about as long as the code to explain how I went about things and how to reproduce my results
The feedback was only that the code was disorganized because all 750 lines were in one file and there was no test automation. 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. Felt like they were just wasting my time.
All my big GitHub projects are on my resume. They could have given me nearly identical feedback by looking over my GitHub projects and not waste either of our time with this ridiculous assignment.
On the upside I view this as a somewhat positive thing because if their developers can’t read code then I probably be miserable there.
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.
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.
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.
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.
> 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.
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?
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.
> 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.
The code is testable. I provide data samples to test against and documentation on forming original new data samples for further testing. This manner of testing is easily automated.
I explained my thoughts on this and various forms of functional testing before receiving the assignment. To me this means they either did not understand test automation or they needed internal unit tests to make sense of the logic even though I provided copious code comments and documentation.
Again, it reaffirms they either cannot read code or didn’t bother evaluating past code style. If I were happy with that level of immaturity I wouldn’t be looking around. I am glad though to have discovered that immaturity during the interview process before leaving my current employer. I just wish they didn’t waste my time with an unnecessary assignment when they could have formed identical conclusions by looking at my GitHub projects specified on my resume and discussed in detail during the prior interview.
My final thoughts then were that they either lied about their conclusions, in that they used code style but really it’s that they cannot read code, or that my time isn’t valued (thus I am not valued).
If you don’t write unit tests on an assignment like that, you’ve pretty much failed. I made the same mistake in a similar situation with a different company. It’s tough because the expectations aren’t spelled out clearly, but unit tests are non negotiable.
[speaking personally, not on behalf of my employer]
I suppose interviewers regularly fail people for less than this but it's just ridiculous I bet if the interviewee is told to add unit tests the majority could and would
It's not a test of skill so much as a test of expectation, hidden expectations are the worse to deal with in an interview
If we're going to wag the testing finger and say always unit tests then why not always generative tests? They'd always test more inputs, why not spin those tests infinitely? Did they test in the repl? why not always mutation testing? why not always integration testing?
I don't think people like to realise that testing is a spectrum of confidence you'll never reach 100% nor should you expect to
Dealing in bullshit absolutes here is stupid, talk to your interviewee about what they could do to ensure their code complies with its intent instead of springing hidden expectations after the fact
I prefer to perform functional tests in my automation, such that you prove the application does what it claims instead of testing the internals to prove a function outputs the right data type. This seems like unnecessary tech debt that can be solved for in smarter ways, like a strongly typed language.
But had they included this as a requirement I would have provided it. I am not in the habit at guessing informal unspecified requirements. If that is an indicator of their internal communication then I suppose I am glad I failed.
> 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. Felt like they were just wasting my time.
I don't know anything about where you interviewed and of course this may not at all be true for them, but bear in mind that the point of home assignments is rarely "does it work?" That the candidate followed instructions and that the project "works" is expected. What many companies are looking for is seeing how you document, how you organize, how you test.
Again, I don't know what happened in your specific case. Just a heads up that writing tests, documenting and writing good commit messages are usually what people look at first when evaluating a home assignment.
All code being in one 750 line file is a bad thing.
It would never pass a code review where I work.
I would not really care if it worked or not and have
the team or developer come back with a broken down
version. (which if the code is structured well inside
a single file should be very fast to accomplish)
Splitting a 750 line file is not a readability improvement, if all the logic is related to and part of a single task.
Splitting code across multiple files when there's no actual reusability or abstraction driving the split makes it harder to follow the flow of logic. In particular, 750 lines is not so much that there's obviously a missing abstraction lurking there.
If your doing competency based interviewing (which Amazon appears to be doing) its on you to demonstrate the competencies.
But it does seem that Amazon's interviewing is not the best - I have worked for places where you had to take and Pass a 2 day residential course before you where allowed to interview candidates.
It's a half day course at Amazon to be an interviewer, followed by a bunch of "shadowing" interviews and phone screens. To be a head interviewer (bar raiser) requires 100+ interviews under your belt, a lot of additional training, and a lot of further shadowing.
The fact is, it takes a certain personality to be really good at interviews. (I suck at it because I like everyone, too optimistic.)
A job interview is a deeply personal process. If you get someone who is disinterested, which you can easily tell if A. They read from a sheet and B. Don't listen when you answer, that says a lot about the company you are interviewing for.
I think you might put a little too much stock into your work-life if you consider a job interview "deeply personal". You're looking for an employer, not a soulmate (and it's not like Amazon is some unknown quantity).
It would have been better worded as "fundamentally personal". I didn't mean it in the sense that you will talk about what your most secret desires are, I meant it in the sense that you as a person need to get a feeling for the kind of culture/people that the company you are interviewing at fosters. You can't do that without any form of personal connection, unless of course that's something you enjoy. All the more power to you in that case, but it's not for me and I think also not for most people.
While many may hate Ruby Rails for whatever reason, Basecamp's way of operating business has been fascinating to me, and DHH has pointed out many obvious flaws in the way today's business operate that no one bothers to speak about it. They have been talking about hiring [1], and more to come in their podcast ( Not sure if that is out yet ).
Based on this, and the consistent theme that seems to run through the rest of your comments, it seems to me that all of these companies could stand to do more to assess the character of their interviewees. Reading this in the most charitable way I can still results in it coming across as arrogant, attention-seeking, and as you've made it to age 22 having experienced no hardship at all.
I am surprised you learned so much about me from my comment! Let me clarify a little: I am significantly older than 22. I had to drop out of university to provide for my ailing parents and to support my sister. I've spent more than a few nights sleeping in my car around the corner from whichever office or university I happened to be attending at the time.
Really? That theme of generosity is notably absent from most of your comments unless they glorify Google. A positive impression of someone is hard to come by if they seem inordinately eager to jump in on threads that paint non-American engineers in a positive light, or that dismiss racial discrimination as a negative thing.
Threads like this made me with HN had a 'verification' system for certain (opt in by poster) posts a la /r/AskHistorians/. If you are not familiar, therein any comment not made by a verified user or not following extremely strict citation guidelines gets deleted.
As long as everyone keep it civilised and learn from each-other I don't really see the point.
When someone posts obvious misinformation he's downvoted to oblivion fairly quickly, and when someone makes an honest mistake he's corrected by people who know better and hopefully update his views adequately.
"What if somebody honestly posts compelling, non-obvious misinformation? How confident are you that would be corrected?"
My hopeful attitude is that none of us are so fragile and gratuitously impressionable that this would be dangerous.
My further hope is that anyone that might be so impacted would incorporate the digestion and (eventual) repudiation of this information as part of their intellectual maturation process.
My final hope is that we all learn how dangerous and stifling it is to hand over defining and legitemising "truth" to others. You need to learn and grow as an intellectual being and that doesn't come in a hothouse protected from all perturbations.
Please provide scientific proof in the form of peer reviewed research or delete your comment. There is no room for these kinds of wild and ridiculous statements without proof.
> Please provide scientific proof in the form of peer reviewed research or delete your comment.
I want to caution against this kind of gatekeeping on a forum like Hacker News.
We all adore the scientific method; nobody wants to dispute its worth and value to the species.
However,
1) As we've seen again and again in a wide array of fields, many of the systems of peer-review have failed to guarantee (or in some cases even provide reasonable assurance) that the results are robust and true. There is an ongoing replicability crisis in a number of fields, including health-related fields.
2) There is still value in logical assertions made without scientific proof; there is nothing wrong with taking personal observation and applying inductive reasoning as part of the toolchain of decision making.
> There is no room for these kinds of wild and ridiculous statements without proof.
I don't find anything wild or ridiculous inherent in the suggestion that the human body is capable of basic self-maintenance, nor that exposure to pathogens or other undesirables is a causal factor in the building of immunity and other defenses.
People can point to epistemology all they want, but from a practical perspective bunk is bunk and if you insist on rigorously refuting every crackpot you come across, your community will be overloaded by bunk.
Bic Camera in Japan at one point used it as their "point" system. Unfortunately you had to have one of their wallets, but essentially if you bought stuff with them and you had registered for the bitcoin rewards, they would give you some bitcoins. You could also transfer your own bitcoins into the wallet. You could then buy stuff at the store with it at some nominal rate. I thought about buying a computer with bitcoins because when you could still mine with CPUs, I heated my apartment mining bitcoins (then I lost interest ;-) ). Honestly, this is exactly the kind of thing I was hoping bitcoin would turn into. When Japan outlawed crypto currencies, the Bic Camera thing disappeared (or it's possible it disappeared earlier... I wasn't paying much attention).
I see you choose on completely ignoring the Tether fraud and those that came before that makes Bitcoin's price entirely artificial and way higher than it should.
An alternative form of payment in countries with hyperinflated currencies, a means to make fast international payments (far faster than Swift), an investment (debatable) vehicle that exists outside the control of the finance sector, certainly an upward social mobility tool for many miners in developing countries, and a general store of wealth vehicle (in no way different to gold in this regard).
How is all of this possible when the network is barely able to support half dozen transactions a second? It's not even enough to cover one shopping mall, let alone some "countries" or the whole planet.
I didn't say it could run a country's currency supply. I said it was an alternative to a country's hyperinflated currency, and it would be one of many. What normally happens on the ground in such a situation is that the average person will use an array of different currencies that are accepted in their environment in order to make up for the country's standard (so in Zimbabwe for example, people will use a mix of the USD, ZAR and a number of other currencies in their day-to-day lives).
Bitcoin is just another alternative. Yes you're not buying a loaf of bread at the corner store with it, but it's definitely useable (and is used) for other types of payments.