He's totally missing the point of studying computer science. It doesn't matter if you are using Linux or Windows during your studies; a proper education in CS will give you a foundation on which you can easily adapt to any platform, language, or environment. My school was almost entirely Unix-based, and my first job was with Microsoft. They weren't concerned at all about whether I was familiar with the Win32 API, C#, COM or anything similar - and this attitude was consistent across all new hires, not just college hires. Most competent companies (the ones you want to work for) will recognize this as well.
But in any case, there are an enormous number of jobs that do not require knowledge of Microsoft-based technology.
The majority of commercial software shops are probably developing on the MS stack. Smaller shops, startups, small online services are more likely to be on the LAMP stack. My shop is on the MS stack, and we will hire people with solid OO design, database design, and n-tier application architecture chops. The toolset isn't important.
Likewise, when looking for a job, look for people making something you wants to make, with similar attitudes and interests to yours, and care less about the tools they're using.
The comments at Stack Overflow are all over the map I notice.
That said, the company I work for has an IT department that is not happy at all to issue non-windows boxes for employees. You can have one, but then you will have to manage it yourself. We have a couple Windows servers but all our software run on *nix-ish boxes.
At least I could install cygwin and X on top of XP.
Depending on what you have to do, it's not, but I have to edit documents that live in a sharepoint server a couple times a week and I never quite figured out how to do that without a Windows box. That and exchange managing our e-mail makes moving my corporate-issued computer out of Windows somewhat risky career-wise.
Believe-me, I have meditated on this more than once.
You can access basic IMAP from an Exchange server. I was using thunderbird at my last job and it worked fine. Connecting to the LDAP server for the global address book took a bit to figure out. I finally got it all connected and figured out though. If your Exchange usage is more than email and shared addresses I don't know how much further you can get into it without Outlook. Not because it's impossible only because I didn't try to do it.
As far a sharepoint goes I don't have any real experience with it but it looks like you are able to use it on linux but the activex controls will not work(of course):
Sadly, we use Exchange for corporate calendar and contacts. Evolution sort of works, but I have seen it refusing to connect or update stuff more than once.
Had I sufficient memory (machine has 1 GB of RAM), I would go down the VirtualBox/VMWare route.
The machine I have has one 1 GB of memory. I could run Windows under a VM, but that would consume precious resources for the "good side". There is a lot of "heavy" stuff being done in IE (ActiveX for Project and so on).
Yeah, that's a good reason not to, especially if you will need to have your Windows VM running constantly. RAM limitations was why I never tried running Linux as main OS and Windows in a VM on my previous workstation. I had 2GB but that was already being stretched thin by running Eclipse and Visual Studio at the same time.
I work in a university department and the situation is exactly the opposite. When a new grad student arrives, they're set up with a Scientific Linux machine (a version of RHEL modified by CERN and Fermilab).
My feeling is that a lot of science jobs will rely on the Linux/Unix platform. Backend or system control type things are on Linux and a lot of personal computers are OS X.
Knowledge of Linux is what greatly helped my software engineering career: I've been told at interviews how rare it is to find a software engineer who understands the OS as well as operations/systems administration concerns.
If the author is seeing only .NET/Windows jobs, he should either modify his job search query (or look on different sites) -- to look for employers where software development is the core competency (versus "IT" programming jobs), or look elsewhere (either on another job site or in another geographic area). In addition, if he knows Java learning .NET will be trivial.
I have the distinct impression that familiarity with the command line and the Linux's commandline tools give me quite an edge over Windows-based developers I work with.
- Something wrong with the build? Use ant or maven from the command line, so I can be sure it isn't the IDE screwing things up. Should be possible for Windows developers, but I've never seen'em manage it.
- Need to collect some data from a log file? Grep/sed/awk are often fastest and sufficient.
- Windows desktop search nowhere nears the power of 'find'.
- Hmmm, what port is the JVM debugger listening on again? ps auxwwf | grep java. Ah yes, 9001.
I would feel extremely handicapped developing on a Windows system.
I contracted at Microsoft a few years ago, and even they didn't use Visual Studio, just vim and a make clone with some extra win32 support (build.exe) and sometimes windbg.
I can actually get by on a Windows box with just Emacs and Perl, though I do miss stuff like lsof.
But in any case, there are an enormous number of jobs that do not require knowledge of Microsoft-based technology.