I’m the CTO at Faraday, where we do a lot of hard programming. I’ve been looking resumes of current and recently graduated students from really good universities like Middlebury and also scanning the current syllabus of COS 333 Advanced Programming Techniques, the advanced programming class at Princeton. Here’s what I’m finding.
How do you graduate somebody in a STEM degree without teaching them SQL? It should be an absolute requirement for CS majors, and arguably for many sister disciplines. Here I quote from an interview with the late great Jim Gray:
Frana: So who were the great populizers and the proselytizers for the relational model? Ted? Chris Date? Yourself?
Gray: […] What happened is that the academic community found DBTG and IMS pretty complicated […] And along came the relational model with query optimization, and transactions, and security. The data model was simple enough that you could state it and then start reasoning about it. […] There began to be academic departments, and those departments started producing students. Some of those students went off to form other departments, and some went to industry. It was a self-reinforcing system.
The reason we have excellent systems like Google BigQuery and Postgres is because SQL is theoretically interesting. OK, maybe all the necessary theorems have been proved, so it can’t be an advanced course for the go-getters, but maybe that’s a good thing. Just please graduate people who know SQL.
Why are universities still teaching Java? It forms the core of COS 333 Advanced Programming Techniques. Java teaches you
As a student, if you want to pick up a hot new language like Rust, this is the double whammy - you just won’t understand. Java should be an elective for people who want to work in Java shops.
How about just follow MIT’s example and have students start in Python like 6.0001 Introduction to Computer Science and Programming in Python and then teach Lisp, again just like MIT’s 6.009 Fundementals of Programming? I can tell you that I would be very impressed to hear about this and see its results in code interviews.
Often I see resumes that list Stata or ESRI GIS products front and center. Matlab appears a lot too. That’s fine, I think government statisticians and city planners and professional engineers really use these proprietary products in their places of work. But that is a terrible reason to start students on a proprietary system when such excellent open alternatives exist and in some cases are superseding their proprietary peers. Some examples:
ST_
method calls in Google BigQuery GIS.Matlab gets a pass because Octave is really just free Matlab… in any work environment, I’m guessing you would get the real thing.
Universities pick a bizarre set of technologies that don’t reflect the modern world, or even respect the academic traditions that brought us wonderful things like SQL. As an employer, I wish I saw more candidates with these three basic qualities:
Thank you! Omg.