Retired CS prof here (from a below (ok way-below) top-4 program). There is no longer a job market for CS grads outside of top-4? Is this true? I had no idea, as I understood it, CS major numbers are still rising.
GP is just making stuff up. There are plenty of jobs for CS grads still outside the top-4. Will there be some constriction in the market? Probably, code generating LLMs are getting more popular. But there are plenty of systems that are a bit too important to leave to random code generators.
Firstly, there are not "plenty of jobs for CS grads" -- if there were, you would have supply (us cs grads) matching up with demand (us tech jobs). Yet you see tons of unemployed CS grads. FAANG mostly has hiring freezes, and you have to be part of the inside club to be let in. Many cs grads go into bs jobs way under their potential (random government agencies, contractors.)
Walk into any US tech area and you wont see any Northeastern CS grads, or many non-Top-4 grads. You will either see Top-4 CS grads in leadership positions or at their own startups -- or you will see foreign grads. In some offices, 90% or more of the workers are foreign grads, not US school system grads.
Tons of job postings are fake. There was an entire HN post on this last week, companies posting fake jobs. Sometimes it is just to show a best effort before an insider is hired.
I think LLM copilots are a factor, but they are just a convenient distraction from the real problem -- a supply-demand-price mismatch. ZIRP conveniently hid the problem, but now it is out and visible.
>>> Many cs grads go into bs jobs way under their potential (random government agencies, contractors.)
> Why are those jobs deemed bs?
Because many of us went into the field bright-eyed, thinking about working on cool products, designing the latest algorithms, or being part of world-renowned teams. NOT to run the nightly batch job for the Massachusetts Depart of Family Services wage garnishment system. NOT to fix bug tickets at the local tax office's COTS implementation, while all the actual software is built elsewhere. NOT to work as a contractor without benefits.
Just look on Linked In, filter by Northeastern CS, see how many people have green semi-circles. Look at where people are landing jobs. Filter out nepo-hires, which are easily visible (e.g., jumping into leadership role straight out of school)
Sorry - little sympathy here. I acknowledge the market is much worse this year and last year.
But I started at a lame crappy job 10 years ago after college. It’s not a big deal, it gets your foot in the door and then in 2-3 years you can move up to a better company. I did this a couple times and after 10 years i’m now working at a faang adjacent company (household name but not part of faang).
That’s what normal life looks like for a typical CS grad. The fact you think getting a job at faang is expected or normal right out of the gate shows you’re in a bubble. It happens, and i’ve worked with colleagues who did it, but it’s not the norm.
and nobody is changing the world with their code, unless you’re linus torvalds or similar. best to squash that naivety earlier than later lol. It’s a job, and a passion for some (like myself). that’s it. It’s also healthy to find additional hobbies outside of the computer - something i learned the hard way.
Guess the smarties should have measured the patterns physical social reality rather than get sucked in by propaganda.
What physics demands society align with the spoken philosophy of a people? It’s kind of on the people to demand politics align with the philosophy. But go on, people; scream at your screen like gramps did at Dan Rather.
Distribution of education does not guarantee distribution of intelligence.
Thanks for letting us tag along. What I'd like to hear are your thoughts on the Groucho Marx cigar question: laziness is useful every now and then, but in lazy languages like Haskell you pay for it everywhere. The same is true for dynamic dispatch, it's needed when working with values of sum type. But like laziness, it isn't needed wall-to-wall but in dynamically-typed languages, you pay for it everywhere.
Give me a call-by-value language with arrow and sum types and I can pay as I go.
[edit: added "arrow and"]
Sure, OCaml is great as are the other dialects of ML. I'm hoping that someone will weigh in with a compelling case for laziness everywhere or dynamic dispatch everywhere, other than pre-existing infrastructure, libraries, etc.
> hoping that someone will weigh in with a compelling case for laziness everywhere
How should this happen? You can hear even form the horses mouth that laziness by default was a big mistake.
> dynamic dispatch everywhere
Big mistake of most "OO language" indeed.
Rust got this right. Static dispatch is the default (simple and fast!) but you can have dynamic dispatch where it makes sense. I hope this design will be copied in the future everywhere. Maybe even some language manage to get rid of their mistake and switch to the sane design (looking at you Scala, just make type-classes first-class, but keep OOP for the cases where it makes sense).
I spent a lot of time on this. See M-LISP: a representation-independent dialect of LISP with reduction semantics, TOPLAS, 1992, the relevant bit is in section 2.
It's true that J. McCarthy had only a passing familiarity with LC. M-expression LISP, as it was originally conceived, was all about first-order recursion schemes over S-expressions. But due to a very simple error in the base case of an inductive definition, LISP 1.0 "featured" or "supported" higher-order functions, ala LC.
M-LISP: a representation-independent dialect of LISP with reduction semantics
In this paper we introduce M-LISP, a dialect of LISP designed with an eye toward reconciling LISP's metalinguistic power with the structural style of operational semantics advocated by Plotkin [28]. We begin by reviewing the original definition of LISP [20] in an attempt to clarify the source of its metalinguistic power. We find that it arises from a problematic clause in this definition. We then define the abstract syntax and operational semantics of M-LISP, essentially a hybrid of M-expression LISP and Scheme. Next, we tie the operational semantics to the corresponding equational logic. As usual, provable equality in the logic implies operational equality. Having established this framework we then extend M-LISP with the metalinguistic eval and reify operators (the latter is a nonstrict operator that converts its argument to its metalanguage representation). These operators encapsulate the metalinguistic representation conversions that occur globally in S-expression LISP. We show that the naive versions of these operators render LISP's equational logic inconsistent. On the positive side, we show that a naturally restricted form of the eval operator is confluent and therefore a conservative extension of M-LISP. Unfortunately, we must weaken the logic considerably to obtain a consistent theory of reification.
I have been teaching OCaml in CS1 at Boston College for 4 years now. Of hundreds of students who went on to learn Java in our CS2 course (joining Python-trained students from other sections of CS1), nearly unanimous happy campers. When OCaml is their first programming language, they're good to go.
There's an aside about how I've chosen precedence. The way I've defined operator precedence and binding, (\x.x) y is not a valid expression (parentheses only mean function application), and (λx.x y) returns y. You can argue I defined things wrong, but it is all in how you define things.
I'm teaching a sophomore level web apps course in the spring semester. I'm torn between doing what I think will help them land an internship this summer or land a real job and on the other hand, teaching them something like Elm which makes much more sense to me. Anybody willing to weigh in on these? It would be greatly appreciated.
1. Would a course focussing on just the front end using HTML + CSS + JS + React be reasonable?
2. Is it reasonable to deal only with the front end?
3. If the answer to 2. is no, then what is most reasonable and likely to endure technology for the back end?