For everything else - and "everything else" includes large swaths of lucrative, profitable programming activities, including something like two-thirds of the internet - Windows is simply excruciating. I'm not exaggerating; after spending the past year or so developing on Ubuntu, I don't know how I managed to get anything done before.
The Windows command line is minimally usable (I have to right-click on the window frame to pull up a context menu that provides select/copy/paste functionality? Really?) and its language is minimally powerful (I understand powershell improves significantly on this).
Unless you're moving files around a Windows network, in which you can map drives in Explorer, such basic network things as FTP/SFTP require clumsy third-party GUI applications and your choice of FOSS options is severely limited. SSH requires a clunky third-party tool like PuTTY or a Posix emulator like Cygwin.
Native support for open source database servers like MySQL, Postgres, and SQLite is dodgy at best and requires bolted-on interfaces. More exotic, innovative database systems are generally out of the question altogether.
Some programming languages, like Python, are reasonably cross-platform (though in the case of Python you're still stuck with a choice between using the crappy Windows command line or the slightly-less-crappy IDLE IDE built in non-native Tkinter), while others are much harder to get working.
Java is fully cross-platform and has IDEs that work as well on Windows as any platform, but there's no particular reason to develop Java on Windows rather than another OS.
It's true that installing Cygwin makes a lot of the deficiencies of Windows go away - but that's by emulating a Posix environment such as you'd find natively on Linux or OSX, which is kind of the point about Posix being generally a much better platform for programming than Windows.
I worked at Microsoft on the Visual Studio team for four years. I love Visual Studio. Visual Studio is awesome. That doesn't change the fact that I (and lots of other people) firmly believe that writing Rails applications on Windows is a miserable experience.
But shoot me dead if I ever have to do a real, actual, useful, standards-compliant website in Windows with Visual Studio. I'll take me screen, shell, Vim, Python, and SSH over it any day.
I started developing software professionally about a quarter of a century ago, on Apple IIs using the built-in BASIC, 6502 machine language and assorted toolkits for graphics and animation. For a long time, I used Microsoft technologies, from Actor (a Smalltalk-like environment that ran on Windows) to Visual Basic, Visual C++ (mostly for WinCE) and assorted MS web technologies. I also did a lot of web stuff on Unix platforms at the same time. It was not until 2002 that I made my switch to Unixes complete. Unless you develop for Windows, it makes little to no sense to develop on Windows and, as far as you are comfortable with other platforms, it makes little to no sense to deploy to Windows. It's expensive, not particularly predictable and the hood comes soldered. Not a good thing on a server.
In fact, I like to develop on a platform as close as possible to the deployment platform. It makes a lot of sense.
Development stacks are tools. All I implied was some are much more refined than others.
With time you'll learn.
Obviously, I never noticed Ruby can't do SQLite on Windows. I find that somewhat weird, as Cygwin appears to hide Windows very well and has its own builds for Ruby and SQLite (I use Cygwin's Python instead of win32 Python.
At first, I was considering to congratulate the author for being able to use "developing", "on Windows" and "joyful" in the same sentence.