I worked quite a bit on both platforms and, like both of them, but overall I found that most developers liked one thing and hate the other.
I would describe * nix as "geek friendly": many excellent and very flexible tools at your disposal. Some of them introduce a rigid learning curve, and some are simply broken, but still popular for some reason (make), but if you are willing to spend some time on the right training, the reward is high. In fact, I use many * nix tools even when working on Windows: vim, grep, perl, etc.
On the other hand, the Windows platform offers the Win32 API, which has more functionality than POSIX, is very well documented and supported by very good tools. Windows debuggers (especially windbg) are generally more powerful than any * nix debugger I've tried, although gdb is usually good enough for most tasks. Deploying executables is also easier than in the Linux world β in fact, the only really reliable way to deploy software on Linux is to send the source code and build it on client computers via config / make.
source share