https://medium.com/commitlog/electron-is-cancer-b066108e6c32
https://medium.com/commitlog/electron-is-cancer-b066108e6c32
All anecdotal, but I've seen a bit too much people with CS degrees who were clever enough, had all the knowledge, could produce smart algorithms and everything you want. But the code would just work and that's that. Like: build process only works on their machine, git history like written by a child or non-existent, code impossible to integrate in other projects, trainwreck-like, violating anything you can think of and so on. Is that bad? Well, yeah, but it's also pretty normal and it's not always problematic: teach them some more in an actual team and the really good ones will be better than you in no time.
Also, writing code that barely works and barely gets its job done is a skill ;). Ideally, it means that the person knows how to get something done with minimal effort when that is all that is needed. I noticed that I started to lose that when the projects I worked on became larger and had to meet higher demands. I tend to do stuipd things like one off scripts "properly" when simple hacks would get me there faster.
If I use free software, I will probably prefer to interact with the X11 API or GTK. If I want to develop commercial software I probably want to learn Windows APIs, etc. Forcing everyone into a specific OS is not a good way to teach IMO.
The low (initial) cost of them already explains it too well.
* My experience in University: I had to code in Assembly language, C, C++ (to learn about memory allocation, pointers, garbage collection - f*ck valgrind - ), Smalltalk / Pharo (for real object-oriented), Python / MatLab (for math things), and Java (for algorithms).
edit: Add Smalltalk/Pharo
A university CS program should force the students to deal with many languages and - importantly - their concepts. A single implementation language for all courses is certainly too little. Show them what it means to dereference a pointer in C, how to write a loop and a function call in assembler, what smalltalk objects can do by passing messages instad of calling methods etc. But I think that having a main language in a CS program is a good idea becaue it allows the teachers to pose more interesting implementation excercises if the students don't have to spend time to learn yet another language while trying to solve a problem.