Recs.
Updated
SpecsUpdate
Pros
Pro Package managers
You can install any library or package that you need (gcc, php, node) with just a couple of commands in the terminal.
Pro Familiarity with Linux is often required from a developer
Many university computer science programs are based on Linux and in any case, you will inevitably be dealing with a Linux box of one flavor or another someday, be it a server (most likely) or a workstation. The languages and methods used in the Linux/Unix environment (e.g., bash, C, C++, Make, etc.) are very commonplace among developers and are to the computer side of the discipline what the English language is to the human side of it: the common language.
Pro Hardly ever crashes
And if it does you can often drop into console and fix the error before returning to desktop.
Pro Easy to setup development environment
It's very easy to setup the development environment. In fact most of the time you don't even need to do much. For an example you don't even have to install GCC if you are coding in C/C++. Some distribution comes with JDK or JRE pre installed. Even if it doesn't, it's very easy to install a JDK than on Windows. There are plenty of free and open source / proprietary IDE's available.
Cons
Con Issues with drivers if your hardware is not officially supported
With some proprietary hardware (eg:NVIDIA) you may have a hard time setting up your drivers. But most of the time, some distributions handle hardware better than other operating systems, especially when it comes to older hardware.
Con Maintenance can be time-consuming
You are gonna have to go through a lot of documentation to fix if something breaks. But that time is totally worth it if you are willing to pay it. Because it is likely that you'll find a fix 95% of the time.
Con Too much customization
To get features on par with OS X, you need to research packages, install them and configure them. Even then, it may not be as good as OS X.
Con Less and worse professional software is developed, due to the low user base
Depending on what type of work you are doing, you may find Linux software lacking compared to their Win/Mac counterparts.
For example in game development, tools, like Unreal Engine or Unity, usually lack in quality or novelty compared with Windows. Having crashes or bugs that aren't fixed for a while.
Con A wide variety of distributions available
With a lot of variety, one cannot deploy to a single system and has to prepare for a bundle of distributions, instead of just one.