Windows a good OS for coding? WTF? Maybe if you have plenty of cash floating around to be spent on fancy IDE's and if you're only interested in producing binaries, not something others can easily compile for themselves.
But seriously, for serious coding you need GNU/Linux. Try to do any of these in Windows:
- apt-get install (or similar) state-of-the-art compilers for nearly any programming language
- apt-get install (or similar) *-dev
- get all the sources for the entire OS you're working on, and have the option to add functionality or fix bugs in the OS itself
- automake, autoconf, intltool etc etc make it so much easier to develop cross-platform and localized software
- lots of cutting edge stuff (e.g. academic prototypes) will typically not even be released on Windows in the first few months/years
The big apt repositories are great when the work, but can be an unholy nightmare when they don't. Take the following example on Ubuntu (latest version): a while ago I needed a function that had been in octave for years, but wasn't in the latest repo version since Ubuntu had been dragging their feet for a long time. So I installed a PPA to get it. Unfortunately this caused all my other octave packages to be removed even though there shouldn't have been a conflict. I ended up only able to have one or the other when I needed both.
So I switched to my main Windows desktop (this was at work) and used Octave's Windows installer which had no problem giving me the latest of both. It's not that Octave is more Windows friendly, far from it (they're a GNU project afterall), but that Ubuntu just doesn't care enough. And they (and other repo maintainers) end up not caring about a lot of things. The big distros have to spread themselves pretty thin on caring. So you get a lot of problems like this and dependency hell where it shouldn't exist.
This doesn't mean I'd trade away apt, since 99% of the time it really does work great.
Years ago when I was still developing on Windows I used mingw32 and occasionally cygwin (didn't like chaining myself to cygwin1.dll). These days the same sort of options exist but they're a little friendlier to install and upgrade and they're more up to date with their Linux counterparts. Getting libraries can be painful, since it often means compiling them myself, but once I do I know there aren't problems (like when I needed 32-bit SDL on my 64-bit Mint desktop I had to go through hoops and issues that shouldn't have been a problem.. if I built it myself I'd at least have better assurance that it worked)
The automake et al stuff should at least be easily available these days. Personally I absolutely hate those tools and the abominable scripts they generate. I don't know about state of the art compilers since it'd only apply to experimental and niche languages I'm not particularly interested in.. the big languages like C, C++, Java, C#, Python, Perl, Javascript, etc are all about as well supported in Windows.
These days coding on Linux does have an additional advantage for me - it's generally closer to the handhelds I want to develop for. Normally this isn't that big of a deal but occasionally there are OS specific features that you want to use and I always develop and test as much as I can on the desktop first.