Why am I worried? Because if you're a competent programmer you can spend 3-months to a year studying for these interviews and make $200k+ in TC. You don't need a degree or even much work experience to achieve this.
You don't have to come from an ivy league school or have powerful connections, you simply need to understand a few common leetcode patterns and system design.
If you can understand for loops, variable reassignment, objects & arrays, and some other unique operators like modulo or booleans you can likely answer 70% of LC type questions. That's an extremely low bar, and all it takes is dedicated practice.
Even if you don't want to leetcode, there are still plenty of well paying jobs that pay more than the average household income whose barrier to entry is even lower.
What other job or industry honestly has this option? I honestly feel like software develop is the truly last "middle class" industry (if salaries kept pace in other jobs for the last 40 years).
The low barrier to entry is one the greatest things about programming. I don't have a CS degree, but for a while I spent some time actively studying data structures and algorithms on my own (and solving hundreds of programming problems at "online judge"-type sites like SPOJ; it's fun!). I don't feel in any way "inferior" to people with a degree.
I did the same thing, but I do feel inferior to degreed folks. Not skill-wise; I know people are all over the board with their skill level. It comes down to this statement: "I have two candidates who are equal in every way except candidate A never finished college. Candidate B gets hired!"
Going this route you have to be better than everyone else with a degree: If you're not, the person with the degree will win, every time. I did this with personal projects/passion/odd jobs, and now with a decade of work experience as an engineer.
Sometimes I want to finish my degree (I got an associates, so 1/2 way there!) but the ROI doesn't make sense with school being so expensive. My big fear is that I'll never get hired after this job because there are lots of qualified candidates who went to school, and I just don't stack up.
EDIT: It's also affected my willingness to change jobs, confidence in myself, and as a result my salary. I make $120K/yr in a high COLA. If you're reading this as a youngster: GO TO COLLEGE AND FINISH IT!
I've literally never seen a decision being made on the basis of having a degree. This might still happen in very small companies, but the industry as a whole doesn't care much about degrees when it comes to the hiring stage.
The thing the degree buys you is getting in front of the hiring people in the first place, if you don't have any work experience.
So, if you don't have any, yes: GO TO COLLEGE AND FINISH IT. (Don't worry too much if it's not Stanford, or Berkeley, or MIT, or whatnot - but get that degree. It's a shibboleth)
But if you've gotten past that point (like OP has) - you now have experience. That's incredibly valuable, especially right now. I'd suggest you interview. (The market is extremely generous right now). Don't sweat the degree or lack thereof.
> Going this route you have to be better than everyone else with a degree: If you're not, the person with the degree will win, every time.
> [snip] My big fear is that I'll never get hired after this job because there are lots of qualified candidates who went to school, and I just don't stack up.
Oh boy, this resonates so strongly with me. I even have actual proof that the opposite is true (when I asked about other candidates at my first "real" job while I was still in college, my boss said they hired me over people with a degree because of my github), I still felt this way!! In the end, I ended up finishing my degree not because it made me more intrinsically valuable or a 10x rockstar code god, but because of that exact fear you're talking about. I wish I was the kind of person who didn't have to do that.
This never, ever, ever, ever happens. It's a complete non-story.
While I don't feel inferior to them either, I think people with degrees have two major advantages.
1. They are pre-selected.
The ability and means to get into good schools and finish courses are powerful signals. It may or may not translate into competence but it certainly means something. People generally have positive perceptions.
2. They network.
Students are surrounded by like-minded peers, professors. Knowing these people personally can and often does make all the difference in the world. Sometimes people start companies together. Sometimes people recommend others they know personally and they get a job. Sometimes companies will recruit only from top schools.
I got the impression that the lack of formal education (in CS) left me with a gap in background information which I only partly closed over the years.
I bet a lot of folks here won't want to hear this, but we really are vastly overpaid for what we do.
Everywhere I've worked, and I mean everywhere, there's a lot of frankly bad practices that are bad for users and create bullshit work for everyone involved. Just because you've installed a bunch of linters, have 80%+ coverage, and use Code Climate does not mean that your code isn't fundamentally flawed and a liability.
I do think this stems largely from there being effectively no credentials required to be a software engineer. Whether or not your code is "good" mostly depends on your title, seniority, and social clout. If the software breaks, you just keep fixing it and you look like a hero because you're constantly opening and closing Jira tickets. Junior developers learn to code without bothering to consider the philosophy, history, and discipline of code.
It's all just to "get shit done", and there's consequences to this. Things are written to not be accessible, and if they are written poorly then it can be difficult to implement accessibility, thus many are cut out of participation. People's account data and credentials get exposed. Countless millions of $ are spent deciphering code written by people who believe their shit doesn't stink (the code documents itself bruh), and countless hours of lifetime are depleted. People are outright ripped off when companies release software, namely games, that are written atrociously.
Do we really need this many engineers to write GUIs around databases? I seriously question this. Should we really get paid this much for a job where we can be inefficient with almost no consequence?
I argue that we should have standardized accreditation.
How we would implement it, I don't really know. The obvious counterargument is how bass-ackwards many college computer science and programming courses are.
Yeah, coz this view is driven largely by the just world fallacy. Either that or the perplexing idea that quality of life is driven by iphone ownership and cheap clothes rather than availability of medical care, education and a roof over your head.
The fact that education, home ownership and medical care are still reasonably priced compared to our incomes but almost nobody else's while wealth inequality has taken off like a rocket suggests that it is most other professions that are underpaid - not us who are overpaid.
The fact that our incomes kept up with productivity while median incomes decoupled in 1981 suggests likewise.
I'm shopping for houses not quite as good as what my teacher parents were 40 years ago and I'm in the top 2% of incomes while they were a bit above average.
Yeah, how dare I have a viewpoint. Goodness gracious.
> The fact that education, home ownership and medical care are reasonably priced compared to our incomes but nobody else's while wealth inequality has taken off like a rocket suggests that it is most other professions that are underpaid - not us who are overpaid.
Both can be true at the same time. In my personal opinion, if a lot of common practices seen in the software industry went away, the cushiness of our jobs would be glaringly obvious. Did you not see that my point is that I witness us creating busywork for ourselves? If it could be measured and validated that my experience matches reality, what would be the argument for being paid this much?
And yes, I know that different parts of the world pay engineers differently. I can only really comment on how engineers in much of the United States are paid.
If I can't call out work for being shoddy and excessive, then that kind of proves my point. Why should I get paid more than other jobs that require more skill despite if my work is garbage?
> The fact that education, home ownership and medical care are reasonably priced compared to our incomes
Come again? I wouldn't call any of those things reasonably priced even at my income.
To me that says underpaid.
Personally, I can afford them. I'd say that makes me middle class. Most of my friends cannot. They are assuredly not.
In the 1950s these things were available on a non-college degree wage.
I could certainly afford a home. Would it provide the same value that a home did to my ancestors? Probably not. It wouldn't be a good use of my wealth at this time.
> In the 1950s these things were available on a non-college degree wage.
Yet I am being underpaid? Sure, technically speaking, we are all underpaid if you compare things like workforce participation to wages and CPI. None of that really undermines my point that I don't think we should be paid as much as we are for the quality of work we are producing.
You don't have to like it or agree, but no, I refuse to believe that I'm a bad guy for concluding that there's a racket-like quality to the software industry. In politics there are clubs where political performance has little bearing on the distribution of wealth, so why would any other industry necessarily be different?
Except it does...?
Just saying it doesn't doesn't make it true.
>You don't have to like it or agree, but no, I refuse to believe that I'm a bad guy for concluding that there's a racket-like quality to the software industry.
Software engineering isn't a racket.
The reason we're paid middle class wages (unlike, say, teachers) is because:
A) capital controls the stocks and flows of most society's wealth and because
B) we can potentially trigger large increases to productivity so the ceiling on our value add is very very high.
C) there are not enough experienced programmers to satisfy capital's insatiable demand for automation.
These things are relative to one another. The way you present your case that we are all underpaid is very absolutist and lacks the nuance that someone can be underpaid in the grand scheme but overpaid at a smaller scale.
> The reason we're paid middle class wages (unlike, say, teachers) is because:
I don't really have the time to adequately address every one of those reasons, so all I have to say is that if economics were that straight forward and honest then we'd have a lot more millionaires and billionaires. At best, reason B is true absent any sort of incompetence or meaningful quality-control around production. When you consider how the revenue of many companies is not tightly coupled with productivity and profits, your perspective doesn't seem to add up.
I didn't really disagree that "underpaid/overpaid is relative", I just used a different default frame of reference to you. One that made you angry I guess?
> and lacks the nuance that someone can be underpaid in the grand scheme but overpaid at a smaller scale.
This point sounds horribly confused to me. Earlier you said we are all vastly overpaid. Now we are both underpaid and overpaid? Depending on the scale of... something?
>I don't really have the time to adequately address every one of those reasons, so all I have to say is that if economics were that straight forward and honest then we'd have a lot more millionaires and billionaires.
I really have no idea what you're getting at here. It doesn't make any sense to me.
it's a mistake to think that degree of skill is or should be the only input to compensation. whether the skill is actually useful to other people is at least as important. there is still a lot of low-hanging fruit in software. even a mediocre engineer who messes up a lot of stuff can still provide a lot of value. I think that's likely to end given enough time, but for now, it's reality.
also as an aside, I think it is easy to forget that software is actually kind of challenging when you're surrounded by other people that do it as a full-time job. it's not rocket science or open-heart surgery, but when I help my friends who are trying to break into software without much tech background, I realize there is a lot of knowledge I take for granted.
I’ve been in those shops that “consider the philosophy, history and discipline of code”. Your counterparts in those organizations? They’re ranting against the waste they see going on.
The reality is more nuanced. If you were handed a multi-thousand developer organization, business goals, and a fixed budget by the BoD via the CEO and CIO, your theories of “how it should be” won’t make it past the first fiscal quarter.
This is the next level awareness of what Brooks meant by “no silver bullet”. He wasn’t just talking about coding tooling, he also meant these kinds of diatribes we all evolve through in our career.
We aren’t paid to only cut code. We’re paid to help deliver an outcome. Outcomes at the business level are not evaluated by the same criteria you personally use, despite what your immediate business liaisons tell you; you need the C-to-upper-management perspective to start to understand the real decision factors. Before you make assumptions about companies not knowing at industry aggregates level how to pay developers, first go manage a multi-hundred to multi-thousand person engineering organization with balance sheet and P/L LOB insight into their real impact as crunched by the finance wonks. Then you’d know the real cost benefit you currently assume the finance people in aggregate don’t know.
We absolutely can and must do better as an industry, and I see us every month making incremental progress (this is much more difficult to see in the first half of your career because you struggle to get a feel for what is and isn’t progress that business cares about). That doesn’t preclude us from obtaining useful outcomes given prevailing conditions (including pay as a very small factor).
I highly disagree. I think everyone else is underpaid.
Will not explain further because i don't think discussions are allowed to get more political than that here.
Seems absolutely terrible to attack the smaller fish compared to the truly 0.01%. Especially when the billionaires are directly influencing the country.
Let me know when a staff engineer at Twilio or Square is able to influence the media people consume, and I might feign worry.
At least at the tech co where I work in ML, every single one of my peers has a PhD and while I don't, I went to Harvard.
But I think it has direct relevance to the GP comment.
Making it impossible for the employer to know that detail would also incentivize all the schools to provide a good education. Also many top universities are mostly about making connections. While their curriculum is usually very hard, this is also reflected in the grades.. people may still pass but their average drops.
In the US it's even worse, because tuition has to be paid. This already filters out many people from going to a "more elite" school.
That said, I can understand the impulse unless you want to be called "Mr. Harvard" every time you do some dumb shit in the office.
So I guess Harvard wins out! In real life, veganism definitely does though :)
For ML? Well, I do know people who have never taken a formal course in anything above calculus who absolutely do apply these techniques properly and are well versed in how they work. But to understand how k-means clustering works, or how to construct a gradient vector... yeah, this requires multivariable calculus and non-linear optimization across systems of equations. And while you don't need to know how the underlying math works to use kmeans or neural nets, the mathematics is a lot closer to your work.
Under these circumstances, I can see why a lot of companies might just start looking for STEM degrees from known programs in a way they don't really with SEs.
If you have a decade of industry experience, no one cares that you went to some no-name college. It's pretty easy to get callbacks as a senior software developer. But don't mistake that for meaning that educational background is irrelevant. It's far harder to get callbacks if your resume has a bootcamp for education, and no experience. Throw in a felony criminal record, and the job you'll get a Lyft is fixing bicycles for $17/hr. Which isn't a bad job, actually, but it's a far cry from $200k/yr. Meanwhile, someone at an internship at Google or Facebook while working on two degrees from MIT will be making the equivalent to $100k before ever graduating.
Experience matters far more than education, and the software industry isn't some egalitarian ideal, no matter how many millionaires were minted in the 90's and 2000's, and continue to get minted.
The argument that someone could go make their own app and sidestep the need to get a pilot's license is a poor one. If you look at all the shovelware, spyware, and straight up scams on both Apple and Google's app stores, it's clear that there's more to being a successful app developer than writing a good app, and the exceptions there (like Christian Selig) are akin to literal rock stars. Good for them and all, but the rock star's backup singers' names and stories get lost to history, nor do they get the same fame or fortune.
It's like when exceptional black, women candidates are held up as an example of equality. The exceptional candidate isn't the one to ask about, truly exceptional people always bubble up. Where do the average, or lower-than-average candidates (with reasonable educations) end up? How many don't even make it into the field, in a failure-to-launch scenario because they never get that first break that you did?
The Wright brothers never had a pilots license, but who here's heard about Charlie Taylor, their machinist?
To say you only need a certain background to work is horribly misguided. You can be productive in many fields with a wide array of knowledge and education.
I'm not saying a frontend developer can write novel ML algorithms, but surely they can contribute in other capacities (like creating interfaces to work with the novel ML algorithms, which is meaningful in itself and requires new UX paradigms surely).
In the industry, your educational background does matter, especially for the type of firm that asks leetcode questions.
I was not saying you need a certain background to be able to be productive in tech, that is a strawman.
But I would defend that your educational background is a signal (very far from a perfect one) at how productive you would be at knowledge work.
That said, in undergrad for ML, I think some of the more important things are giving you a strong basis in linear algebra, vector calculus, and numerical computing - and I certainly got that there.
I'm not allowed to discuss my specific google interview questions, but I'd say they're similar to some of the harder questions in "cracking the coding interview". On the line of "find all matching subtrees in a binary tree". Remember, you have to do this in 45 minutes, and the impression I got from my feedback is that you need to make substantial coding progress (again, in 45 min at a whiteboard).
That's hardly impossible, but I think it's notably tougher than "loops, variable reassignment, objects & arrays, and some other unique operators like modulo or booleans " There's no way I'd suggest someone go into a google SWE interview with only that prep. I'd say you need to be very sharp on recursion, tree traversal, sorting, set permutations, and a number of other algorithms - and I disagree that you can memorize solutions. You should have them down cold, but you won't be asked to regurgitate them - instead, you will need to be able to think on your feet to figure how these algorithms can be adapted to a variant of a problem you've seen but not quite in the form they're asking about.
But I will say reviewing the graph algorithms hasn't been a complete waste of time. It's good to at least know what they are, what they can do, and what their tradeoffs are. I realize I was a bit fuzzy on these.
It would be different if I were applying at FAANG style companies I'm sure.
Google's interview exams are graded in secret, and you have to sign a non-disclosure to take the exam. I suppose scores for my interview exam are stored in some database somewhere internally at google, along with photographs of the whiteboard at the end of my various 45 minute sessions and notes, but I'm not allowed to know what they are (they're secret).
I'm ok with google doing these interview exams (and fully embrace that it isn't up to me). But I do think that a certain bill of rights between examinee and examiner slowly evolved over the years - one of which is that the people who took the test should get some feedback on how or why they failed or passed, along with a score.
Instead, due in part to fear of lawsuits, you get very vague feedback from a recruiter. Mine was: analyzed the problem well, but didn't make sufficient progress on the coding section in the time allotted. I have no idea if this is true, someone being nice, how much more progress I would have needed to make...
I no longer participate in exams under these conditions, but I'm just one person with zero clout, and with $300k on the line, no, I'm not even slightly surprised that many people will do so.
I know several engineers who are several times smarter than me, who could build basically any application asked of them, who always have trouble finding work because they don't do well with these whiteboard problems. Of course they could study and learn to get good at these problems, but at that point, what exactly are we testing?
I also think these problems are kind of bad for the other direction. When I interviewed at Apple, they gave me typical big-O notation whiteboard problems, I did well enough on them, got an offer, and accepted the job. I just assumed that if they're asking me hard CS theory problems, then there will be a lot of CS theory work at my position there. I was completely wrong about that; the job ended up being extremely bureaucratic and I spent substantially more time replying to emails and attending meetings than I ever did coding, let alone solving interesting problems [1]. I managed to hang on for about two years, but after a certain point I felt that I had had enough and left, and I always felt that I wouldn't have wasted my time if the interview process had more-accurately reflected the actual work I ended up doing.
[1] I think I had a particularly bad experience at Apple, I think other people working there have enjoyed it substantially more than I did. I think it's highly dependent on the team you're on.
However, my concern with whiteboard problems is that there are plenty of people who are really good, but get terrified in a whiteboard situation. And some of the absolute smartest people aren't able to think quickly. That is to say, for most questions, everyone else will get the answer first, but for the hardest questions, nobody else will get the answer at all.
There's limited offer because it's a rare skill, not sure what you mean by "not because of my skills" since your skills are rare hence valuable to the market.
> Thankfully for my mortgage, that hasn't happened yet and probably won't happen soon.
The keyword is "hopefully". This already happened to physicists with nuclear power if I recall my history lectures.
Leetcode doesn't make companies money. They can't tie it to their revenue. Being paid because of my skills means I can walk into an interview, say "I'm a domain expert in X and my last client saved $Y thanks to my expertise when I optimized their Z".
The leetcode analogue is "I'm a fungible engineer, and since your company basically prints money as long as you have enough fungible engineers to keep the ship running, you should hire me"
And I verify that... how?
LC is basically a proxy for being able to pick up random shit quickly, learn how it works, and demonstrate/use that knowledge. The particular knowledge isn't that important. It probably won't be that important at the big tech co - what's more important is how fast you can pick up their novel processes and stack and start getting effective work done.
This is the exact opposite of LeetCode. It proves they've crammed on the front-end of the long tail wave of problems. It shows absolutely nothing about recognizing general problem domains and being able to identify long term solutions.
You're right it has no long term importance. It's just a different, still artificial signaling value.
Personally, and for many people I know, cramming was not necessary because we had a conceptual understanding - maybe a week or two of doing 2-3 a day and you would be set.
Anything you do in an interview is going to be an artificial signaling value. I think LC is a much better signal than the talk-out-your-ass approach you seem to favor, and I've done both sorts of interviews.
The difference is also pretty obvious in the quality of your peers based on what sort of interviews your firm does.
Apologies for being pedantic about word use but that time commitment is longer than what's normally meant by cram. Traditionally a cram would be up to a day or two of hard work before exams. What you outlined would just be study (an even larger barrier).
> Anything you do in an interview is going to be an artificial signaling value. I think LC is a much better signal than the talk-out-your-ass approach you seem to favor, and I've done both sorts of interviews.
I prefer the talk out your ass approach personally, but maybe with a detour to asking the candidate to describe something technically challenging they worked on. If the interviewer is fast their your feet and the candidate is skilled at explaining then you can go reasonably deep. After this the interviewer can usually weigh the talk-out-your-ass claims accordingly.
> The difference is also pretty obvious in the quality of your peers based on what sort of interviews your firm does.
Our firm (fast growing series a startup) struggles with this, so take all of the above with a grain of salt. Our problems seem to be more related to not being able to generate a large enough talent pool, not with inaccuracies cherry picking candidates. We hire about ~25% of genuine applicants and find our main problems post hiring are if they are willing to take initiative and be self directed.
The point of leetcode isn't to find the best engineer, since that's not possible in one day of interviews. It's to find someone who has the thinking skills and is willing to put in the time required to be a great engineer. Cramming being helpful is largely the point, companies want people who are committed to being the best.
If instead you surprise them with it in an interview, they can't do it, and you don't hire them because of it, well, they are the ones that dodged a bullet not you.
I know about third normal form because I learned it from my girlfriends open-on-the-ground textbook in college. It's just not that hard.
Same goes for Leetcode. Anyone can Google how to implement some algorithm, but you won't be told what algorithm to use in your project requirements.
Of course, an interview could just involve getting you to give general descriptions of things instead of implementing them, which would satisfy this to some degree. But then everyone with a bachelors would pass the interviews, so they had to make them more intensive in order to limit the pool further.
Likewise there are plenty of people who have learned database design through a combination of optimizing execution plans and dealing with the practicalities of schema changes. Such people may never have heard the term "Third Normal Form", but will run absolute rings around a college newbie who has. Indeed, in my career I have met at least two people responsible for database design who did know normal forms but did not know about execution plans, or covering indexes for that matter. Or had a nice normal set of tables, and then proceeded to build a reservation system (hit by 100,000+ users when registration opens) that takes a transactional lock on a single row using an ORM. They understood database theory from 1971, but they didn't know what this specific database implementation actually does.
Billions of people have the skills to say that. Being able to say something doesn't mean that you have the skills to do it. And being able to talk about something for a few minutes after that first sentence also doesn't necessarily mean that you have the skills to do it.
If you had an airtight system for assigning credit for performance at companies, and then being able to show evidence of what you did to other companies, then what you are talking about would work. But right now nobody even knows how to properly assess the value of employees they work directly with, being able to assess the value of employees you just heard a few sentences from would be magic.
Seriously. Interview Kickstart recently quoted $8500 for two months to prep for the FAANG exams. The entire session felt like a high-pressure sales pitch from a timeshare salesperson. Here we are SF/SV 2021!
Initiative & leadership are nice, too, if I think I might need a manager in the wings.
Ambition is ok? It’s hard to temper highly ambitious people.
Coding is a mechanical skill you can assess in 5 minutes at the whiteboard during your interview while you look for the important skills.
If this was true, we wouldn't have leetcode style interviews.
> I don’t really understand what a “leet code” interview is?
To me it's the puzzle style questions; or questions you have no way of answering without knowing or being exposed to a certain trick.
There could be an article or analysis written on that subject. What is the pedagogical gap between common CS education (both academic and not) and being able to intuitively leetcode? Students are learning the data structures and algorithms, but perhaps not in a way to approach problems in the same way that leetcode style platforms force them to really utilize that knowledge. Maybe there are problem-solving approaches not being covered?
A survey of the most commonly asked leetcode problems in industry would be illustrative as well. Some questions rely on advance knowledge that aren't really found in academic computer science. What CS course teaches two pointer - isn't that a competitive programming technique?
Agreed. So far what I've observed is that once you understand dynamic programming, memoization and tree traversal you're set to solve a lot of the leetcode style questions. However every once in a while you encounter a question such as "add two binary numbers without using mathematical operators" which essentially expects you to xor two binary numbers and then determine the cary using a shift operator. I'd argue that this is similar to the Mount Fuji question.
You know that already happened? Like 15 years ago was what it looked like before every started practicing, today most people are practicing. If they fail to take your job today then it is because they failed to pass the interviews even with extensive practice.
If the tides shift and big tech starts tightening their belt, leetcode practitioners will start competing 100 engineers for 10 positions at big tech, and that's when salaries get pushed down.
Most books and blogs on professional growth say to have some sort of talent or skill that makes an organization need you. That way, you aren't fungible and have leverage. Right now my "skill" that I demonstrate is leetcode and the only leverage I have is that big tech needs more engineers and have to bid against each other for my fungible work. The moment tides shift, myself and every other leetcode practitioner are basically fucked.
When will this happen? Ask a fortune teller.
Anyone who has taught introductory CS courses at an average public college/university (so, not a huge R1 state flagship) can tell you that getting into programming is not easy. Plenty of students who I would describe as "smart enough" have an incredibly hard time learning how to program.
The bar is a lot higher than most people here seem to believe.
it's already like this just for positions at random software companies paying $80-120k. the percentage of applicants to google that end up getting offers is estimated to be in the low single digits (if not below 1%). and frankly, I suspect big tech companies already hire more engineers than they "need", just to deny them to rising competition.
I don't think you're wrong about the moment that the tides shift, but it seems we are still quite far from that.
Agreed - interview prep is a cottage industry.
It should be worth reflecting and discussing why that is. If tech interviews are not horribly flawed, why is there a small industry of paid prep resources for passing those interviews?
For instance: SAT prep schools, the evidence on private college counselors, etc. - there is little to no evidence these actually have a substantial impact, but people pay for it anyways.
In the adult world, try managed funds. Again, little-to-no evidence that you have any way of knowing ahead of time which of these will beat the market and which will underperform, but people still pay massive fees to get included in an "exclusive" investment fund.
This is a human phenomena, it doesn't mean the selection criteria isn't working - just like the exist of managed funds doesn't mean the stock market isn't working.
The world is full of lots of people, and some proportion of those people will be marks.
Is that true?
https://slate.com/technology/2019/04/sat-prep-courses-do-the...
> Once scholars control for all these factors as best they can, they find that coaching has a positive but small effect: Perhaps 10 or 20 points in total on the SAT, mostly on the math section, according to careful work by Derek Briggs of the University of Colorado Boulder and Ben Domingue of Stanford University.
> A 2010 study led by Ohio State’s Claudia Buchmann and based on the National Education Longitudinal Study found that the use of books, videos, and computer software offers no boost whatsoever, while a private test prep course adds 30 points to your score on average, and the use of a private tutor adds 37.
Also, managed funds are not analogous to interview/test preparation in any way.
10 to 20 points on a 2400 scale (at the time of study) test is not a substantial impact. I also think there are probably test-oriented lurking variables they are not able to capture.
Managed funds also sell you on the idea that you can buy your way into performance, and there is also little evidence that they actually work.
> Let’s assume the effects of short-term coaching are really just a 20- or 30-point jump in students’ scores. That means they ought to be irrelevant to college admissions officers. Briggs found otherwise, however. Analyzing a 2008 survey conducted by the National Association for College Admission Counseling, he noted that one-third of respondents described a jump from 750 to 770 on the math portion of the SAT as having a significant effect on a student’s chances of admissions, and this was true among counselors at more and less selective schools alike. Even a minor score improvement for a high-achieving student, then—and one that falls within the standard measurement error for the test—can make a real difference.
> Compare that with students from families that earn less than $20,000 per year, who have a mean score on the math portion of the SAT around 450. According to the same admissions counselor survey, a 20-point improvement to a score in this range would have no practical meaning for students who are trying to get into more selective schools. Even when it comes to less selective schools, just 20 percent of the counselors said a boost from 430 to 450 would make a difference. In other words, research has debunked the myth that pricey test prep gives a major bump to students’ scores, but it’s also hinted that whatever modest bumps they do provide are more likely to help the people who are already at the top.
======
As for managed funds, they promise to sell performance within an environment composed of many many people. Test prep and interview prep promise to improve performance for individuals. One is about mastery over an external environment, nature. The other is about internal improvement. I don't think promises of personal improvement through coaching, training, or teaching is comparable to promises of gains within a large chaotic unpredictable environment. They're entirely different categories of "buying your way into performance."
But did the SAT prep really help people go from 750 to 770? I'd guess that most of that 20 point jump would be for people who start out at 500 or so, and going from 500 to 520 isn't terribly significant. Fixing the last points is much much harder than the middle, so I really doubt that people at that level would see the same absolute gain as people in the middle.
I don't follow the distinction between market as external environment and college admissions as internal environment. Could you elaborate?
So a third is not statistically important?
> I don't follow the distinction between market as external environment and college admissions as internal environment. Could you elaborate?
It's a very simple point: fund managers claim to have mastery over a vast, complex external environment. Interview and test prep courses, like any sort of pedagogy, claim to teach and coach candidates towards self-improvement. The latter is self-evidently simply more achievable than the former. And even if you were to claim that SAT prep schools make no substantiative improvement for students, what makes interview prep most analogous to those, as opposed to other forms of tutoring, or even personal fitness training, which do yield greater benefits?
I'm just saying it's a lot easier to teach someone how to be better at something than to beat the market. They are completely different endeavors.
This is how everything works. You can get paid a lot for selling a stock that has appreciated (demand for it went up) without having any skills in investing, just luck. You can also be an incredibly talented musician or artist and get no money for it because there's no demand for classical musicians these days (I've seen this happen to every single one of my classical musician friends. They all have to go into teaching or change careers).
To tie it back into the subject of interviewing: If you are interviewing for a PostgreSQL expert, then it will be both harder to find someone who fits the bill and that person will have more leverage to negotiate a better salary. That person knows how few engineers (relative to the total pool) have worked on the PostgreSQL codebase and can explain the internal workings and implementation details and relate it to your projects.
In a hypothetical future where there's 100 engineers for every 10 commodity engineer positions, that PostgreSQL expert position will still be hard to fill.
But that was always the case. Lets say you can save a company millions of dollars by being competent at SQL. Guess what? Any of the millions of people who are competent at SQL could also have saved that company millions of dollars. Why not just hire anyone of those? You are a part of the sea of programmers with similar skills as yourself, that is what you are selling and what companies are buying. So to set yourself apart from the sea of others you show you are smart enough or hard working enough to pass coding interviews, since most of your peers who also know SQL can't pass those.
If you're in software and know the internal workings of Postgres, well that's fine and dandy iff a business decides to use Postgres. Maybe they chose MariaDB or something else arbitrary instead. That highly specialized knowledge you have about Postgres is highly dependent on demand as it always has been. The difference now is that for any given technology, there seem to be a sea of competing options, so the risk of your expert time investment having no demand is quite high. The salaries may be high but I'd argue they're not high enough for the time, effort, and risk to become a specific technology expert anymore. I have expert level knowledge in systems that now have almost no demand. It's a waste of my time to maintain them at this point, the risk and opportunity cost is far far too high.
There was a time when you could become an expert or near expert of about 1-3 competitors for a specific library of infrastructure and those skills were incredibly valuable, highly transferable, and in demand because the pool of competing tech was so low. Now I can't even keep track of number of just say database or database like applications teams may choose to use. There's more diversity than there is demand to justify and sustain the evel of diversity we now have, IMO.
If you wanna get fancy you can throw in a $59/month Coursera Plus sub for those big-name-university math and CS courses. There are some good ones that I think would help people who focus exclusively on LC improve faster and/or get a deeper understanding
Ok, so we are now talking about ~$900 over the course of a year. Even throwing in some a la carte courses from edX, like the Programming Languages sequence from Washington that OSSU recommends, you can now give yourself a thorough and marketable CS education in a couple years of hard work for under $3k. That doesn't sound like a predatory industry....that sounds like excellent progress towards equitable opportunity
P.S. And you can even be a cheapskate and just use the Sedgewick booksites and do the UCSD and Stanford discrete math and algos courses on Coursera and get your interview prep done for a grand total of like $200
P.P.S. The reason you don't need algos in your day to day is because you are not good enough at algos to get a funner, better paying, more impactful job where you do
there are a comically high number of jobs at "prestigious" companies where this is absolutely not true
I ran into a YT channel run by a guy currently employed by FAANG as a hiring manager and selling courses for how to pass his own hiring interviews. With that, plus bootcamps, I think "preparatory industry" is a fair term.
[citation needed]
I don't get it. Is it because I'm not pursuing FAANG? Is it because I'm in Austin instead of SF?
brain surgeon doesn't take USMLE at every job interview.
Can you give a single profession that pays $200k+, isn't a manger job, doesn't have easily tracked metrics like doctor/lawyer, and doesn't have tests like the algorithm interview?
Entry is one part of the puzzle. The actual skill bit hopefully comes into play after you get in, at which point your skill(s) improve your chances to survive / thrive at these companies.
The best CS class I ever took made all previous exams available to us. They also assured us that our exams would only include questions that have appeared before.
The only way to game that was to learn everything. Leetcode exams, especially at places like Google, are effectively the same thing.
This is good because it levels the playing field. Anyone motivated enough to learn the material can break into the career.
It's sometimes possible to game the system by doing hundreds of LC, but it's still hard to beat people for whom it just clicks.
And we tuned it from there to into its own sort of mini-SAT with an accompanying preparatory industry and culture.
I find it as a reminder of my fungibility as an engineer: I get paid absurd sums because of supply and demand, not because of my skills; anybody who can game the leetcode exam (and the architectural diagram quiz and the personality quiz) can walk in and take the same 300k income I have. If enough people do so, wages could be pushed down by employers.
Thankfully for my mortgage, that hasn't happened yet and probably won't happen soon.