At my old job in the UK, we always got better results hiring engineers from Imperial College (which is the UK attempt at an MIT/Caltech-type of school) than from Oxbridge.
We eventually figured out that the Imperial students had written thousands and thousands of lines of code by the time they graduated, in several different types of languages (Prolog, Haskell, C, Verilog, Java, Python, Javascript) and at all levels of the stack (they were writing drivers, theorem provers, machine learning code, games, web apps, etc.). The students had been using Linux as their daily driver for 4 years, the command line experience of ssh/git/grep and the rest of it was native for them.
The Oxbridge students had done a lot of hardcore mathematics and a lot of proofs of theoretical computer science concepts. Brutally difficult.
But the Imperial students would roll in, sit down, and within a few weeks (after we taught them about tests) would be pounding out large swaths of working code.
The Oxbridge students would start to get stuck once their programs hit 1000 lines, and would spend days refactoring little functions and making things pretty rather than just getting stuff done. They simply had never dealt with large, real-world code before.