Git
Html
JavaScript
SQL
Web frameworks
Many people fresh out of school skilled in computer science.. they have no programming experience. They can code a linked list but that isn't actually useful.
Remember the pain of learning all this
Companies should accept this and be willing to invest in their employees, not just use them as cogs.
I've personally seen two bootstrapped companies locally who invest in college graduates and pay them slightly below competitive wages; they have some of the most loyal employees, and more competition for job openings than they could ever hire.
It's not ideal for every company, for sure, but it does work.
On the other hand, in most or all of the companies I've been somehow related with, more experienced developers have naturally invested their time in helping juniors learn.
Vs 6 months of training at fulltime pay, would be maybe $70k cost to a company?
Yes, it is far cheaper to interview tough vs train employees (for right or wrong)
Luckily there are plenty of Big Co jobs... but most still seem to ask for 2-3 years of experience, aka we can pay you crap AND not train you, a win win.
The jobs actually need git/js/SQL
The interviews are mind benders and school coding challenges.
Or perhaps they havent coded in a whiteboard in years?
Or perhaps they havent had to think about RB tree vs trei for a while, so can't code them perfectly.
What?
Intro Systems: demonstrate working knowledge of Assembly. Write C to exploit spatial and temporal locality. Learn to cope with concurrency.
Operating Systems: write process scheduling, virtual memory management, system calls, and filesystem caching into Pintos [0].
Networks: write an IRC server, user-land TCP implementation, and IP router in C from the relevant RFCs.
Advanced Networks: write Byzantine Generals, Raft, and Paxos from the papers.
Programming Languages: write several interpreters.
Parallel Programming: write efficient concurrent algorithms, implementing concurrency primitives yourself.
Software Construction/Engineering: learn to collaborate with a team. Lose your fear of merge conflicts by immersion therapy. Experience the pain of people not pulling their weight.
Intro Security: given a pseudorandom function, write your way up to a PRNG, stream cipher, RSA, Diffie-Helman, and an authenticated encrypted channel.
Databases: write most of a database engine.
If graduates are passing these classes but can't write code, or find it remotely difficult to get to a passable level on any of the tools you listed in a matter of hours/days, then the CS program at the schools they come from are not nearly rigorous enough and should lose reputation in favor of those that are.
A graduate of a decent CS program should have a decent idea of how to create these tools, and be capable of doing so, though with considerable difficulty. Consuming them should be pretty easy.
[0] http://web.stanford.edu/class/cs140/projects/pintos/pintos_1...
Other than Intro to Systems, which is required, these classes are representative of a list from which you choose 8. There's also 3-quarter intro sequence (all programming) and the 3-quarter theory sequence (all proofs, some pseudocode). You could get away without taking some of these, but then you would do similarly substantial programming projects in other domains (compilers, machine learning, 3D modeling and rendering, visualization of scientific datasets, etc).
Our department tends to be derided as "very theoretical", so I'm surprised to hear that we do more programming than others.
To be fair, you could also load up ~6 of your 8 with proof-based math classes about CS theory (graph theory, combinatorics, mathematical logic I-II, whichever of complexity or formal languages you didn't count towards the required theory sequence, etc) but the people who do that are on tracks towards PhDs in math or the subset of math that is CS theory, not the programming job market.
HN threads about CS education tend to posit that it shouldn't matter where you go to school because ~all CS programs are the same, so I assumed my experience would translate. Perhaps this is not so?
I do think that the more selective schools graduate better people largely because the start with the better people, but don't think the school makes zero difference.
I learned
1) Very crude Java (not enough to do anything else, just the bare bare basics).
2) Very crude C++ (just enough to mess up pointer referencing, not enough to code anything useful)
3) A tiny bit of LISP (mostly enough to make homework work, to this day I am still not good at LISP).
4) lots and lots of Math I have not used since college
5) Lots and lots of Physics I have not used since college
6) How to log into a SPARC box and use VI (I do use the VI portion, and the *nix skills, but not so much the SPARC stuff)
7) Nothing about source control, testing, html, css, databases
8) Nothing about security
9) Nothing about design patterns
I see sibling comments complaining about the state of CS education, but new graduates actually have among the best signal-to-noise ratio; it's the people that have hopped from job to job trying to hide their incompetence that are the worst.