Funnily enough this very morning I asked an LLM to implement an algorithm for an NP-hard problem (a variation of the knapsack problem). I gave it 2 directives:
* Do not implement an np solution trying to get the perfect score. Implement a fast solution that gets within x% of optimal
* If a solution seems impossible or it takes too long, return the closes solution you can find, and a warning about the solution being suboptimal
I got the code in a few minutes. On a sample of random inputs, the algorithm produces a solution within 1% of optimal in ~99.9% of the cases. p95 execution time is well below 2ms in my laptop.
That's it, that's everything you need for a production system. "close enough" very fast is sufficient, and the impossible cases very rarely happen. Even when they do, you can simply work around them.
My last job search 2 years ago took me 9 months of grinding while working full time at Big Tech and +15 years of experience. After loops with ~30 companies I ended up with about 6 offers.
The offers were all over the shop. Some places downleveled me to mid level while others upleveled me. The comp range was about 3x between the lowest and the highest.
Also I couldn't find much of a pattern on the processes and outcomes. No name companies rejected my application without even a phone screen. Lower tier companies offered me lower levels while famously hard to crack ones offered me higher levels. I also didn't see much correlation on how hard interviews were.
I'm totally convinced the job market is a numbers game and there is a high degree of randomness and luck involved. Discipline and hard work help, but outcomes are far from guaranteed. Last time I almost didn't leave my job since most offers were worse than my then current one, until I got 2 high quality offers at the end.
I have only skimmed through the article but I'm impressed OP got a job as a Research Engineer with no formal background, given that I got doors slammed even after PhD + years of relevant experience. I don't want to diminish the accomplishment, but I would be very wary of anecdata and formulas for success. OP quit his job and focused 100% on the search, and it paid off. I know many more similar stories that didn't pan out, and people had to rush to get lower quality jobs or, in the worst cases, got into long term unemployment.
I got a Bachelor, Master, and PhD in Computer Science, with a total of 11 years of education. It's the biggest waste of time of my entire life.
As I progress in my professional career I'm more convinced that pretty much everything in tech is on-the-job learning, and universities are little more than a social club. Nowadays you can learn everything you do at university and far more online and for free.
Universities (elite ones particularly) still give you credentials that have some value getting a job. However I wonder for how long that will still be true. Learning by doing and building a portfolio sounds like a better way of getting in the industry today than getting a multi-year degree with nothing or little to show for it.
Nowadays I wouldn't recommend anyone to get a tech degree in a university unless it's a world class one. And even then, I would focus on networking and finding like-minded people rather than necessarily getting good grades.
Computer science is a weird degree because it was meant to produce computer scientists. Theory of computability, graph theory, discrete math, formal logic, etc. But the world just doesn't need as many computer scientists as it needs people who know JavaScript.
Over time, many CS degrees shifted toward producing software engineers, and it sounds like this person's experience was closer to that. But the problem is that as an engineering discipline, software engineering is just profoundly underwhelming. There are basically no universally-respected design best practices, no governing bodies, no calculations of safety limits, no nothing. You grab left-pad from npm and run with that. Or, now, Codex does that for you.
So CS is weird because it's what you're supposed to get if you want a job at Google, but it's also not very useful. It's a very inefficient and expensive way of testing if you're "serious enough", can complete assignments on time, etc.
My day job is relatively boring JavaScript components and SPA's, but even there I find things I learned in my Computer Science degree valuable. "Hey, this looks like a finite state machine.." "This could be a simple domain specific language, good thing I had to write compilers in college and I can easily make a simple lexer/parser.." "This other thing is easy to parse if I ingest it into a lexer-resembling state machine.." And I would think the value of understanding algorithmic complexity and so many other fundamental things is obvious, no matter what someone is doing. And you won't waste your time accidentally trying to solve the Halting problem, among other things. Obviously there's nothing a university can teach you that you couldn't theoretically learn somewhere else but I'm seriously not convinced that a Computer Science degree is useless or a poor signal even for someone doing run of the mill React apps.
I was self taught and went back for a bachelor's after ten years working and then a masters after another four. There was a lot of wasted time in the BS (ie the trade-school-for-programmers classes) but the pure CS has been valuable to me quite regularly as a working developer.
Not every day, maybe not even every month, but I've faced plenty of problems I was well equipped to solve directly because of the formal study of them.
> I had to write compilers in college and I can easily make a simple lexer/parser.
I'm jealous. My university did not make that a core class of our degree. While in hindsight, I wish they did. I did have the luxury of a lot of low-level exposure, which has served to be quite useful at times (digital logic, assembly, etc.).
If I had two SWE candidates with the same genes where one dropped out of high school to build a portfolio of software and the other followed the traditional CS trajectory, then I'd pick the one who "wasted" their time trying to solve the halting problem.
I am biased because I did drop out of high school, yadayada. My career has seen consistently a much steeper incline than nearly all CS graduates I've ever met. Plus, I got to build a bunch of useful and cool stuff, while others were wasting their time studying.
Even for research, a lot of CS papers seem like cosplay.
In the place of hard math, models, proofs, quantitative analysis of past approaches, etc. there is simply an “Architecture” section with much navel gazing. The paper topic is not a formal analysis but merely a description of a thing that was made.
Ironically, the least important part of an engineering research paper is the part describing the thing actually built/simulated. That is merely validation of the theory.
And all the governing bodies are just money scams.
More often than not, it requires a few weeks of mandatory paid "trainings" in order to attempt (and pass) the certifications.
And because IT is IT, no two companies or persons do things in similar ways (and for good reasons, the moment you do like everyone else, you average to the middle at best), and unless you are doing PHD like work, you don't need CS.
> But the problem is that as an engineering discipline, software engineering is just profoundly underwhelming. There are basically no universally-respected design best practices, no governing bodies, no calculations of safety limits, no nothing.
I somewhat disagree: there exist a lot of deep questions in software engineering, and there do exist some (very, very partial) answers.
The problem rather is that most people don't want to listen to and/or do deep literature research about the few answers that we do have, but rather want to aggressively push their private political agenda about how they want software to be built. With some literature research, it is often not too hard to disprove the "foundations" on which this political agenda is built. But this does not make you admired because you showed serious knowledge about software engineering, but rather near to an outlaw.
TLDR: the problem is not software engineering, the problem is organizational politics.
When you say “political“, what do you mean? It’s easy for me to relate to talk of software development aesthetics or philosophy and I’ve certainly had plenty of conversations that I think are accurately described that way. But I can’t think of software development discussions that I’d describe as political (except in the sense that politics is what happens when people disagree on anything).
Might be like, do we build more datacenters whose masters and possessors are all in the oligarch club, or do we build distributed systems that maximize flat power distribution.
I won't try and argue the merits of Bachelor's and Masters. But if you honestly believe that you can pick up the same experience from PhD on the job, then is seems like you learned little from that PhD that you were supposed to and your supervisor failed you. PhD is not about learning content. It's about picking up research independence, confidence, and a strong capacity for critique. It is supposed to be suffering of a special kind, an experience in grinding and radical unproductivity when the problem really is that hard. Maybe you did get that but you aren't using it in your job; if so, then maybe you didn't need that PhD, but that's hardly the fault of the degree.
PhD experiences vary much much more than bachelor's and master's programs that cover a fairly standard set of topics worldwide. PhD depends a lot on your specific topic, the specific supervisor, their other time commitments, their funding situation, how similar the other PhD students' topics are to yours, how hot the topic is or how the hotness changes over your PhD duration, how much teaching you have to do, how hands off the supervisor is (it is extremely common to have extremely disengaged supervisors, even famous ones, likely engagement and fame are anticorrelated), the expected publication venue tiers etc.
In most of Europe, the PhD contains no formal training. It's just what you informally pick up while working with other PhD students, if you do collaborations (depends on whether the supervisor likes that), or from postdocs (if there are postdocs), or from your rare meetings with the supervisor (which are often about updating the supervisor on new developments, not getting much actionable insight from them), but many many are simply left to their own devices and just do stuff and cope with the inevitable rejections, etc. At other places the supervisor organizes things like retreats, internal poster sessions, lots of internal presentations, discussions among the group etc. While in other places there is none of that, in some places many PhD students simply work from home and don't even meet much.
The winning strategy for prolific professors is to get a good early-career reputation, then hire really smart and conscientious applicants (proven through already published papers) and let them carry out the research. It's nothing about training them in any practical way. There are some who do that but it doesn't scale. You have to hire 20 PhD students and they will deliver enough papers for you to preserve your status and be able to hire the smartest applicants again and again.
But again, there's huge variation. Even at good universities.
do you have a phd? did you get it in the last 10 years? because i have one as well and 100% agree with op - it was worthless. and i got mine from a "world class" school too (US T10).
> It's about picking up research independence, confidence, and a strong capacity for critique.
lolol maybe in the days of yore. today it's about pumping out questionable papers that your advisor tells you to pump out and targeting the right conference.
> It is supposed to be suffering of a special kind
are you also one of those people who takes cold plunges every morning? this myth is what perpetuates the same horrible relationships with shit advisors. it's not supposed to be suffering. it's supposed to be challenging. there's an enormous difference.
> an experience in grinding and radical unproductivity when the problem really is that hard
there are no problems like this in academia (at least not CS) because it's absolutely impractical (re graduation, tenure, etc.) to set out tackling problems which are intractable.
in summary: this entire comment is "phd virtue signaling"
Yes, I did get it within the last ten years (with an excellent supervisor fortunately), and I take part in student supervision. I get to talk with the students and determine what is most valuable for them in the long-term. Considering where those students have ended up, and that we still keep in contact, I'd say I've done alright so far.
> today it's about pumping out questionable papers that your advisor tells you to pump out and targeting the right conference.
That's called a garbage supervisor. I'm sorry that was your experience, nobody deserves that. There has been only one student I have personally experienced where I felt some of the papers were questionable, but they were not strong, and should not have done the degree in the first place (unfortunately, I have no choice in the matter and just need to get them through).
> it's not supposed to be suffering. it's supposed to be challenging
Immense challenge is suffering because you encounter failure over and over and over again. Eventually success will come, but the interim is tough on the mental state. No human likes to fail repeatedly, but it is important to experience that at least once in a research career. It only needs to happen for one project; afterwards, the student tends to develop an incredible autonomy because they've been through the worst of it. But of course, this is where the supervisor is supposed to be responsible to find the right balance, since the difficulty of the task needs to be judged to ensure the student can finish it, while being as ambitious as possible within reason. It's pretty difficult to get right, and many supervisors don't even bother, choosing instead to push their own career. To any PhD student out there experiencing that, find another PhD supervisor please, before it is too late.
> there are no problems like this in academia (at least not CS) because it's absolutely impractical (re graduation, tenure, etc.) to set out tackling problems which are intractable.
No, this is precisely what the PhD is supposed to be for. It should be the most challenging topic of your entire early career, or your supervisor wasted your time. You have a handful of years to impress people, so they have to count.
> this entire comment is "phd virtue signaling"
Honestly, it just sounds like you were unfortunate enough to have been in a supervisory relationship where you were used as part of a paper mill. I'm really sorry to hear that; it isn't uncommon, but it isn't what the degree is supposed to be, and it seems you did not experience what you should have. The program doesn't work for everyone, but it does have a purpose, and it is frustrating when selfish academics bastardize that purpose to give this kind of false impression of the degree.
1) my advisor is literally in the top 500 most cited researchers in the world
2) every single other student in systems had the exact same experience
in summary: your "no true scotsman" doesn't work here because by all measures all of these people are the scotsmen.
> Immense challenge is suffering
this is facile - torture is suffering, deprivation is suffering, prison is suffering. immense challenge is ... challenge. stop with the exaggerated language please. stop writing these paeans for research. it's not some ethereal pursuit. for a select few it's a calling. for most it's just a shitty job.
> find another PhD supervisor please, before it is too late.
bro you are so out of touch it's laughable. there are departments full of your so-called "not true advisors". what do you recommend to the students in these departments who are post-quals and are just now discovering the truth? you recommend to them they what? transfer schools? drop out after 2-3 years of reduced earnings? will you compensate them?
> No, this is precisely what the PhD is supposed to be for. It should be the most challenging topic of your entire early career, or your supervisor wasted your time.
again my guy: take a look at literally any top conference and tell me how many papers do truly novel work? as i commented below: i grew up in math where novel work meant a truly original theorem. that kind of quality is 1/1000 in neurips.
> you were used as part of a paper mill
did you catch the part where i attend a US T10? how do you square your assessment with that?
> The program doesn't work for everyone, but it does have a purpose
there is literally no program. you're completely full of shit. there is no "standardized phd". every single department around the world completely makes it up to be whatever they want.
> it is frustrating when selfish academics bastardize that purpose to give this kind of false impression of the degree.
have you looked at the mirror recently? the frustration comes not from the craven/mercenary individuals who admit their cravenness - it comes from gaslighters like you who claim there's some idealized version of it that exists that everyone supposedly falls short of (hint hint: have you ever heard of this convenient concept of original sin?).
EDIT:
> it seems you did not experience what you should have
i got exactly the experience i needed to disabuse me of the illusion that academia was a priesthood in pursuit of truth/knowledge/beauty/whatever. so that was perfect (i will never step foot on another academic campus again and i will warn everyone else off from it too). in addition i got a job in FAANG so that was a nice consolation prize :)
I don't agree that my argument was a "No true Scotsman", since the argument made above (as far as I read it) was that "all PhDs are a waste of time". My counterargument was that the PhD, if done right according to its purpose, is not a waste of time. That is not the same as asserting that all PhDs are going to be good, and then refining the definition.
> i grew up in math where novel work meant a truly original theorem
I am in the math department and work with geometric analysts and combinatorialists, but mostly with CS researchers. I work with math and CS students. My entire education was analysis, then pure probability theory. Just for some context. And while CS has a lot of problems, math does too, unfortunately. A theorem may be original, but that doesn't make the work good.
> bro you are so out of touch it's laughable. there are departments full of your so-called "not true advisors".
Your experience, not mine. Regarding "out of touch": I've supervised across five different universities, all (apparently) in the top 100 worldwide. There has been a quality supervisor in each department I have come across. They may be in the minority, but they exist. They tend to not have many students, because it is virtually impossible to give adequate supervision to more than ~5 students at any one time.
> you recommend to them they what? transfer schools?
I now live in a country where that is easy to do, so yes I do, and yes I have. I have had friends that were "forced" to grind in a bad supervisory relationship for a while until they found another better supervisor and then had a good experience. I understand it is more difficult in a country where you cannot easily transfer. In those cases, I would 100% suggest dropping the degree early before wasting time and money on it, but naturally it depends a lot on their situation. A bad PhD can be a lot worse than no PhD.
> that kind of quality is 1/1000 in neurips.
I've found the proportion is more like 1/100 in the theory domain, but yes, there is a lot of rubbish in NeurIPS. There is a lot of rubbish in every venue.
> attend a US T10
I did a lengthy postdoc at one of these. They are largely paper mills by construction. A top 500 most cited researcher got that way because they run a paper mill. I did not associate with the students there very much, and I doubt that they thrived there either, other than getting a nice item on their CV. On the other hand, that institution benefited me at the time. I'm glad I did my education somewhere else.
> there is literally no program. you're completely full of shit. there is no "standardized phd". every single department around the world completely makes it up to be whatever they want.
Yes, which is why your experience is not necessarily indicative of that of others. That's a good thing.
> the illusion that academia was a priesthood in pursuit of truth/knowledge/beauty/whatever
I won't disagree that academia is a cesspit and I would exit if I felt I had the opportunity to do good elsewhere. I actively do not recommend it to anybody that feels they could do anything else. But there certainly are people that benefit from the PhD, so calling it useless is a bit much.
> have you looked at the mirror recently? the frustration comes not from the craven/mercenary individuals who admit their cravenness - it comes from gaslighters like you who claim there's some idealized version of it that exists that everyone supposedly falls short of (hint hint: have you ever heard of this convenient concept of original sin?).
I love the insinuation that I must be an evil prick. This is tantamount to hearing from a victim that all X are evil. I respect your position and your experiences, but also recognize you do not speak for the entire world in this matter. The bad supervisors tend to excel in their metrics nowadays (including how many students they have), so their perceived presence is disproportional.
> in addition i got a job in FAANG so that was a nice consolation prize
Good for you! If that was always an option, I would question the PhD too. Telling others your own experiences to warn those away from academia is perfectly fine, unless having that degree did help get you to that point. If you honestly know that having the PhD on your CV did nothing at all for you, and did not positively influence your chances, then this is fair, and I would recommend teaching others how they can avoid doing the PhD to get into those roles. Yes, people get FAANG jobs without doing higher education, but was everyone going to take that route? Otherwise, you are in the ivory tower telling others that they shouldn't come in.
> I love the insinuation that I must be an evil prick.
the insinuation is that there is deep, rich, delicious, irony in someone writing this
> The program doesn't work for everyone, but it does have a purpose, and it is frustrating when selfish academics bastardize that purpose to give this kind of false impression of the degree.
after giving everyone reading a false impression of what a PhD is worth. ie you sound extremely selfish yourself when you use phrases like
"Maybe you did get that but you aren't using it in your job; if so, then maybe you didn't need that PhD, but that's hardly the fault of the degree."
and
"PhD is not about learning content. It's about picking up research independence, confidence, and a strong capacity for critique."
and
"No, this is precisely what the PhD is supposed to be for. It should be the most challenging topic of your entire early career, or your supervisor wasted your time. You have a handful of years to impress people, so they have to count."
ie ludicrous absolutist terms.
> Otherwise, you are in the ivory tower telling others that they shouldn't come in.
...are you a native english speaker? the ivory tower is academia. i am emphatically (as i've been emphasizing for 2 hours now) not in the ivory tower and i advocate for everyone to avoid the god forsaken place no matter what.
> Yes, people get FAANG jobs without doing higher education
the vast vast majority of my coworkers have BS/MS. the two best engineers i know (extremely successful ICs) have only a BS. the other PhDs i meet in industry are generally worthless "architects" who can't hack their way out of a paper bag.
EDIT:
it's amazing to me that the conflict of interest here isn't front and center: you're still in academia recruiting students! of course it's critical for you that the dream of academia lives on! if you had any integrity you would have disclaimed your conflict of interest at the outset.
I do have a PhD and agree much more with the parent comment than yours. Granted, my PhD was in math, not CS, so I'm sure the experience was different. For instance:
> there are no problems like this in academia (at least not CS) because it's absolutely impractical (re graduation, tenure, etc.) to set out tackling problems which are intractable.
There's a difference between problems that are intractable and problems that require "grinding and radical unproductivity when the problem really is that hard". Maybe the problems in CS are easier. In math, many of the problems are very much of this flavor, and the point often isn't to solve the original problem but rather to use your investigation into that problem to discover new techniques or more tractable problems that you can solve. Of course, the pace of publication is far slower in math, so I'm sure this is a factor in the choice of problems.
On the other hand, I do mostly agree with this:
> are you also one of those people who takes cold plunges every morning? this myth is what perpetuates the same horrible relationships with shit advisors. it's not supposed to be suffering. it's supposed to be challenging. there's an enormous difference.
Agreed, there should be a difference. Unfortunately, in many modern PhD programs I'm not sure there is much of one....
> Granted, my PhD was in math, not CS, so I'm sure the experience was different
my BS and MS were in (pure) math (my MS thesis is on convergence of the ito integral...) and my PhD is in CS systems. CS outside of theory is worse than an empirical discipline - it's a "throw spaghetti, lasagna, burgers, caesar salad at the wall and see what sticks" discipline. it bears literally no resemblance to math (pure or applied).
> Maybe the problems in CS are easier... Of course, the pace of publication is far slower in math, so I'm sure this is a factor in the choice of problems.
yes and that should tell you everything you need to know - there are kids in my department graduating with 5 first author conference papers (i had "only" 3). how much of those papers do you think is original work really?
I think the biggest thing is most software "engineering" jobs are in no way engineering and are closer to a trade like being a mechanic or (imo) a doctor.
It's fairly rote - you need good judgement and to stay current in latest state of the art but generally speaking you're not researching (nor should you be) cutting edge algorithms or anything.
Add a new button, add some parameters to this analytics call, implement dark mode. These are the things that everyone is doing at their six-figure tech jobs.
and yet, the collective industry has still continued to expand for decades because people overwhelmingly cannot consistently do these tasks without their code collapsing on itself.
imagine if people regularly had tires fall off on their way home from the mechanic. or regularly having to get bones rebroken to set them correctly.
I can agree that much of the work is not true "engineering" but most of what I've seen produced over the years is closer to fraud than anything else.
I echo the sentiment. Most work is described as basic and unimaginative, yet we still have every large company having outages despite employing "the best". Even worse, they game uptime and outages in a way that mirrors gerrymandering.
You already have a lot of replies here and the comment is provably divisive. I'll toss in that while only you can judge whether it was truly a waste of time, a lot of that factors in how you used it. If it benefited you in interview material understanding, increased the probability that you could extend your network with someone, or other somewhat intangible signals then I'd say it wasn't as much of a waste as you say.
I have no degree and that is arguably worse and there are exceedingly fewer people with my background in technology on the coast. On the other hand, I spent a lot of my career writing applications that solved Software Operations problems. I spent a lot of time working in small teams rather than huge ones, I often did not have product or project support. I used to loathe that chapter of my career because of how toilsome it was in my memory. Lately I've come to appreciate it a lot more because I am much more self reliant and I often have the skills and familiarity to run much larger teams as a tenured engineer.
Long way of saying, the value of an experience or thing is often not immediately realized or appreciated.
Same experience. "Is school worth it" is divisive because it speaks to people's investment and value system. I too have a full and successful career in software without any degree largely for the same reason you mentioned: I learned the hard way and continued to show up.
Earned experience is objectively valuable. The problem is people don't want to be fools so "working hard" looks suspect when you see plenty of people do well because of network and social aspects.
When it comes to school, there's obvious value in the social/status/network aspects and debatable value in the actual content, but what I find most discussion worthy is how one's background shapes mentality toward "putting in the work" when there's no explicit reward for said work.
The simple difference is that school promises you results. One at least leaves with a paper that's supposed to be worth something. Doing anything else, provides no such guarantees.
Regarding "university isn't worth it, you can just learn by doing, none of this theory matters in practice", I've usually heard this from people who weren't able to pass the math courses (or even the programming courses), so it seemed more like sour grapes.
I have to admit though that they were right, in that they were indeed able to make a career at some multinational companies even after barely getting through a bachelor's with bad grades and with many more years needed than the normal time.
Real mass-scale software jobs are indeed significantly easier than the math courses in CS university programs. At least in a cognitive capability sense. There can still be many other kinds of challenges that are more about social skills which are not much needed for passing college courses but are quite important in jobs.
the distinction is specific to the economic value calculation.
it’d be disingenuous to assume the conversation is about anything other than the economic trade off. That said, wholly agree that if school was about learning, it’s great for advancing and curating an environment for learning as its own value.
fwiw in high school, authority figures justified college as a way to counteract the failure scenario of dead-end jobs. success looked like a good paying job and opportunities to do what you’d like like vacations and raise a family. Maybe thats the right framing for the rank and file public school, but it’s why I didn’t even apply to college, let alone attend.
edit: it is objectively economically more valuable to hold a degree, the data is clear. my issue is that it’s reverse causality as is always the issue with data signals.
when you go back to the scenario of what to tell a public school kid, going to college actually works as a negative motivation tool, because the majority of kids won’t go to college so you’re basically telling them their economic value is shit before they are even grown. I don’t believe in that.
> it’d be disingenuous to assume the conversation is about anything other that the economic trade off.
To me it seems hollow and sad to think about higher education purely in job and money terms, but maybe I’m weird. I studied what I wanted to learn about, and was naïve about any economic trade offs. There were a few companies I thought were cool and dreamt about working for, and at some level I knew it’d take a degree to get in, but in my book school was quite valuable beyond the jobs I’ve had, in many non-financial ways.
> you’re basically telling them their economic value is shit before they are even grown. I don’t believe in that.
Maybe I didn’t understand, but I can’t quite reconcile your suggestion to only look at college as an economic trade off, with not believing in recommending college due to your pessimistic interpretation of the message. It’s a fact that in the US, people with 4-year degrees earn more than people without, statistically speaking. (And the factor is a lot bigger than I thought.) People with advanced degrees statistically earn a considerable amount more than people with 4-year degrees. If you want to look at this as an economic trade off, it seems like there’s only one recommendation that makes any sense, no? Like, based on the numbers and my own experience, it doesn’t feel like going to school has particularly strong negatives that offset the positives. (BTW I went to a state school, and borrowed money to pay tuition.)
You'd need a comparison group who are just as intelligent and conscientious and equally rich as the college graduating population for comparison. They would likely find ways to demonstrate their value in other ways if forced not to attend college.
No you don’t need to do a study. We already know college is causal in the sense that you can’t get good jobs without the credential. The job market already enforces the causal relationship. And that’s a major reason why the advice to go to college is sound advice: we know for a fact that it broadens one’s options and enables a vast set of higher paying jobs. Whether this system is good or fair is reasonable to debate, but doesn’t change today’s economic “tradeoffs”.
What you’re asking is whether the credential represents a measurable and valid increase in skill and learning, and ideally adjusted for socioeconomic status. That’s an interesting question, and there’s a whole field of literature on this topic. But the answer to that question won’t change the economics nor the advice.
Many papers go much further than what you suggest and they adjust for things like race and family history of higher education, in addition to intelligence and family income. I have read through quite a few papers myself, and the conclusions I’ve seen vary on where they land on the causality axis between true learning and credentialism, but none of them come to the conclusion that true learning isn’t a significant factor. And it would be pretty silly to assume that people who spent 4 years learning learned nothing, right?
It's a bit phosophical though. If you had a huge cohort of smart and capable people on the job market who didn't go to college, the job market would adjust its requirements. Currently the filter regarding a degree gives high enough signal,and it's generally considered legally acceptable, while other types of filters are more legally risky.
Everything is connected to everything else. Things respond to changes in other things.
Of course as an individual the actionable recommendation is a different thing than diagnosing the overall societal scale usefulness of pushing so many people though college.
Analogy: is binding your daughter's foot good for her future prospects? Under a certain cultural context it was "good" for the marriage prospects. But the causation goes through a social-cultural consideration, that can shift and still "work" well. So whether the modern world could drop the college ritual or not is a question that's still up for debate even if the individual advice remains "go to college / bind the feet".
Yes. For example, when people take 4 years to learn full time, by the end they generally have learned.
> college ritual
I don’t buy that foot binding is a valid analogy to college. Why do you believe it is? Foot binding as a practice has died, while college hasn’t. Foot binding causes lifelong health problems, while college leads to lifelong benefits. Your language suggests you see no value in 4 years of education. Why?
What are the downsides to college? What is the objection to learning? Isn’t learning on the job the alternative? Some people say there’s 4 years of job market opportunity cost. Except the people who start work out of high school get stuck in lower paying jobs forever. The people who go to college get to learn & explore many topics outside of “work” for 4 years and then immediately take a higher paying job that statistically surpasses their GED working friends in 3 years, and then keep earning more forever.
Some people borrow money to attend college and go into debt. This can be a real issue for some, and I believe the average debt is higher than when I went to school. For the majority who get decent jobs, this is temporary, and the debt gets paid off, and then they end up richer.
What if university was free to attend? Does that change your calculus? Would you still consider college a “ritual” or a tradeoff if there was no direct financial cost to attending?
I live in a country with free college. It still delays maturation and life stages and makes the youth unproductive in their prime years.
For some fields it's clearly important, you can't learn everything about bridge design and civil engineering on the job, the structure and the topics that build on each other in an order definitely benefit from a well designed multi-year curriculum.
But for many people it simply functions as a conscientiousness signal stamped by a prestigious institution, when the material is not connected to the job.
Now, sure leasurely education is nice. I like to learn about medieval history myself, or about geology from YouTube and maybe if I had infinite time I'd learn more about music and the wonderful world of fungi. I guess this is nice, and if people learn such leasurely subjects to their pleasure, it can be seen as a good thing, a better life. But the truth is that most people don't really derive pleasure from learning abstract things like this. They are forced to do this because this is the way to get a job. It's a multi year initiation rite.
Hey I hear you, school isn’t for everyone, and I don’t believe everyone should go, and I don’t believe anyone should be forced to go. I only think everyone should be aware of the job & financial prospect stats and their likely future options, that’s where the general recommendation comes from. People who don’t know what they should do after high school should consider college as it offers the most options. People who know what they want to do are going to ignore the advice anyway… and they should! Motivated people can and do learn volumes and start companies and make fortunes without college; if only we were all that strong.
I’m jealous; the US could afford to pay for college for all on a fraction of the additional income tax earnings from college grads. We choose not to even though countries like yours have demonstrated a clear ROI. Many (I suspect most) Americans are aware of the ROI of education as well, but we have some special frozen place in our souls reserved for refusing to give away anything for free to anyone for any reason, regardless of whether it helps or hurts either them our ourselves. :P
So to be fair, most college grads don’t waste time studying things like medieval history, or fungi, or any other pure whims, maybe aside from one or two elective classes. People have majors and gen-ed requirements, and generally stick to it. My CS degree was delayed a year because I was taking music classes that had a conflicting schedule, and I paid extra money and a year of employment opportunity cost for it. And still, TBH, my biggest regret isn’t that it cost me, it’s that I didn’t take advantage of the opportunity to study even more music, and art.
One big problem with viewing college as pure vocational training, or of an economic tradeoff, is that most people don’t keep their first job for very long. Whether you change your mind, or get laid off, or get promoted, you’re not going to do exactly what you trained for very long. This is why getting a well rounded education and forcing people to read and write and do some history and math and language are all so important. For example, learning how to program computers doesn’t make good managers. But writing a lot of papers and taking Philosophy and English does, a little bit, perhaps surprisingly.
It’s a feature, not a bug, that there’s material not directly connected to a job. This is actually one of the reasons why companies want a 4-year degree credential - they’re interested in people who are competent in more than one thing. I feel like it’s also a feature, not a bug, that college gives people time to mature. How many people change their majors? Do those people get to change their jobs as easily if they work instead of go to college? Some can, but it’s a lot harder when you depend on what little income you have and the job market isn’t great and you’re not trained for other things.
i’m not the parent, but you’re using college and learning interchangeably in the discussion. Learning is indisputably causal and necessary and valuable toward a better life and better earning and employment opportunities. what’s in debate is whether college as the mechanism for learning still holds up with regard to various parameters. it’s not obvious and the problem is there’s tremendous inertia biasing the status quo.
On if college was accessible and free would that change the equation: yes of course. I’d recommend anyone go to college that can, (i didn’t) but it wouldn’t because it’s the best way to learn a topic, and id recommend it with the transparency that it won’t make or break the rest of your life and you can learn whatever you want whenever you want for the rest of your life so take the long view here.
Yes you’re right; I am leaning heavily on the learning part of college and maybe I’m downplaying some of the negatives. (Or maybe it’s just objectively worse on average now than when I went to college; schools have definitely gotten more expensive over time.) I admit that a degree is neither the only way to learn things, nor necessarily the best way to learn things. I agree there’s massive inertia in this system too. Maybe I’m rationalizing, but I truly enjoyed my time in school and feel like I got a lot out of it, but I’m aware that not everyone does. And even if there are stats and averages that paint a rosy picture, there’s certainly no guarantee; not everyone with a degree makes more money or leaves feeling like they were bestowed any intangible benefits.
> Nowadays I wouldn't recommend anyone to get a tech degree in a university unless it's a world class one.
I'm in Europe where education is mostly free or inexpensive so it may be different in the US, but it sounds like terrible advice. In most fields, it will be virtually impossible to get a job without a degree, and even in tech it'll be hard. I work in a big tech company, and as far as I can tell, most SWEs do have a degree of some sort. I'm sure there are exceptions, but they are rare.
causality direction violation. is it because of the degree that people get jobs or is it because everybody tells everyone that they need a degree that they get a degree to permit themselves to apply to get the job?
the productive takeaway is that of course its safer to come with a degree but it’s hardly proof that one needs the degree. Nobody is going to risk their or their kids livelihood on being the variant for the a/b test though.
Depending on the country in question, SWE jobs might be quite scarce, so companies can afford to be picky about the candidates.
You have outliers in both ways (companies that don’t care and companies that will ask you about your uni grades) but the general sentiment in my (EU member) country is that you do need at least a two if not a three year degree to get a decent SWE job. Most of the time it’s explicitly listed as a requirement in job listings too.
Note to everybody: this is a very exotic position and the vast majority of people I've met during career would strongly disagree with that. I don't have a Master or PhD, but my Bachelor degree was absolutely worth my time and was essential to enable me to have a successful career where I earned millions and retired early.
> I got a Bachelor, Master, and PhD in Computer Science, with a total of 11 years of education. It's the biggest waste of time of my entire life.
In CS, for Bachelor, I can understand. You perhaps do it just to show the paper and get a job.
For Masters, I can somewhat understand, as the Masters is becoming the "new Bachelor's"
For PhD: It's all on you. No one makes you do it, and the downsides are well documented. In many (other) disciplines, you do a PhD because you want to do research, and you'll never otherwise have the time to dedicate to a research problem. You don't do it for the certificate - unless you want to go into academia.
So: Why did you waste your time on the PhD? Why did you stick to it if it wasn't furthering your goals?
I spent years pursuing it, and eventually quit when I realized it wasn't taking me where I wanted to go. So what's your excuse for sticking with it?
It just sounds very silly to complete a PhD and complain about it. It was your bad decision, after all.
PhDs are not immune to buyers remorse. It's just buyers remorse. They are a buyer because of the opportunity cost of getting a PhD. It's economically equivalent to spending money, because the alternative was working as a software developer.
> I got a Bachelor, Master, and PhD in Computer Science, with a total of 11 years of education. It's the biggest waste of time of my entire life.
I disagree: I have fond memories of my university time. I also do really like programming. The problem rather is that there are hardly any job where what you learned and loved at the university (and why you studied - in this case - computer science) is of much use.
Keep in mind that your degree was a huge part why one was selected for the job.
I honestly ask myself quite often why employers are so fond of university degrees for programming jobs. If they put much less relevance on this criterion, employers would have a much bigger group of applicants among which they can select - and this means employers could use this to level down salaries.
> Nowadays I wouldn't recommend anyone to get a tech degree in a university unless it's a world class one
This is horrible advice. Hiring is a zero sum game, and a college education is treated as a table stakes requirement which won't change.
When trying to get hired, you are competing against other candidates, and if a tiebreaker is needed, the less risky option will always be hired.
Additionally, where you get your degree doesn't matter too much, but getting one is critical. It can be a BSCS from WGU for all that matters, but getting one is important. Also, bootcamps are useless now. Don't waste money on them.
The only exceptions remain veterans from the armed services assuming they were trained in the right MOS.
As my mother explained it to me, the point of the degree is not necessarily the knowledge you acquire, but to demonstrate to employers the fact that you are capable of completing a project that is multi-year and requires dealing with annoying bureaucratic obstacles.
I'm currently finishing my bachelor in CS in Rome, and have been feeling this often. I'm 24 and feel a bit lost.
When I started 5 years ago I had never programmed
(in my high school we studied latin for 5 years, and I don't remember a single word), and basically had to teach myself Python for an exam, delaying the others,
(we had 4 exams per semester, and couldn't keep it up).
Then I had the opportunity to start working for a remote company writing 2 webapps in reactjs (no guidance on the code, I had to learn all by myself with courses, youtube etc. because I'm the only one writing the frontend)
In the meanwhile I stopped the university for a year to only realize later that I was missing my academic education. After all, having a guidance on what to study makes you feel safer, the world is so complex and full of different things, that the university gives you the illusion of learning the "right" and "indespensable" thing. Trust our path, they say.
But now I'm here again, 1 exam left (on ancient Artificial Intelligence, based on Norvig's book), and I don't really know what to do
- Artificial Intelligence Master ?
- Computer Science Master ?
- Sabbatical Year to learn by following rabbit holes, hoping to find my real self ?
In the meanwhile I'll probably see the AI take my job.
The great future I once imagined seems so unreachable now, I'm demoralized. I wanted to create cool and hard things, but I find myself chatting with LLMs nowadays, and I think, is this worth?
(How I migrated my tech career into a plumber career - coming soon.)
Employers care about credentialization, a lot. And not just from elite universities based on wage data. Diplomas are a signal that you're conscientious enough to grit through large amounts of dull lectures, work and cramming, and that you're probably able to grasp some abstract concepts. You're underselling their value.
> Learning by doing and building a portfolio sounds like a better way of getting in the industry today than getting a multi-year degree with nothing or little to show for it.
Graduates do this too. The industry has gotten highly competitive. So who do you think employers would rather hire, a CS grad with a portfolio or high school grad with a portfolio? It takes a lot more for apps to impress today, in no small part because LLMs expedite the process.
Going so far as to as to found a company might be necessary if the goal is to work at a FAANG co or whatever, but most developers don't work there.
Can't speak for masters or PhD, but I feel like the most valuable part of my undergraduate was being exposed to many opportunities constantly. I saw a table looking for study/work abroad near one of my classes. I applied, got a job, met my now wife overseas, and have moved to a different country as a result (have been here for 5 years and very happy). All because a student group was sharing a cool oppurtunity with low friction to sign up.
I learned everything I use on my job in the first year of studies. The other 4 years were theory I never use or think about. But those 4 years exposed me to sooo many different people from all walks of life. University is a space to learn and unlearn. If you are lucky enough to make that your complete focus, you leave the institution a different person.
Antony Trollope says in 'Eustace Diamonds' that he feels in a lot of professions, experience creates more competent people than mere learning. (Rough paraphrase). In other words, you don't get to be truly competent unless you are earning that experience!
It is true that most software development jobs don't need much CS knowledge to perform. The majority of developers simply kludge together common libraries, frameworks, and software packages without needing to understand all that much about the internals.
It is also true that the software development jobs that don't need much CS knowledge to perform are the ones most vulnerable to being automated away by LLMs. If a kludge is sufficient, AI can kludge it cheaper than a human.
People who don't know how computers, compilers and operating systems work make terrible code and are normally completely unable to figure out issues if they arise.
I've found bugs in compilers, in the jvm, in libc header files.
I have always recommended people get an MBA and self teach the development skills. There is a value to higher education:
Bachelors - You can communicate in writing.
Masters - You can plan and prepare business documents for planning and proposals
Doctors - You can do research
To me uneducated people can still have skills, but their utility into management becomes questionable even though education certainly does not make anybody a better manager. I do however question the future value of education if most young people have never read a book or cannot write a simple essay without AI.
For me the ability to communicate is the most important skill, because programming is a form of writing. So, if I were hiring for a software team manager I would have absolutely no reservations about putting them on camera and watching them hand write a 5 page essay within an hour. It’s one of those don’t waste my time and I won’t waste yours kind of things.
I have worked with self taught programmers and the fact that they don't know the first thing about the most basic and well known algorithms makes cooperating with them painful.
Master's here. I already knew how to program before going to University. However I learned a lot about how to think more abstractly/mathematically about software. It has helped me a ton in my industry work and given me a clear advantage.
As someone who's self-taught, I find this argument tantalizingly validating, but I'm constantly reminded that universities offer more than just the material. Between peer networks and "alumni" connections or even just the ability to email a former professor or TA for advice, these opportunities just aren't really available independently. Skipping college might not limit what you can learn but it sure narrows the network and institutional support available to you.
If you write a PhD and feel like it was a waste, too bad. I think if you had approached it differently, you would have gotten something else out of it. By that point you’re supposed to be more responsible for your own learning.
I agree, the future looks very dim for tech degree grads. I would not even recommend a degree from an elite school. Grads'll be in debt for a long time.
Going to need more than that. Why? Do you want to work in biostats or biotech, or do you enjoy it enough that the money and time commitment is worth it purely out of interest? What skills are you missing that you think a masters would give you? Online, in person, where?
I never regretted getting a BS and MS in CS. It was a lot of fun learning, landed me my first industry job with basically no extra effort, and it ultimately allowed me to be an instructor at a university after a couple decades at work.
But I did get my degree when it was 5x cheaper than today (inflation-adjusted). There is that.
One thing about on-the-job learning is that employers are increasingly reluctant to pay for that. So non-degrees will still have to get on their indy learning.
> Nowadays I wouldn't recommend anyone to get a tech degree in a university unless it's a world class one. And even then, I would focus on networking and finding like-minded people rather than necessarily getting good grades.
I am a teenager and I am currently going to college. I am not going into a world class one college but its a decent college.
I think that you might be right in terms of pretty much everything in tech is on-the-job learning, but the rationale behind going to a bachelor's college is that as someone else has said here: you all are treated equally and companies come to select you. So you are competing in a much smaller pool and are able to stand out much more.
Also, I get 4 years to do what I do best so much so that I did it these 2 years as well, I just can't resist myself because I have tried to do so I just love tinkering with computers and this also puts me up to an comparatively decent advantage.
Sure, there might be some rote-learning and some things which are a bit theoretical but they might also be practical. I was learning on my own a month ago IIRC about what the 7 layers are and I am probably going to read some on my own time before going to college the book of "networking a top down approach"
This has given me 4 years to do the things that I like, the job market right now is a bit not too good but reading books about history of the dot com bubble etc. I feel decently confident that its very cyclical. Just reading the book of "how the internet happened" made me realize all the similarities with things happening right now. Every 20 years, a new generation happens and we forget the old things which have happened (IMO).
That being said, I am unsure about 11 years of the free time at the same time but honestly, it really just depends upon your subjective nature and personal preference and for someone genuinely interested within research... it could be an interesting path. I am open to every opportunity that comes in front of me and wish to try my best :-D
> Nowadays I wouldn't recommend anyone to get a tech degree in a university unless it's a world class one. And even then, I would focus on networking and finding like-minded people rather than necessarily getting good grades.
Networking is a multiplier. You realize the ability of multiplier because you have the base-line. Were you able to form the base-line because of the time spent within those 11 years, partially yes, and other comes from your natural interests and curiosity judging from the fact that you are on Hackernews for the sake of it itself.
Would a person with the strongest of networks but failing to have the baselines of (technical & managerial?) tastes/intellect and just this feeling of learning be able to do something with networking. Absolutely, people are using these top grade colleges as just a way to network and so there is a lot of froth/hype in the market. Theo Baker (a 22 year old journalist who lived in stanford) has written a book about it ("How to rule the world")
I still think that its interesting that they get to become the startup owner at such an young age and there are benefits but also tradeoffs and realizing both of these is important and making the decision wisely is important. I do envy them in some sense as well but also not so, its nuanced! and I wish them all success hopefully :-D (and I think one should keep the options open), If an opportunity comes for me to open an startup say even within college and upon proper careful thinking I get the answer to be a serious yes, I will try to follow that as well :-D
but my main point is that after a particular point in life: the multiplier feels much more important than baseline but before that, the baseline is just as important if not more, so I will try to get good grades hopefully if interests align with the subjects which I think they do.
From my understanding of the world, the world is nuanced and complicated so there isn't one size fits all so its best to keep your options around and do what you feel rationally so but rationality can also only go so far so it also depends a bit on the emotions involved and many other factors but we can't also think infinitely in recursion for everything so we need to have good instincts and ability to think deeply when needed and basically being adaptable to the situation thus me suggesting that there might not be one size fits all.
These are the talks that I have had with myself over the conflict that I myself had over going to college or not and some reasons behind going to do so, so I do realize my bias in that and I am not entirely an unbiased source but perhaps a truthful source. It so much depends on the situation of the person to decide if they should go to college or not and all factors involved imo.
Have a nice day if someone has read it till here and take care! :-D
A degree is not a bad thing. This forum is pretty biased on startup culture but I bet the vast majority would say its not worth it personally but worth it on a career level. Even then, the space to explore things outside of your immediate interest is invaluable and you WILL make connections beyond what you expect. Good luck in your studies.
I got a math degree with mostly pure math courses, and did a few CS and data analytics courses on the side. I used to feel a little behind that I didn't do a proper CS degree, but I found math to be a lot more fun and less time consuming.
After a few years in the workplace I don't feel behind at all, and I'm grateful that I have more potential back up plans and won't be just another unemployed CS major if there's a real contraction in the job market. I've been considering pivoting to being an actuary, or possibly teaching high school.
> This exact thing is what software developers have been begging for since the beginning of the profession: Receiving a detailed outline of the problem and what the end result should look like.
> This is often the part that slows down software development. Trying to figure out what a vague, title only, feature request actually means.
But that is exactly what Software Engineering is!. It's 2026 and the notion that you can get detailed enough requirements and specifications that you can one-shot a perfect solution needs to die.
In my experience AI has made us able to iterate on features or ideas much faster. Now most of the friction comes from alignment and coordination with other teams. My take is that to accelerate processes we should reduce coordination overhead and empower individuals and teams to make decisions and execute on them.
> It's 2026 and the notion that you can get detailed enough requirements and specifications that you can one-shot a perfect solution needs to die.
It's 2026 and the idea that even with detailed-enough requirements you can one-shot even a workable (let alone perfect) solution also needs to die. Anthropic failed to build even something as simple as a workable C compiler, not only with a perfect spec (and reference implementations, both of which the model trained on) but even with thousands of tests painstakingly written over many person-years. Today's models are not yet capable enough to build non-trivial production software without close and careful human supervision, even with perfect specs and perfect tests. Without a perfect spec and a perfect human-written test suite the task is even harder. Maybe in 2027.
Sorry where are we seeing that it failed? It compiled multiple projects successfully albeit less optimized.
"
It lacks the 16-bit x86 compiler that is necessary to boot Linux out of real mode. For this, it calls out to GCC (the x86_32 and x86_64 compilers are its own).
It does not have its own assembler and linker; these are the very last bits that Claude started automating and are still somewhat buggy. The demo video was produced with a GCC assembler and linker.
The compiler successfully builds many projects, but not all. It's not yet a drop-in replacement for a real compiler.
The generated code is not very efficient. Even with all optimizations enabled, it outputs less efficient code than GCC with all optimizations disabled.
The Rust code quality is reasonable, but is nowhere near the quality of what an expert Rust programmer might produce.
"
For faffing about with a multi agent system that seems like a pretty successful experiment to me.
Anthropic said the experiment failed to produce a workable C compiler:
- I tried (hard!) to fix several of the above limitations but wasn’t fully successful. New features and bugfixes frequently broke existing functionality.
- The compiler successfully builds many projects, but not all. It's not yet a drop-in replacement for a real compiler.
> Like I think people don't realize not even 7 months ago it wasn't writing this at all.
There's no doubt that producing a C compiler that isn't workable and is effectively bricked as it cannot be evolved but still compiles some programs is great progress, but it's still a long way off of auonomously building production software. Can today's LLM do amazing things and offer tremendous help in software development? Absolutely. Can they write production software without careful and close human supervision? Not yet. That's not disparagement, just an observation of where we are today.
This evaluation appears to be AI-written itself. It claims a 3x slowdown and a 4x slowdown combine to produce a 158000x slowdown "because there are billions of iterations" - yeah well both versions of the program had the same number of iterations.
Does anyone know how the 158000x slowdown happened? That's quite ridiculous.
It could be written more clearly but I think when it refers to a 4x and a 3x slowdown, it's actually a 4x slowdown and 3x larger code that causes cache misses, and the impact of those cache misses on runtime is surely much larger than 3x.
> Each individual iteration: ~4x slower (register spilling)
> Cache pressure: ~2-3x additional penalty (instructions don't fit in L1/L2 cache)
> Combined over a billion iterations: 158,000x total slowdown
I think that "2-3x additional penalty" refers to this:
> The 2.78x code bloat means more instruction cache misses, which compounds the register spilling penalty.
Also, the analysis refers elsewhere to other factors that weren't included in this part.
> Can they write production software without careful and close human supervision? Not yet. That's not disparagement, just an observation of where we are today.
I never claimed they could! I just view this as a successful experiment. I don't think anthropic was making that claim with their experiment either.
It feels reflexive to the moment to argue against that claim, but I tend to operate with a bit more nuance than "all good" or "all bad".
The experiment failed to produce a workable C compiler despite 1. the job not being particularly hard, 2. the available specs and tests are of a completely higher class of quality than almost any software, not to mention the availability of other implementations that the model trained on.
You can call that a success (as it did something impresssive even though it failed to produce a workable C compiler) but my point in bringing this up was to show that today's models are not yet able to produce production software without close supervision, even when uncharacteristically good specs and hand-written tests exist.
That's great and all, but that's not the point I was making and you're engaging rather uncharitably on it. So when you view it from the perspective of capability increase it's rather impressive. Note the slope of progress which this experiment was to show.
Edit: Maybe uncharitably is too strong, but we're talking past each other.
Saying the model failed to write a competitive C compiler makes more sense.
I don't think they tried to do that though.
> today's models are not yet able to produce production software without close supervision, even when uncharacteristically good specs and hand-written tests exist.
> Saying the model failed to write a competitive C compiler makes more sense.
Their compiler fails to compile (well, at least link) some C programs altogether, and in other cases it produces code that is 150,000x slower than a real C compiler with optimisations turned off (interestingly, the model trained on the real compiler's source code). That's not "not competitive" but "cannot be used in the real world". But even more importantly, the compiler cannot be fixed or evolved. It's bricked (at least as far as today's models' capabilities go). For any kind of software, not being able to improve or fix anything or add any new feature means it's effectively dead.
You could not use it in production even if no other C compiler existed.
While I understand both points of view, I'm leaning towards yours, because:
- John Carmack embedded a C compiler and interpreter/runtime into Quake back in the mid 1990s as a scripting language! It was that efficient that it could be used in a real time 3D shooter. That's a solo effort as a minor component of a much larger piece of software.
- I've seen university CS courses hand out "implement a C compiler" as a homework / project exercise for students. It's not particularly difficult.
Sure, a modern C compiler like GCC has to handle inline assembly, various extensions, pragmas, intrinsics, etc... but like you said, all of those are thoroughly documented and have open source implementations to reference.
Similarly, the Rust compiler is implemented in Rust and could be used as an idiomatic reference for a generic compiler framework with input handling, parsing, intermediate representations, and so forth.
> Their compiler fails to compile (well, at least link) some C programs altogether, and in other cases it produces code that is 150,000x slower than a real C compiler with optimisations turned off
I would bet that those things are also true of at least one expensive commercial C compiler.
I'd love to hear of any currently available commerical C compiler which has that level of issues. I would bet you'll be hard pressed to find one. C compilation is a quite thoroughly solved problem. In any case please provide an example.
I think people are concerned about the large discrepancy in concrete claims in your previous comment and subsequent empirical information. You may have seen a headline or skimmed an article and missed some details, not a big deal.
The overall impression given was inaccurate and the implicit claim of a fully working end-to-end generated compiler was inaccurate. The headlines were incomplete in a way that was intentionally misleading. It was an interesting experiment and somewhat impressive but the claims were overblown. It happens.
I've been using claude to make a project over the last few weeks. Its written ~70k LOC to solve a complex problem. I've found that it can get surprisingly far in a 1-shot, but about 90% of the work I've had it do (measured in time and tokens) is cleaning up the junk it outputs in its first pass. I'm finding my claude sessions have a rhythm like this:
1. Plan and implement some new feature.
2. Perform a code review of what you just did. Fix obvious problems. Flag bugs, issues, poor factoring, messy abstractions, etc. Make a prioritised list of things to fix (then fix them).
3. (Later) fixes:
- Write tests for the code you wrote and fix the bugs you find.
- Run the code through memory leak checks, and fix bugs.
- Do a performance analysis using benchmarks and profiling tools, and make any high priority performance improvements.
- Read the whole program, looking for ways in which the code you've just written could fit in better with the rest of the program. Fix any issues.
- In directory X is the full documentation for the library you're using. Reread it then review the code you wrote. Are there better ways we could make use of the library?
And so on.
Claude's 1-shot output is often usable, but its consistently chock full of problems. Bugs. Memory leaks. Bad factoring. Too many globals. Poor use of surrounding code. And so on. Its able to fix many of these problems itself if you prompt it right. (Though even then the code is often still pretty bad in many ways that seem obvious to me).
At the moment I think I'm spending tokens at about a 1:9 ratio of feature work to polish. Maybe its 1-shot output is good enough quality for you. To me its unacceptable. Maybe a few models down the line. But its not there yet.
The ratio is an interesting way of thinking about it. I wonder how this compares to other SWEs at various levels of experience, replacing tokens for person-hours.
Yeah I think people are really underestimating what LLMs can do even without specs.
As an example, I did an exploratory attempt to add custom software over some genuinely awful windows software for a scientific imaging station with a proprietary industrial camera. Five days later Claude and I had figured out how to USB-pcap sample images and it's operationalized and smoothly running for months now. 100% of the code written by Claude, it's all clean (reviewed it myself) pretty much all I did was unstuck it at a few places, "hey based on the file sizes it looks like the images are being sent as a 16-bit format")
For day to day work, I'll often identify a bug, "hey, when I shift click on this graphical component, it's not doing the right thing". I go tell Claude to write a RED (failing) integration test, then make it pass.
Zero lines of code manually written. Only occasionally do I have to intervene and rearchitect. Usually thus involves me writing about ten lines of scaffold code, explaining the architectural concept, and telling it to just go
People both underestimate and overestimate what LLMs can do. LLMs have shown very different results when autonomously writing a small program for personal use and autonomously writing production software that needs to be evolved for years.
A workable C compiler is a ~10-50KLOC program, and a fairly simple one at that (batch, with no concurrency or interaction). That Anthropic's swarm of agents wrote 100KLOC before failing is a symptom of the problem. It's certainly possible that many programs are in the sub 5KLOC range, but it's definitely not "most software". Plus, almost no software has this level of detailed spec, ready-made tests, and a selection of existing implementations of the same spec.
My first thought when reading Anthropic's description of the experiment was that it is unrealistically easy. It's hard to come up with realistic jobs in the 10-50KLOC range that would be this easy for an LLM. That it failed only shows how much further we still have to go.
People who independently tried to use it reported that it is very much not workable:
- "CCC compiled every single C source file in the Linux 6.9 kernel without a single compiler error (0 errors, 96 warnings). This is genuinely impressive for a compiler built entirely by an AI. However, the build failed at the linker stage with ~40,784 undefined reference errors."(https://github.com/harshavmb/compare-claude-compiler)
- Overall it’s an interesting experiment, and shows the current bleeding edge of Claude’s Opus 4.6 model. However the resulting product is also a clear example of the throwaway nature of projects generated almost entirely by AI code agents with little human oversight. The prototype is really impressive, but there is no real path forward for it to be further developed. It can build the Linux kernel [for RISC-V], which is impressive. It can also build other things… if you are lucky, but you really cannot rely on it to work. (https://voxelmanip.se/2026/02/06/trying-out-claudes-c-compil...)
Anthropic themselves said that the codebase was effectively bricked and that their agents could not salvage it.
Well then as you say a 10-50KLOC C compiler is workable. Could you show me the C compiler that does manage to compile a modern Linux kernel that is of that size?
By "workable" I meant something more modest, say, successfully compiling SQLite, something that CCC fails to do unless you stretch the meaning of success (it seems the problem may have to do with register allocation, but I would say that register allocation is pretty much the only interesting job a C compiler does).
As to the Linux kernel, you're right that a compiler that can successfully compile it is likely to be bigger, but we don't know that CCC is able to do it, either. What we do know is that (when using the gcc linker and assembler) people were able to boot the RISC-V kernel in qemu. That's something for sure, but not enough to call it a successfuly compilation.
TCC did several years ago. It could boot Linux from source in under 10 seconds. It's wasn't that big of a C compiler. It's in the 50,000 lines of code range.
This was 20 years ago from what I can find. Beside that Linux now is a vastly different codebase than it was 20 years ago. That effort also did not compile Linux unmodified, it required several changes: https://bellard.org/tcc/tccboot_readme.html.
A bit off topic, but see how Anthropic publicity stunts went from "Claude C Compiler" with 100K LOC to the recent Bun Rust rewrite with 1M LOC (10x!) in just 3 months.
I get that it's "novel" creation vs porting, but given that they reported that the C compiler cost them $20k in API costs, the Bun rewrite must be at least $200k, maybe even closer to a million. Pure madness.
Asking an LLM tp change programming language of an implementation is completely different from asking it to code from spec. It's orders of magnitude simpler in practice. I converted some 60kloc of Java to C++ and it works. There were some issues where the Java implementation used runtime reflection because that needs creative workarounds and not all of the C++ translations worked on the first try. And that was my first serious attempt at a task with an LLM. I could likely do better now. An important task simplification here is that a well designed codebase can be converted in small pieces and then joined back together. So the total amount of code converted becomes an irrelevant metric.
I don't know how it could fail - Bun loses popularity among devs? Is it an objective metric? From what I understand, Node.js remains dominant across the industry as a whole, with Deno and Bun mostly used by startups.
Anthropic can always fire the Opus/Mythos token machine gun on any problem (bugs, features, security) to ensure PR success, and there would be plenty of AI-sphere startups already drinking the kool-aid that would consider the whole vibe-coding thing to Bun's benefit.
> Anthropic can always fire the Opus/Mythos token machine gun on any problem (bugs, features, security) to ensure PR success,
Can they, though? They tried and failed to do it in their C compiler experiment. The experimenter wrote: "I tried (hard!) to fix several of the above limitations but wasn’t fully successful. New features and bugfixes frequently broke existing functionality."
Do Firefox not have tests? Then how was there over 200 CVEs found?
Are we going to be comfortable running a piece of software that has 1M lines, and who knows how many zero-days will be in it.
Yes, sure they are going to use LLM to find the CVE's, and so will the hackers. You need a day or two to fix the security issue, a hacker just need to put it in use.
I can make a c compiler in a couple weeks just by looking up open source libraries and copying them.
I can't make any software that people will pay me money to use without taking months/years of development, research, expiramentation and iteration.
Just because the original people who invented compilers had to be genius, doesn't mean anyone has to spend much time or thought in copying that work now.
I built a compiler for a simpler language as part of my compilers course in a CS degree. It was a non-trivial exercise well beyond the majority of software applications. What open source libraries did you have in mind and what are you copying?
If you can truly write a C compiler in weeks then kudos to you. How many compilers have you written so far for how many languages?
I work for big tech and I would say a large % of developers are incapable of producing a working C compiler on any reasonable time scale, certainly not weeks, even with looking at open source. I'm sure they can download one and run it. Most developers today don't even know C or assembler. They don't know how to approach the C language spec. The top 5-10% of developers/engineers can do it but even for them it's non-trivial.
> It was a non-trivial exercise well beyond the majority of software applications
That depends on how you count. By number of programs that may well be right, but that's not what matters in terms of impact on the industry, as software value roughly corresponds to the number of people working on a particular piece of software (or lines of code, if you wish). By number of people/LOC most software is not in the "simpler than a C compiler" category.
I'd copy and paste from all the thousands of open source ones, what do you mean?
There are plenty of open source compilers that I can copy and paste whatever I need to. I don't get why you think this would have any level of difficulty?
Of course I couldn't make a brand new compiler that was better than what's out there...
Just like a game engine, I could clone one of the thousands of engines out there pretty easily - making something better or novel would be difficult. Just making a bare bones clone of what already exists by referencing documentation and pre-existing code is relatively easy now.
Yeah, when I made a mediocre 3d game engine 20 years ago, it was brain breaking difficult work. I can make one infinitely better in a micro fraction of the time now because most of the hard stuff is done and can just be looked up now.
If you copy and paste an entire compiler you didn't make anything. If you copy pieces from different compilers they won't work together. So I'm not sure how you "make" a compiler with copying and pasting from open source compiler. Are you saying you'll take one file from clang, one from gcc, another another from another compiler?
Sure. You can clone gcc and build it. You can close a game engine and use it.
> It was a non-trivial exercise well beyond the majority of software applications
Maybe if you include every application ever written, including every variation of "hello world", but if you are claiming that most serious production quality software could be written by a CS student who is simultaneously working on other classes, I'm gonna have to disagree with you.
I do think being able to write a compiler is a milestone indicator of your computer science knowledge. Most developers probably don't understand pointers either, because "most developers" are people who did a React bootcamp.
I wonder how knowledgeable in compilation was the engineer that attempted this. I'm pretty confident that I could produce a decent C compiler in a few weeks (or less), if given Opus 4.7 + unlimited tokens + a good test suite. (and this is not blind unsubstantiated belief in AI, I've recently rewritten a somewhat sophisticated interpreter in a week with AI; and have worked on several C++ compilers in the past, including a GCC port to a custom DSP, so I have a bit of an idea about what this would take).
But yeah, this is not a "one shot" project, none of it is. One shot doesn't work even with humans - after all, this is exactly what killed waterfall as a methodology.
> I'm pretty confident that I could produce a decent C compiler in a few weeks (or less), if given Opus 4.7 + unlimited tokens + a good test suite.
Of course. The point is that a full, detailed spec isn't enough (even in the rare situations it does exist, like for a C compiler). At least for the moment, you need expert humans to supervise and direct the agents.
Vibe coders usually also let the agents write the tests, which mean that the only independent human validation of the software is some cursory manual inspection. That also obviously isn't enough to validate software.
> One shot doesn't work even with humans - after all, this is exactly what killed waterfall as a methodology.
You can one-shot a C compiler with humans. LLMs' software development ability is impressive and helpful, but it is not human-level yet, even if at some tasks the agents are better than most human programmers. And while many waterfall projects failed, many succeeded (although perhaps not as efficiently as they could have). So far I don't believe agents have been able to produce any non-trivial production software autonomously.
yeah, the key part is that there be a human in the loop, directing and course-correcting the ai while it produces code in reasonably small and well defined stages.
I completely agree. It's more than 40 years since I wrote my first program, and I've never seen software that was first specified and then written and all was good.
The most difficult part of any non-trivial engineering is understanding the problem, and the first versions of a piece of software are how you reach that understanding.
That's why I do not think that AI-powered "software factories" will ever work. It's waterfall development all over again. An architect writing UML diagrams and handing them off to the team of programmers to do the essentially mundane task of implementing... the wrong thing.
AI is, however, very good at helping you go fast from the wrong first version to the less wrong second one. But you need to remember that your main task is to understand the problem that you are trying to solve.
Yeah and any detailed design is still likely to skip over "obvious" things like "only admin users can use admin features". Both the PM and the engineering team will understand this implicitly. But with AI, you never can tell if it's going to make that inference, or just create admin users and admin APIs with no relation between them. These are also the bugs that can most easily slip through, because the reviewer wouldn't even think to look for it.
> AI is, however, very good at helping you go fast from the wrong first version to the less wrong second one.
For me using AI as an entry point into developing my own small tools for personal use, this is incredibly useful. I can start with a concept, fail miserably, then scrap it and try again a few times in an evening. And instead of brute forcing something over that time I can hand off analysis to an LLM and read about better solutions or learn more about what I'm trying to implement.
There is a reason why startups succeeded because the founders actually ate their own dog food as well as solved a problem that many felt.
Products are no projects. Product development is so incredible hard.
The reason why I like Steve Jobs is his nerdy personality, best shown in the iTunes key note. For two hours the guy plays around with the app, demonstrating what to do with it, how and why.
Remember, this is the CEO. No wonder lower ranks had a hard time when they came up with ignorance about a product.
Today’s so called Product Owners know next to nothing about their product nor craft.
Design by committee. And this is what will will AI as bloated bottleneck: piling on a mess of documents only ever increasing context windows can barely make sense of.
The lost art of lines deleted is amplified within the AI age.
I regularly get pieces of work someone product guy has thought up in an afternoon. They only care about the happy path, and sometimes only part of the happy path. I work for a global company that has to abide by rules and regulations in each country we operate in. The product guy thinks up some feature, we implement the feature, then we're told "actually, we legally aren't allowed to do this in 90% of the markets we operate in". Cool, so we add an ability to disable it in those markets. Then they come back "We can do this in some of those markets if it's implemented with [regulatory bureaucracy], so can you do that please".
Then we have to hack away at the solution because the deadline is right around the corner.
This is not software engineering! None of this is related to the software. The job of a software engineer is to take a list of requirements and figure out the way we accomplish those requirements. Requirements gathering is NOT a software engineering problem. Software is implementation, product is behaviour. That's the split. The behaviour of the thing we're building needs to be known before we even try to seriously build it.
If someone just held back for week and did their due diligence, we would been able to architect a solution that is scaleable, extensible, easy to maintain and can make the future easier.
> Requirements gathering is NOT a software engineering problem. Software is implementation, product is behaviour. That's the split.
That's a theory but I've never seen this work in practice. A piece of software is unique. If it weren't, we'd just use the cp command.
What usually happens is you get a set of requirements that looks simple. Then you start thinking about a design and see 10 different possibilities, each corresponding to a slightly different interpretation of the requirements set. You iterate a few times reviewing the designs with who set the requirements and a few peers and see more possible variations to the requirements. You need to double check its parent requirements up to the master requirements. Then you need to take time/feature/quality tradeoffs, affecting the fulfillment of requirements.
Once starting to implement, you see dependencies to other software (framework, sdk, drivers, language features,...) and understand that other software is not what you thought, or has bugs. Or you see an issue with performance or see that one particular feature becomes unfeasible.
That's where all the complexity goes. AI doesn't change that, but can make prototyping iterations and bug hunting faster, as long as someone holds it on a leash and understands its decisions.
I think this was TFA's point about "engineers have been begging to be involved earlier in the process forever". Which is absolutely true.
It has to be someone's job to push back on the Product Guy's stupid idea and answer all the awkward questions about the not-so-happy path with it. Unfortunately, because of the way we've ended up with this process, that person is often the engineer tasked with building it, without any effective political power to challenge the design process.
That's a software developer's main job. Saying no. Or in rare cases saying "yes, but".
If there is a "hierachy" where product managers are seen as superiors to software development, i.e. where product managers decide what to and then only delegate the implementation to software developers, that product will invariably fail. Don't do that.
But that it's not really the case in the example above.
It's not the software engineer duty to know about how a given product is legal in what regulatory environment. That is something that must be hashed out upstream, well before tasking somebody to write a program.
Granted, an expert engineer with strong domain knowledge could be aware of those kind of pitfalls, and offer insights during the product development phase. But again, that should be done before committing to a schedule or making implementation decisions.
I have only been doing this for the last 20 years, so maybe I don't know, but it seems to me that requirement gathering is trivially software engineering. How can you implement something if you do not know what you need to implement. Figuring out what it need to be built and how to build it are closely linked. A good project manager will help collecting any missing domain knowledge, but ultimately it is on the architect to make sure that all the right questions have been asked.
And it is given that not all requirements will have been discovered before a development start or that they may change during development.
This is also the part that AI speeds up the most for me, maybe 100x productivity.
I start with something like this prompt:
"This is a research project around <vague statement>. What do competitors, like <x>, <y>, <z> do around this, are there any blog posts or tech talks?
Are there any academic approaches or recent papers around the topic?
Can you survey any related open source projects? I know of <x> and <y>. Please include analysis of activity, github stars, number of downloads on npm/pypi/crates, and search the web for reviews or complaints or positive or negative blog posts from developers.
All claims should have links to the original sources, preferably with quoted text where appropriate.
We are going to write a research plan for how to produce this report.
The implementation of the plan will spawn subagents to survey breadth, then spawn subagents for each depth topic in detail"
A previous iteration of my company had a CEO with a simple management idea that I believe worked really well: treat each product team as a mini startup.
That means EVERY role needed to develop the product was in that team. No separate corporate wide QA function, infrastructure and operations function, sales function, project management function, or domain expertise function. All the people performing those functions for that project were part of the project team.
Now this is somewhat hyperbole as if there is no sharing of resources whatsoever you don’t really have a single corporation.
But the idea is clarifying and helps to eliminate silos and tighten communication and feedback loops.
I miss that style of working. Although I try to break those barriers where I can as an individual contributor by just figuring out who needs to talk to who to make things happen and opening those channels of communication.
If they can't at least imagine the golden path themselves and write it down, they shouldn't be in charge of the product because they will be unlikely to understand any other in depth conversations about it. And I have no idea how they'd be having coherent conversations with anyone above them either. They're also unlikely to use AI well or not identify bad-out-of-the-gate solutions. It is of course different if they're just gathering opinions or want a PoC or exploratory work done, but those aren't requirements to me.
Developers are unlikely only doing development these days. There's ops and support to do as well, so more back and forth is less time doing those things and development.
We need to meet in the middle about requirements otherwise developers will end up doing someone else's job for them.
I'm seeing decision-makers / people who write requirements starting to use AI as well in my day to day. As before, my job is to read, understand and test those requirements against the real world as I understand it. But same with code. Software engineering for the past (at least) 20 years has had a core focus of "don't trust anyone", this hasn't changed and this takes a lot of time and effort still.
The problem is that instead of trying to figure out what they really want/need, now we're trying to figure out what they really wanted or needed before it got obfuscated by the babble-machine.
We have a bunch of tools - specs, code, tests. All of these really are models of the end outcome we're trying to capture.
You could just build something, see if you're right and then build it again. If that seems ridiculous, what makes a spec special that it can work first time?
Why we've not done this historically is code is annoying and (was) relatively expensive. You can rough out a spec document and get feedback from a wide variety of stakeholders -- after all, they can all read a document.
If you can use AI to explore a problem space and get feedback directly, that's definitely a whole new tool in the kit.
It's UML and outsourcing all over again: If only we can write the perfect UML diagrams representing the ideal class hierarchy, we can just put that in an email, send it to India, then we'll get back exactly the program we wanted, no mistakes!
The article is correct to emphasize the importance of definition and that this can be a bottleneck. But it is incorrect to show the layered documentation and development lines taking just as long as they did pre-coding-agents.
Our team is coding much much faster at high quality then we were before coding agents. As this commenter says, if you empower individuals and small teams to define, document and they set up good practices and harnesses, they can accelerate dramatically.
> we should reduce coordination overhead and empower individuals and teams to make decisions and execute on them.
Improved collaboration. Says every new CEO and manager. The notion that this is ever going to be solved especially with different experience, views, agendas etc needs to die too. AI is surely not going to help and with that roadblock iterating faster doesn’t help because then people want to try just for trying.
> Trying to figure out what a vague, title only, feature request actually means.
> My take is that to accelerate processes we should reduce coordination overhead and empower individuals and teams to make decisions and execute on them.
This is funny because it's exactly what the agile/scrum training taught me 20 years ago.
If by "much faster" you mean ~10% faster, then sure. Having actually measured gains across a few teams, I haven't found anything faster than that. And that's making no effort to amortize across the slowdowns introduced by shipping more bugs (which I also measurable, but is not necessarily damning. Yes, I'm well aware of the knee-jerk "then you need to use GenAI to write better tests!" - which, I will add, is more undiscovered, non-free work).
Writing "80% of the code" is not saving "80% of the time". Code is usually trivial and writes itself when other problems are solved.
Yeah I agree, such a fundamental aspect of software engineering is translating ambiguous “asks” into specific requirements. We now have a tool to convert those requirements directly into code.
And yes, architecture and how to actually implement the designs are also part of the requirements.
The code is just the implementation, the actual problem that needs solving is one abstraction level higher.
Nailed it. I suspect the OP is a waterfall guy (despite the token references to agile). All the references to documentation is a big clue. When I see "documentation" and "development" running in parallel, as if that's an extraordinary thing, I mentally cross out "documentation" and replace it with "input from stakeholders", which, in an agile world is... YES!! Of course those run in parallel. That's the whole point of agile.
How do you translate "send an email to users" as a feature without a Document? ... also an incredibly waterfall thing. We Don't Do That Anymore. Thank goodness. Because it is incredibly inefficient (and not any less error-prone). And the chances that Some Guy who wrote the Document six months ago really understood the actual problem is...practically zero.
One of my favorite waterfall stories. A friend of mine who does contract programming for <big company>, who said that her projects were always delivered exactly on time, so you never had to apply the "double the estimates rule".
"So your projects always finish exactly on the delivery date original given?!" Incredulity!
"Oh no. They usually take twice as long, but the difference is that, first we deliver what they asked for (which arrives exactly on the original schedule date, but is completely unusable); and then we charge them 3 times as much to deliver what they actually wanted (which takes twice as long)."
Not to mention that ai lets the domain experts create and test proof of concept implementations themselves. This alone has been a revelation for us and saves a tremendous number of design cycles.
We will see smaller and smaller teams where all this overhead is minimized by handful of people, and more than ever we will see 2-5 people teams creating great software
You joke but that's pretty much what cross functional teams are.
The only other observation is that as you grow teams, communication channels multiply exponentially and at over 6-8 people communication starts breaking down.
So instead you make small "companies" and set a few ground rules which software they build needs to follow, and you are back at a working org producing complex software.
Putting everyone responsible for some function of a product on one team, instead of having separate departments for separate functions, can do wonders for actually shipping and iterating on software.
I don't remember who said it first but "software teams always ship their org chart" has always stuck with me. How a team is organized has such an outsized hand it what they build.
This sounds like surface level wisdom if you are in your earlier career. I see several problems with this advice, but here is the most obvious one: this only works if you want to become a manager.
It used to be the case that the only way for engineers to advance their career. But we've long moved since and now you can have a long career and get very high in a company without management responsibilities. The examples given in the blog post are exactly what I would expect ICs to do, not managers.
Do you want advice to get promoted? if your company has a formal career ladder, look into the process and optimize for it. Despite people grievances, this is still the fastest and easiest method to get a promotion (shocker!).
As a european living in the US, the idea there is a market at all is laughable. I tried to get price quotes for treatments several time just to get a "well, it's hard to say" or "it's very complicated".
I'm hispanic and my two last names are Garcia Garcia. That is two last names that just happen to be the same.
When I moved to the US I could have dropped one or hyphenate them. I decided to keep it as-is, and use "Garcia Garcia" as my last name (space and all).
Besides confusing amongs americans and people always confusing one Garcia for middle name and one for last name, I had almost no problems. One time an airline messed up my plane ticket (again by dropping one of the Garcias) but that's it.
I appreciate other people have different experiences, I definitely met folks who have changed their names to conform to american customs and make things easier.
I left my home country over 10 years ago, and ever since I've travelled back once every 1 or 2 years.
Since 4-5 years ago I started to notice these betting houses cropping up where my family and friends live. They are impossible to miss, with big pictures of different sports and no windows.
The most important thing to notice is where these place are and are not. They proliferate in working class and less well off neighborhoods, while they tend to be absent from more affluent ones.
These places get a lot of foot traffic, all the locals barely making ends meet, blowing a few tens of euros here and there, with the eventual payoff. It's not difficult to hear stories of people getting into the deep end and developing a real addiction with devastating consequences.
And it's not only the business itself, but what they attract. All sort of sketchy characters frequent these places, and tend to attract drugs, violence...
Legal or not these places make the communities they inhabit worse, not better. I personally would be very happy if family didn't have to live exposed to them.
> while they tend to be absent from more affluent ones.
It’s not that they don’t want to be, it’s that affluent neighborhoods tend to keep things that are considered “low class” out of them. The only Safeway in my city that doesn’t sell lottery tickets is the one in the most affluent neighborhood.
There are many ways to use the financial markets that are not gambling. Buying an index fund or Coca-Cola isn’t gambling; it is not even very risky. Nor are individual stocks gambling, as you can get a reasonable idea of what a company’s price ought to be and how it is likely to perform in the future, at least for well-established companies. It’s also harder to get into debt, as long as you don’t short, because you can only spend money you have, and the stock does not become worthless if your analysis is wrong. (At least, there are warning signs)
Now day-trading? I consider that gambling, because any particular day’s price movement is a lot closer to random.
Buying a stock or mutual fund is the very definition of gambling: placing a monetary bet on an unknown future event. Just because this activity has historically had a +EV, doesn't make it any less gambling.
By this definition prime loans are also gambling. When you bet on something risky then you are gambling. When you bet on something not risky you are not gambling. Also consider that not investing will generally lose money over time due to things like inflation. If we define the goal to be holding as much value as we can, holding dollars is more risky than investing in many stocks (or bonds, which also have a risk of defaulting). A better definition of gambling is something like "taking unnecessary and unproductive risks."
I'm not sure I buy any definition of gambling that depends on the outcome. If you lose money or tend to lose money, then it's gambling, but if you win money or tend to win money, then we change the name to "investing?" Risk includes upside and downside risk.
It doesn't depend on the outcome. If a bank only does prime loans and spreads out it's loans multiple borrowers, has a good reserve ratio etc. and still loses it all, that still wasn't gambling. This is more clear if you consider that storing value in money is also risky. When you get paid in a currency, you automatically begin investing in it at the same time. This is even more clear with foreign currencies. If you got paid $1 million in Turkish Lyra and do not store that value somewhere else, that is more gambling-like than putting it in the S&P. I guess you can say that any time you increase the amount of risk in an investment to get more reward you are gambling. But you can invest in something other than USD with the same risk but with greater reward. For example you can invest it in US bonds (over multiple issues) which has a similar risk to the USD but a greater reward. Still, under such a definition, any business is gambling. We can accept that, but then we have no word that differentiates owning a grocery store from betting all your money on a coin flip, so then the word "gambling" becomes much less useful or really useless in my opinion.
Purchasing a business or parts thereof is not “gambling” any more than purchasing a house is “gambling”. People purchase them (or are supposed to) for the value they provide either through income or asset appreciation in the case of businesses or shelter in the case of the house and not for the singular promise of some winning outcome unlike games of chance. The only expectation is that the asset purchased will continue to provide value throughout the period of ownership which is no more or less than what you would expect of many other assets or goods you might purchase and none of this is contingent on mere chance alone. Just because somebody quotes a ridiculously high or low price does not necessarily mean the intrinsic value of the asset has changed. Overpaying for an asset is not the same as losing money to a slot machine. Have I “lost money gambling” if I buy something in a store the day before it gets discounted? These are just risks that exist in any market. Do not confuse this issue just because some have decided to use them as mere vehicles for price speculation. People speculate on the price of eggs, oil and gold as well but that does not mean buying eggs for breakfast, fuel for your car or a gold necklace for your wife is “gambling”.
Those who already took 99% of the pie can safely bet on every possible outcome.
Most can avoid to lose completely while alive, but they have no path to a winning position, and others are trapped in a situation where it's so hard to go down to a net lost that they lose ability to understand that individual hard work and wiseness is not going to defeat societal asymetries.
Financial markets produce a net positive outcome for investors (gamblers), no? The average rate of return in the S&P500 is about 10% and it's considered the baseline for thr stock market.
> bet the better off do gamble on the financial markets though
Much less. Something I’ve noticed is the parents of the wealthy teaching their children to invest versus e.g. day trade. In middle class or poor households, on the other hand, it’s not uncommon for the kid to be trading crypto instead.
This is a misleading judgment the expectations out of the stock market being that the investments produce money generally speaking are expectation positive. Gambling is expectation negative always. That's the defining difference in my opinion.
Can you lose money in both absolutely but only actual investments have historically positive expectations. The stock market has had net growth of 7%+ on average in the last 100 years. Gambling has not increased the gamblers pockets at all its only shrunk there pockets
Investing is putting money into (hopefully) productive use, like a company with revenue, in an expectation of a return.
Gambling is basically redistributing money according to a random numbers generator, It's a negative sum game (because the house takes its fee), but a surprise positive spike game. That spike forms an addiction in the less fortunate.
> Investing is putting money into (hopefully) productive use, like a company with revenue, in an expectation of a return
The big differences are time horizon, addiction and expectations.
The longer the term, the less actively one must watch it and the lower the expected returns, the more likely it’s investing. The shorter the expected turnaround, the more closely one watches numbers go up and down, and the more one is focused on turning multiples than yields, the more likely it’s gambling.
Any stochastic process can produce gambling behaviour. Only a positive-sum game can facilitate investing.
When you buy a stock, you're not contributing it to the company's productive use. If I buy $1000 of MSFT, Microsoft doesn't get an extra $1000 in their bank account to invest in their business. That $1000 is going to another bettor to settle his previous bet, and at some point in the future, I'll sell and get an unknown amount of money to settle my bet. Just because historically betting on the stock market has been +EV doesn't mean it's not still gambling.
Sure, but that's pretty indirect and a far cry from "putting the money to productive use." Unless you're an early investor or IPO participant, your actual money is not being directly put to productive use by the company you are "investing" in.
> that's pretty indirect and a far cry from "putting the money to productive use."
All finance is indirect. Particularly at small scale.
> Unless you're an early investor or IPO participant
Plenty of IPOs are entirely secondary. And public companies regularly raise money via at-the-market offerings, where a random trader may wind up cutting a cheque to the corporate treasury. (I’ve been a seed investor and IPO investor. My effects on the outcome were rarely singularly meaningful.)
In a large offering, a small IPO investor has about as much direct effect on the outcome as someone buying the pop publicly. In aggregate, however, their actions are meaningful and productive.
Put another way: contrast two economies, one in which most capital is tied up sports gambling (negative-sum game), the other in which it’s in equities (positive-sum long term), one will outperform the other.
Early investors and IPO participants put their money in expecting that 20 years later you would buy the stock off their hands. It feels weird to call it causation when it's traveling back in time, but in a way buying the stock contributes to investment.
If you buy MSFT specifically you'll get regular, fairly predictable dividend payments and not just an unknown amount of money in the future.
MSFT goes up a tiny fraction when you buy. That means MSFT employees with stock grants get a tiny "raise" courtesy of you and with no cost to the company. Microsoft can also use their more expensive stock to make acquisitions. So you are contributing to the company's productive use in at least 2 ways if you buy its stock.
Buying MSFT doesn't meet the criteria to be called gambling, for me.
I'd wager (heh) a bit of both. The distinction isn't that the affluent neighborhood gets to make its own decisions or be cared about by large corporations whose presence ostensibly enhances their quality of life, it's that poor neighborhoods don't. The reason the latter have these socioeconomically deleterious establishments is the same reason they don't get grocery stores or gyms: the people making the decisions don't see them as customers to serve, but as marks to exploit. And suddenly we're back to the notion that privilege isn't necessarily having it "better," but sometimes just having what most would consider the dignified standard.
Well over a decade ago, when we were initially looking for a place to rent in Bavaria's second-largest city, which is otherwise one of the safest cities in the country and the world, the quickest way to screen neighborhoods was the presence (or absence) of those little casinos/sports betting offices.
It's frustrating because technically it's all "legal" and marketed as harmless entertainment, but in practice it’s just another way to extract money from people who have the least to spare
Maybe their having the least to spare is a consequence, and poor impulse control is the cause.
Anyway, it's like making money off other human deficiencies, say, poor vision or dyslexia, and mistakes made due to those. It feels unfair, it does not feel like a conscious choice. Hence the understandable backlash.
That doesn't feel like a very apt analogy. Poor vision or dyslexia can't easily be hijacked into a cycle of addiction the way poor impulse control can. Making a bit of money helping someone with poor vision is very different than blasting advertisements on every single medium and using predatory practices to draw in those with poor impulse control. Not to mention the continued exploitation afterwards until the victim has nothing left.
Making money helping people with poor vision (selling glasses) is fine, of course. I mean exploiting their weaknesses, like using a tiny typeface to write important price information while showing a big price-like number prominently. Doing something formally correct which turns into a trap because of the customer's disability.
I was already expecting a lot of gambling site ads, they took over the soccer tournament sponsorships almost completely anyway.
But what I found out when I came back in the last 3-4 years 100% shocked me. It wasn't just TV and soccer teams, I saw gambling ads in napkin holders at some restaurants, bus stops. I went to get a haircut and the barbershop had TV with gambling ads adorning their frames.
I also left my country years ago and come back once or twice a year. This year the city hall introduced a new parking app that can't be installed on a phone with an app store registered outside Romania, because the freaking parking app has a gambling section and they decided to go with gambling instead of supporting a universal parking app (like the previous one that they had) available also for tourists from outside the country. I called them out on that and said that they can't make it available outside the country because of legal issues with the gambling section....
Guilt by association: If, e.g., violence is a problem, then one needs to deal with the violence. In general, law-abiding citizens are—and should—be free to congregate and partake in their bad habits wherever they please. And even though gambling is generally immoral, it does not infringe on anyone else's God-given rights and has no business being made illegal.
Gambling is emphasized above to emphasize we are talking about individuals who are not sufficiently skilled to argue they are not essentially partaking in pure games of chance.
Sports betting is not a game of pure chance, but bookmaking is arguably ethically quite problematic.
Most individuals are going up against these very sophisticated statistical models created by teams of quants working with huge datasets that you have to pay substantial amounts to access. I think most bettors don't know what they're up against.
And the bookie business model is intrinsically anti-consumer: if you win too much then the bookies will ban you. Whereas bookies are quite happy to keep taking money from addicts even when said addicts have already lost their life savings.
And any active investment platforms are not different at all. A lot of matketing budget is spent to make people believe they can earn money by trading.
There are some differences: investment platforms wont kick you out if you manage to earn money. Gambling sites do that. If you are loosing a lot, gaming sites make your limits go up. If you are winning a lot, your limits go down. Investment sites dont do that.
They also assign "consigliere" to you if you loose a lot. He is supposed to create a personal relationship with you. If you try to stop playing, that person will try to get you back into gaming.
You are not betting against investment platform itself, you are betring against other people on it. That is major difference.
Yeah, the incentives are completely different between exchanges and bookmakers. Exchanges make money regardless of who wins or loses. Bookmakers make money from their users losing.
> Most individuals are going up against these very sophisticated statistical models created by teams of quants working with huge datasets that you have to pay substantial amounts to access.
There are two things you might do as a bookmaker:
(1) Perceive the truth of who is likely to do what, and set odds reflecting that perfect Platonic reality, but with a percentage taken off for yourself.
(2) Adjust the odds you offer over time such that, come the event, the amount you stand to collect on either side will cover the amount you owe to the other side.
You don't need to know the odds to use strategy (2). Nor do you need to reject bettors who are likely to be right.
I have worked in the betting industry for several years. And the reason I'm writing is to tell you that while (2) sound logical, it was not used during my time in the industry. Or to be more precise, of course the odds are adjusted all the time to balance the market, prevent arbitrage etc, but it was also very common to have a 'loss leader bet', usually on the favourite, where the betting company would take a loss or make very little money if the favourite wins (but if that happens the customers still don't make a lot, because the odds are already low, and betting on a favourite is not a winning strategy because the real fav loss probability is higher than the odds would suggest). OTOH what is also often done is when 'real odds' are very high (low probability), the odds that are offered are way lower than the probability would suggest. So if 'real odds' are 100:1, the company would offer 50:1, so, even taking into account the company margins, you as a customers are never offered anything close to the real probability and as a consequence unless you are exceptionally good can never make money (and if you do your are banned).
Strategy (2) doesn't tell you how to come up with the initial prices, and bookies can potentially lose a significant amount from giving "bad" initial prices. If an individual is winning a lot of money from a bookie repeatedly because of these bad initial prices, then it is a sign that they might have a better model than the bookie, and so it is in the bookie's interest to ban them, since sports betting is a zero-sum game: every dollar you win from a bookie is a dollar that the bookie loses.
I worked for a gambling syndicate. We often made money from bad initial prices. Many bookies tolerated us because they wanted to know what we thought was mispriced and rapidly adjusted their odds after we started betting.
It was a balancing act though. They really wanted to know what we were doing, but didn’t want to lose too much to us. So there was some give and take / bartering around the fair value of our information in the form of our accounts being banned and limited or bets being voided. But they definitely didn’t want to eradicate us.
> If an individual is winning a lot of money from a bookie repeatedly because of these bad initial prices, then it is a sign that they might have a better model than the bookie, and so it is in the bookie's interest to ban them
I don't think this follows. If an individual is winning a lot of money repeatedly in this way, it is a sign that the bookie should give their bets a lot of weight when adjusting prices. But that information is something the bookie might want.
If bookies want better prices they can pay for prices from places that have good models. Or they can buy / build their own models. What you're suggesting doesn't make sense from an economic perspective.
It is your right as a human to waste your life away. It is also by definition immoral regardless of moral system (so long as 'waste your life away' is an accurate assessment within said moral system), but they are completely separate matters.
A college fund your parents saved for you isn't your money unless the money is in your name (or possibly set up correctly at the bank). If they just save it in their name, they can spend away as they like. It is their money until it is actually in your name even if you were told it was there as a child.
Which is understandable in many cases if the family actually needs the money before someone goes to college.
Yes, they chose their genes and the structure of their brain after all, how irresponsible of them! /s
In general, something that happens at scale and consistently is not an individual problem.
You have whole armies of very well funded designers of things like processed food, or games, working to deliberate find the faults in human brains, and to make politicians make the laws that lets them do it legally, and you say it's the fault of the individual that falls for it?
Do you think people with a gambling addiction are enjoying it and making an informed choice to continue, and could therefore just choose not to do it instead?
But seriously, mental illness exists. Other sorts of things affect the brain - hormones, cancers, dementia, injuries, etc. Some things really are completely out of your control and no amount of "personal responsibility" is gonna get you out of them nor avoid them.
This argument doesn't account for the inherent, drastic power imbalance between the average participant of gambling and the average owner of a gambling center.
Gambling between people, a basement poker game, that's fine, that's no one's business.
Handing your money over to rich people operating black boxes that are designed from ground up to mesmerize and mind control you into emptying your wallet is a totally other story. On the individual level, it ruins the lives of anyone who is unable to resist or understand the psychological tricks employed on them. Zooming out, it destroys families, communities and in effect, societies.
If we are going to base the legality of gambling on consent and human rights, we have to recognize the limit where consent is no longer valid, due to sickening engagement tactics.
Someone's freedom to make money off of my ignorance or weakness does not supersede my right to self-determination and well-being, neither of which are possible when being hoodwinked by exploitative capitalists.
If we are to continue allowing corporate gambling operations and 24/7 mobile sports betting, we need to place serious restrictions on how these companies are allowed to operate.
I'm fairly okay with legalizing everything but absolutely banning advertising it.
Which is what we should be doing with gambling: no advertising, as opposed to now where everybody ad break has a celebrity endorsing the intelligence you clearly have when you choose (betting platform).
The emotional manipulation of paid celebrity endorsement of harmful, engagement-hacking products and services is downright sickening, just the thought of how normalized it's become makes me sick to the stomach.
I'm very pro gun, pro freedom of consumption, pro crypto, etc. but once emotional manipulation comes into play, self-determinism goes out the window and people are no longer making free choices.
> I'm very pro gun, pro freedom of consumption, pro crypto, etc. but once emotional manipulation comes into play, self-determinism goes out the window and people are no longer making free choices.
To me, this is a very mature response. The whole idea of you do what you want as an adult and you own all of the consequences. Why do you make an exception for "emotional manipulation"? To be clear: I am not trolling in this post. I want to know why you think these things can be legal, but advertising about them is "morally bad".
Well, advertising as a concept is fine, but the industry is steeped in advanced, refined yet old-as-time-itself psychological manipulation tactics.
When addiction is intentionally engineered at a high level and wrapped in the Trojan horse of self-sufficiency or emotion, deceit, or the power of suggestion, we have a problem. Imagine Taylor Swift doing an ad for crack cocaine.
The war on drugs should never have happened. It's been used a tool of foreign and domestic terror and control for a century. It was designed and popularized by corrupt people who stood to gain wealth from restricting the freedom of others.
To your implied point, drug addictions similarly ravish communities, destroy lives, and in the case of drugs like fentanyl, legalization effectively makes it easy to acquire extremely potent and discreet poisons, which has a huge potential impact for violence.
We can paint a similar story for gun violence. We can tie drugs, gambling and guns together even more tightly when we look into where cities approve permits for gambling centers, where most liquor stores pop up, selective enforcement and scandals like the Iran-Contra affair [0].
It's important to have a consistent position on all of these topics, so I thank you for raising this point. So all of that said, I think drug consumption/manufacturing/distribution, guns and gambling should generally all be legal at a high level, but we must dispense with the racist and classist implementations of these systems within our societies, and we should have sensible evaluation and certification programs in place for access to different stratifications.
You should be required to periodically prove medical and psychological fitness, as well as operational certification, for certain powerful substances. Similarly, we need sensible restrictions on gambling and guns [1].
The reality is that with freedom comes responsibility. Without responsibility, unrestricted freedom leads to anarchy or a post-capitalist nightmare. One of the main points of government is to balance these freedoms across individuals, communities and society at large, in order to maximize the well-being and self-determination of the people, while allowing for progress and innovation.
[1] To be clear, I am very pro 2nd amendment [1] and am not calling for a ban on anything or for the State to maintain a monopoly on violence and power.
"Under no pretext should arms and ammunition be surrendered; any attempt to disarm the workers must be frustrated, by force if necessary" - Karl Marx
I asked because I noticed this strange cluster (for me) of people which want to ban some things like gambling or social media algorithms because they are exploitative and addictive, but who also want to legalize drugs. I had a feeling you might be in it.
Stranger, some of them want to ban/make it harder to distribute drugs "legally" through doctors (OxyContin, Sackler family scandal) because doctors might be monetarily incentivized, but then they also support complete drug legalization, including for the same drugs (fentanyl). This position is not even internally consistent, in this case fentanyl was "legalized" close to what they seem to demand, just gated by a doctor.
I don't have a clear position, but I don't think I would support legalization of "hard" drugs (anything above marijuana/MDMA). I can't see any positive, the negatives are clear, and it impacts the whole society (I will respect your freedom until it impinges on mine).
I am pro 2nd amendment, but I also believe the State should maintain it's monopoly on violence. Otherwise it's Mad Max world. The way the 2nd amendment is stated (prevent tirany) would not work anyway today, the military power of the State is vastly larger, the "militias" will never stand a chance against Police/Army/Cyber/... So I am pro guns just as far as personal protection requires (so no rocket launchers).
I was reading this chain of responses. They are great. The two of you are very thoughtful in your world view.
About your last paragraph: How do you feel about other OECD (highly developed) countries that do not allow personal gun ownership (except for hunting and sport shooting (clays, etc.)? Take Japan for example: Except for hunting and sport shooting, ownership of guns is not allowed. How do you feel about it?
The entire point of defense against tyranny is because today's well-behaved police can be tomorrow's racist State thugs. Authoritarianism is a ratchet.
It absolutely does account for that. Your entire comment is a strawman.
If that is not intentional (which I suspect it is not, so no offense intended), then I believe a quick search on “God-given rights” should help you make whatever case you want to in a logically consistent manner. It is a well-defined concept that has a specific meaning over a specific domain. I get the feeling “negative rights vs. positive rights” might be a useful search phrase as well.
The Judeo-Christian god does not exist, nor any other god, so I'm not sure what rights you're referring to. Are you referring to human rights? We don't need a religion to justify those.
Anyway, you said your argument accounts for it, but didn't actually follow through and demonstrate why that is. How does your argument take into account the aforementioned power imbalances?
No. Normally I would, but you are either being lazy or just plain acting in bad faith.
1. My answer is not vague. You are refusing to look up the critical definition.
2. Everything you have brought up (except for the theism bit, which is just completely off-topic) was preemptively addressed in my initial comment.
It’s not about the Gambling, it’s the fact these businesses are collecting a large number of easy victims in once place.
Imagine you’re a loan shark. Which of the following seems like a good place to look for customers: upscale restaurant, movie theater, random bar, theme park, baseball stadium, city park, or a sports betting venue.
Imagine you're a luxury watch thief. Which of the following seems like a good place to look for customers: upscale restaurant, ... or a sports betting venue.
By customers you mean "people to sell stolen watches to"? Cause if that is the question, neither of these is a good place. Affluent people wont buy obviously stolen watches directly in the restaurant, they will go through middleman that makes them look legit.
And people being there to bet wont be buying watches that much either.
Rights are merely a simplification of complex interactions. Societies are more focused on what benefits themselves than such simplification.
The minimal effectiveness of enhanced interrogation plus the desire of the population not to risk being so interrogated means people are generally apposed to such. Tracking down a nuclear threat is considered something of an exception to this stance by the average person.
Either you accept the definition of God-given rights, which is certainly not consistent with your opening statement.
Or you don’t, at which point any following argument regarding its proper usage is moot.
You seem to have gone with the latter, which makes your comment irrelevant. And that is regardless of its truthfulness. To be clear I disagree with it, but getting into that would contribute to derailing the conversation.
It’s not a rejection of the existence of God-given rights.
It’s a rejection of the idea that people’s list of them would be consistent through time. In 1,000 years people may come up with a list of God-given rights, but it won’t be the same list you use.
As such trying to come up with a list of God-given rights from a human perspective is inherently a flawed undertaking. God is beyond human comprehension.
Rights are not something you enumerate, i.e., they are not a “list.” The underlying idea of God-given rights is, simply put, that your freedom ends where mine begins and vice versa.
The idea, moreover, is the generalization of ethics to an environment with multiple actors, such as Earth. And it is, of course, inconsistent with many ethical systems: A competing idea in equally simple terms is “might makes right.”
And the idea, furthermore, does not change over time. So if you substitute it into my previous comment, you will see that the argument within holds.
Finally, and as a side note, I strongly agree that the state of possible actions, and as the “list” of possible infringements changes with, e.g., technology. An 1800s philosopher would, for example, never have considered the applicability of any theory of rights to the operation of a nuclear power plant.
Except it does “them’s fighting words” only died out very recently, but it provides a starkly different boundary between my rights and your rights.
Ritualized lethal combat was a thing for very long time, and took an incredibly long time to go away. Trial by combat and dueling grows out of a fundamentally different ethical framework not just a lack of technology. It seems antithetical to Christianity today, but that wasn’t always the case.
Books most definitely won’t let you win long term. They only want you as long as you’re losing and can ban you once you win too much. This sounds illegal and isn’t.
Irrelevant. I only bring up the stochastic element because of the implicit argument that people are being victimized by gambling against their will.
Since you would be extremely off-topic if you tried to extend this argument to, e.g., Daniel Negreanu engaging in a game of poker, I wanted to explicitly preclude individuals competently engaging in whatever activity is being deemed 'problematic.'
It was mostly to help the 'other side' stay on topic; otherwise, I could trivially refute their arguments by counterexamples, e.g., Daniel Negreanu.
The argument that the article uses to critique AI coding is that coding is not the bottleneck, instead the testing and validation of ideas is.
This is a first-degree smart argument. It presents a seemingly non-obvious idea that makes sense in retrospect.
However I happen to work at the experimentation team of a hyperscaler so I have a different perspective.
First, we aren't always saturating all of the potential experiments we could be running. The reasons are different, but essentially it takes time and effort to build those experimental features. If that cost trended to 0, we could make sure to have a queue of experiments deep enough.
Also in our side we need to do development work to support new features and products. We have a backlog long enough to keep us perpetually busy. If dev cost trended to 0, we could always be ready to provide our customers what they need.
Speaking of new products, each one our company comes up with comes with extra effort to support in our side, and yet more effort to produce dozens of AB test to validate new functionality.
This is not talking about ongoing maintenance effort. Bugfixes, upgrades etc. take a non-trivial amount of effort to keep up.
And this is only inside our little experimentation team. What about security, reliability, scalability, efficiency... it makes me wonder if OP has experience running products at scale.
Instead I'd like to think that dropping the cost of development by orders of magnitude changes the equation of how we create products.
* Do not implement an np solution trying to get the perfect score. Implement a fast solution that gets within x% of optimal
* If a solution seems impossible or it takes too long, return the closes solution you can find, and a warning about the solution being suboptimal
I got the code in a few minutes. On a sample of random inputs, the algorithm produces a solution within 1% of optimal in ~99.9% of the cases. p95 execution time is well below 2ms in my laptop.
That's it, that's everything you need for a production system. "close enough" very fast is sufficient, and the impossible cases very rarely happen. Even when they do, you can simply work around them.