Programmer Moneyball (2016)
danluu.com
danluu.com
This is why we stopped hiring based on resume and just use it as a conversational piece to figure out if the candidate can be coached or not. We don't give much of a shit what you currently know as a prospective employee. We care about how fast you could learn new things that we haven't even thought of yet.
Yet, when [the usual suspect] companies are hiring, they back a truck up to Stanford and just shovel new grads onto it. Or their automated filters (that desperately try to get the candidate flow from 6,000 to 6) eliminate anyone that doesn't have a narrowly defined "right background".
Better to just look for things like: grit, coachability/potential, focus, ability to reason about things across many orders of magnitude, ability keep a lot of aspects of a complex system visualized, and generally whether they can understand problems and come up with solutions. None of these involve playing "algorithm gotcha" or solving leetcode puzzles.
EDIT: Easier said than done, though. I don't have a practical solution to how to do this with a multi-thousand candidate flow for each job posting.
If you want to hire 100 people then using "Got into Stanford and didn't flunk out" is a fairly cheap filter to approximate these things.
https://www.usnews.com/education/best-colleges/articles/how-...
I've scouted smaller/less known schools with great CS programs, so it definitely can be done.
I know enough French to be dangerous so they sent me to the Polytechniques (Montreal, Paris, Swiss...) and got a great signal to noise ratio there. But it's a plane ride instead of an Uber...
> Better to just look for things like: grit, coachability/potential, focus, ability to reason about things across many orders of magnitude, ability keep a lot of aspects of a complex system visualized, and generally whether they can understand problems and come up with solutions. None of these involve playing "algorithm gotcha" or solving leetcode puzzles.
A degree from a solid school is a good predictor of that.
Algo questions are used because it's a common vocabulary, everyone who matters just knows this stuff and it's possible to solve a problem in 45 minutes (vs giving a 2hour+ take home assignment). And it's really good at spotting people who, no matter how long you give them, won't be able to write a single line of code.
Are you accurately able to determine that in a conversation that lasts less than an hour? If so, I am really curious how.
I tutored people for years in college and I don't recall my first impressions being all that accurate. Accuracy would be even worse if I also had to guess the speed at which they would learn.
In this case, the author argues what Billy Beane argued, "if we think like the Yankees in here, we will lose to them out there." If non-FAANG companies compete for the same prospective employees as FAANG employees, they will lose to vastly superior compensation packages. Fair enough.
So the question, which traits are analogous to on-base-percentage? Take the FAANG-hire-resume, then subtract features (e.g. lose the top-10 university credential, remove a couple years of experience, ditch the years with a trendy package, etc). Which decreases the hiring cost the most with the smallest loss of long-term value to the hiring company? What data set would track/measure this and what could be deployed as a proxy?
Already this part is unclear. Baseball is different in another important respect: You have no choice about what you're doing. The Yankees, the As, anybody - is hiring you as, say, a pitcher. That's what you're good at, that's what you're doing.
But I chose to work where I do now, for far less money (the people hiring weren't sure but they suspected the previous salary I listed, which was true, was more than the head of their entire 100+ person department, several steps above me on the hierarchy) because of what I do.
What I do here makes a difference I care about, whereas say, working at an investment bank (as one of my ex-Google friends does) would not do anything except make rich people even richer.
If you're a big deal maybe you can carve a niche so that whoever it is that hires you, they're really hiring you to do whatever it is you do anyway. I can't imagine Bjarne Stroustrup feels what he does (at ms.com ie Morgan Stanley) is mostly about making rich people richer, Morgan Stanley presumably mostly lets him get on with C++ stuff. Likewise hiring Linus Torvalds wouldn't redirect him from working on Linux. If that was going to happen it would have happened a decade or more ago.
But for most of us in programming, where we work dictates what we do, and that influences whether I want a role I'm offered or not.
Software tools including programming languages and something like an operating system have transformative applications.
Otherwise agree with what you say - some set math of Successful_Employee_Characteristics - What_FAANG_values, recalculated every couple of years, is how I would summarize the strategy.
The other question is: Why not simply match FAANG comp package by raising more money?
I'm being 100% serious here. Software is pretty much the only field which can scale almost infinitely and the only cost really is compensation (Compared to salaries, MacBooks are almost free!). Think about it, 3x comp to get a 10x engineer? Worth it.
I mean I would take that as a pretty good ironic comment - I would definitely need a lot more context for me to decide that the person who said it meant it for real.
That is to say there are some viewpoints that can be held by real people, for example that the earth is flat, but if someone says in a passing comment "I've decided to cancel that vacation to Indonesia because I don't want to fall off the edge of the world where the sea monsters dwell" it is more reasonable to suppose it facetious until we get enough data to figure no, they're just nuts!
Whether the original commenter quoted by the author of this article (that quote should be proceeded by >> above, to make that clear) meant it in jest or not doesn’t change the fact that employers actually judge candidates with this exact criteria every day.
(Edit: clarity)
Yes, of course. But the thing that ends up hurting a lot of people in a really deep way is the psychological hangs-ups caused when they conflate THEIR OWN self-worth to their employment status (not just employed or not, but also level and salary).
Any adult who has a solid self-image can tolerate hearing "you've failed as a human being" from derps all day long, what ends up causing damage is if they take it seriously, or much worse, tell it to themselves.
Part of why I'm in counseling is that I recognized this, and I want to change it.
I hate to say it, though, but I think the sort of person that would say something like that is the sort of person I have been for the better part of the last decade. I defined myself so strongly by my job, and what I did, that I probably would have seen it as a huge personal and moral failing to be fired.
I pity the person who said that. (Not nearly as much as I pity the person who heard that. What a shite thing to say to a friend, or even an acquaintance!) That's no excuse for that level of unkindness, but I think I see the worst parts of my personal history in what would drive someone to say something like that. I hope they see that, and I hope they are inspired to change when they recognize it.
But maybe I just think that is the more likely because I can totally see myself saying that ironically.
on edit: I probably don't sound caring enough but I have a hard time doing that, so believe me I am glad you do not have this problem anymore since it sounds pretty bad.
If it's people talking about other people, without the emotional baggage, then I agree, it must be either irony or some evil one trying to control people.
If you do either of those things, absolutely fine, you have your reasons, but theres a certain kind of person who wears it like a badge of honour and will jump at the chance to tell you about it.
Not that I think they're bad people for it, just very odd, and not really someone I'd like to be.
https://www.youtube.com/watch?v=fTjhHrcyiQI
TL;DW: "We're professionals, treat me like a professional. If it's not working out, say so, and I'll make it right or we'll shake hands and part ways on good terms". I used to provide clients with a "how to fire me" document because it made them feel comfortable hiring me in the first place. (Tell me, I return materials, pay me outstanding balances, here's the keys you change, here's how we wrap up the contract terms, etc etc)
I've been "fired" a bunch of times, and at times have had those same clients that "fired" me refer me to new clients. It's the same as with most technical work, I find: if you're not failing at least sometimes, you're not pushing the limits of what is possible.
if you copy Google/Facebook hiring strategies and make a bad hire, people can defend themselves. most people aren't willing to put themselves on the line by trying to revamp the entire company hiring process or trying something new
It will only change when some new startup leverages this to get top tier talent and then becomes successful. Incidentally, this was how the current hiring practices became mainstream. Google/Facebook used algo questions while Microsoft was still doing brain teasers
1. Go to a programming boot camp. Language is immaterial and it should be no longer than one month maximum.
2. Teach yourself ReactJS using YouTube videos over the next two weeks. Double down on your really worthless programming experience from step 1 to get a feel for declarative OOP to fill the gaps in JSX.
3. Learn to setup an automation environment using Docker, Kubernetes, and some popular noSQL DB.
4. Do any side hustles as necessary to pad out a resume.
5. Money.
I never mentioned CSS or git. You have to know CSS and won’t be able to fake this. Dabble in CSS here and there in the browser dev tools during those other steps. For git open a GitHub account and go through some basic git commands once a week.
Everything else is practically irrelevant to attaining employment. You don’t need to be good at programming. At most places accessibility is extracurricular and they won’t let you touch security considerations.
- Where to write code
- How does a webpage actually work
- How webpages and other stuff get served
- How does the terminal work
- What does a compiler do
- What is a syntax error
- How scope works
- How functions and abstraction work (this one is often a huge mindfuck)
Then there’s the CSS and git stuff you mentioned. Beginners often find CSS super frustrating. The tutorials from different years recommend different things, and I occasionally find people trying to build pages using weird combos like position and grid or floats and flexbox. And then there’s git, which has a huge learning curve and is very difficult to pick up without someone to tell you “you’re trying to do this? Here’s what the command is called”.
In the end, even if you can figure all this stuff out that quickly (again, starting from zero) you’re going to be starting as a junior dev (You won’t be passing any tough technical interviews) and unless you’re in the bay area there’s no way you’ll be making close to six figures. And finally:
> you don’t need to be good at programming
If I smell this attitude on someone, I’m not hiring them. If someone is new, applying as a junior, and is willing to learn, that’s fine. But when I hire someone junior, I know I’m going to have to do a lot of work to train them up and fix their stuff as they get acclimated to working in software. And if they don’t follow directions, learn from their mistakes, or show a desire to improve because they’ve internalized the mindset that “you don’t need to be good at programming”, I’m going to be quite disappointed in them.
> If I smell this attitude on someone, I’m not hiring them.
I don't think you have worked with the web in a professional capacity. Greater than 90% of the people doing this work now have no idea where the nuts and bolts actually go. They know they cannot do their jobs without some sort of framework to do most of it for them. They also know they need half a million NPM packages to left pad 3 lines of text and writing the equivalent functionality themselves is emotional torture (its like child abuse, except these are adults).
While this attitude comes across as code smell it is the industry norm. The unfortunate conclusion there is that it makes life substantially harder for people who are experienced and prefer to not operate in ways you might refer to as code smell.
Your comment comes across like someone who has read a lot of HN comments, mixed it with an anecdote or two heard from friends at a bar, and is trying to pass it off as industry experience. And yeah, if you believe HN comments, then everyone is making six figures (but somehow also contribute no value), things like docker are easy to learn and require no skill (because folks here learned them easily after having years of software development experience) and npm users pull in packages for string operations (something that was true years ago, is still occasionally true in open source, but is not true in most shops I’ve worked in).
Believe it or not, my current client does code reviews, mandates 85% unit test coverage, and tests in all the major browsers. And if anything doesn’t pass muster, even small visual defects, it gets kicked back and is not merged. When I talk to the people I meet at JS meetups, their workplaces are not all the same, but they’re usually similar.
It really doesn't take much in this technology space to be a 10x (or much more) developer. It really boils down to don't do stupid things and don't wait for dependencies to do your job for you.
I have seen first hand at multiple places that web dev is extremely fashion driven and half-assed code are passed off as industry best practice.
Moreover even without knowing the internals at workplaces, I can see typical websites are slow, buggy, crappy so even if best code, it does not mean much to me as a user.
The same is true when you're experienced -- programmers often say that programming is easy, which is because _syntax_ is often easy. It's the mechanics of how everything fits together that is difficult, and is often overlooked as a concept.
I didnt follow this exact path but while "have a skill set people will pay for and know how to negotiate" is a drastic over simplification it is possible and realistic.
They're almost as useless as "CyberSecurity" graduates.
Generalizing here, of course.
Hey, I went to one of those! Definitely going to steal that.
I also agree that a varying percentage of graduates from any reputable school are top notch. Many go to State U or State Tech because it's what they can afford, their friends went there, it's within driving distance of their home, or they like Big10 football.
I have heard this more than once myself (often phrased as “help me understand the common thread”. Short-sighted idiocy. I may not be the right candidate, but someone with more narrow experience is likely to over fit.
In my current work it turns out I may be one of the few in the world with experience in most of the key areas we need. As the famous quote goes: you can only tell by connecting the dots backwards.
In the games industry at least, some of the brightest folks go through a contracting phase - either to work on stuff they like more, to bootstrap their own project or just out of cynicism about the industry.
We hire contractors to be a pool of labor for clearly defined and menial tasks that would be a waste of FTE time.
We Only Hire the Trendiest (2016) - https://news.ycombinator.com/item?id=21771325 - Dec 2019 (404 comments)
We only hire the best means we only hire the trendiest (2016) - https://news.ycombinator.com/item?id=15591441 - Oct 2017 (625 comments)
We only hire the trendiest - https://news.ycombinator.com/item?id=11326940 - March 2016 (716 comments)
>He eventually got a job at Cloudflare, was half of the team that wrote their DNS, and is now one of the world's experts on DDoS mitigation for companies that don't have infinite resources. That guy wasn't even a networking person before he joined Cloudflare. He's a brilliant generalist who's created everything from a widely used JavaScript library to one of the coolest toy systems projects I've ever seen.
But is this just another example of “the market can stay irrational longer than you can stay solvent”, meaning, is there a severe mis-allocation of capital into building large, expensive, inefficient software engineering organizations? If so, why is the market not “correcting” for this?
The way I look at it, these companies are telling you how to play the game. All you have to do is play it and you’ll make quite an impressive amount of money. Maybe C# is just as good a language as Ruby, but if Ruby pays twice as much I’m learning Ruby. (As it happens I’ve worked in both, and Ruby paid WAY more than double.)
There’s a difference between some noumenal, pure engineering and having a career in this industry. I can’t think of an industry that isn’t like that, frankly. Whoever is #1 on Spotify right now is not the most technically accomplished musician in the world.