I program on Linux here's why.
1. Every library known to man exist for Linux and is very easy to install, build from source, hack on, and customize, especially if you know what you are doing. This is comparably easy enough on Mac since its Unix based but Windows is its own beast when it comes to building from source and getting custom libraries working, etc.
2. You have complete control of your operating system and programming environment.
3. I don't program for iOS or .NET, so I don't need anything offered by other operating systems for Development purposes.
4. The languages I do program in have great ecosystems and development environments on Linux. These are : Android, Ruby, Java, JavaScript, Python, R and the occasional C/C++.
5. I don't write desktop software and virtually all software I create is deployed on Linux systems, so I write my code in a similar environment to the one its going to get run in (exact environment using docker, vms, etc if necessary).
6. Finally, I'm philosophically much more aligned with the democratic and decentralized spirit of Linux and Open Source than I am with closed source and centralization espoused by Msft and Apple. Admittedly, if their products were significantly better for my purposes as a programmer - I'd use them, since I'm not a Richard Stallman, but this is still one of the reasons I continue to use Linux. I think its a positive thing for the world.