I’m a computer science undergraduate student at the University of Maryland. This is my last semester, so I’ve seen most of what the CS department at UMD has to offer. And I’ve come to one conclusion: Microsoft is not doing well in educational environments, and as a result, most computer science graduates aren’t familiar with Microsoft’s software development programs and will not choose to use them after they graduate and go on to hold jobs if they are offered the choice.
Academic environments at the university level tend to be very Unix-y. University of Maryland is no exception. All of their servers are running Linux, Unix, Solaris or other variants. I’m not aware of any Windows servers that are run by the department (nor the campus-wide OIT servers, for that matter). All of the department’s computer labs are running Linux (some can dual-boot into Windows 2000, but I don’t see it very often), and most of the professors’ personal computers are running Linux as well, except for the professors who are using thin clients connected to a Unix server.
The impact of all of this is that students are never exposed to Microsoft programming products. Yeah, everyone knows Microsoft Word, of course, but nobody is learning tools like Visual C# .NET or other proprietary Microsoft languages and software. All of the programming assignments are done on the Linux/Unix/Solaris servers. You can write your code on a Windows desktop, but if it doesn’t compile and run on the server, you’re hosed. And since many of the languages we deal with aren’t inherently cross-platform (and some aren’t even free, like Allegro Lisp, which I used in two classes), most students end up SSHing into the servers and writing and testing their programs from the command line. So everyone is learning and using command line *nix stuff.
Now compare this to the lack of penetration of Microsoft products. At my job at NIST I was writing programs in Visual C++ .NET and Visual Basic .NET. It took me a little while to get acclimated to all of Microsoft’s proprietary libraries (such as MFC) and IDE because none of it is taught at University of Maryland, at all. There’s one guy in the CS department who I know to be referred to as the go-to guy for Microsoft stuff, but that moniker is actually dripping in irony. He’s a huge Linux zealot, but due to extenuating circumstances (I imagine), he ended up learning and using Microsoft products. But he doesn’t particularly like them, and he’d never choose to teach a class using them rather than all of the *nix infrastructure that the department already has.
I don’t have a lot of other data points, but I suspect it is largely the same across the nation. When I visited Carnegie Mellon I saw that their computer science department was heavily Linux/Unix-biased. If anyone has any other anecdotes, I’d love to hear them. All of the non-computer science department computer labs on campus are Windows and Mac, but they’re just for people who are using computers for non-programming purposes. People who are actually using computers to program computers almost exclusively use Linux. And it doesn’t bode well for Microsoft. Their failure to penetrate higher educational environments is hurting their ability to penetrate into production environments. And it certainly adds a big training cost to their hires of recent graduate, who have to be retrained on the “Microsoft way” of doing things.