Having years of experience in both environments.
I'm serious about this: I personally beta tested (i.e. delivered to my home) MS
Windows 3.0, 3.1, 3.1 WFW, W95 (Chicago), NT (pre 3.1), MS C 6.0, MS C 7.0, NT
3.5, NT 3.51, and NT 4.0. I have also been working with Linux and FreeBSD since
1995. I even wrote a couple programming chapters in the book: Tricks of The
Windows 3.1 Masters. I was a real Windows advocate.
OK, credentials aside, lets get to the discussion.
The reason I no longer enjoy programming on Windows is that expertise isn't
about understanding how computers work, I made my reputation about knowing how
Windows worked inside and out, and knowing how to get around limitations. It
was also about keeping "up to date" about the changes coming in Windows. The
new APIs, the changes to existing APIs, etc.
It was keeping track of MS trivia, not inventing anything new or cool.
The last few years have been real fun. I have been working with Linux and
FreeBSD. I have been able to focus on what I want to accomplish, not periodic
changes in the various APIs. I have rediscovered the things that I liked about
computers. If have done some Windows work, but have found it tedious.
In the last few years, I have enjoyed working on language analysis tools, a
search engine, music ID system, shared memory daemon, some Beowulf stuff, and
am really liking PostgreSQL.
Joy of work wise, Linux and FreeBSD rules, Windows just plain sucks. I really
hate it. Not because of Microsoft, exactly, but because the UNIX environment is
more mature with people more interested in doing something right than doing
something half assed to make a marketing deadline.
5-4-3-2-1 Thunderbirds are GO!