The only problem I have with Linux is the difficulty for a beginner to find his way around. I take an example that happened to me recently.
I developed a small site for a friend that I sent him to test. As it was for his company, he first had to install this site on the machine and unfortunately for him it was running on Linux, Ubuntu more precisely. Fortunately I’ve been working with Linux systems for a while so I already knew about them but he didn’t. I just imagined to ask him to type the command lines to install the packages and knowing him it was going to be difficult, I asked him to download Xampp and to install simply and even there to install you have to type a command line. Instead of a simple click on Windows. He managed to install. I said Phew without knowing that it was the easiest. After going to the htdocs folder to copy the files I had sent him, there Bam a problem of user rights, I spent 1 hour to explain him how to open the terminal in the directory where it is, change the access rights for this directory and there I understood that the teachers have a great patience and know how to keep their calm. And when we thought that it was and we launch the server we see that the port for the DBMS is already listened. Two solutions, change the port in the server config (which was going to be a journey for me to explain to him so that he understands at least 2 hours of time) or find the damn process that listens to this port and “kill” it. But there again, there is a miriad of possible commands to find such a process whereas on Windows, you have your task manager which lists them very simply and easily. We tried netstat…nothing…lsof…nothing! I gave up after 2 hours. We started at 9am and at 1pm we were still trying to get the server up and running. Fortunately in the meantime I asked him to launch Xampp on Windows, to finish we went back to Windows, he installed Xampp in 10-15min, opened phpmyadmin and Import the database, went to the application folder to delete the previous cache from Linux, opened the browser and everything was good. In 25min the site was clean on his Windows machine while his Linux was next door.
So Linux is good, but you have to be prepared to have headaches sometimes or even several times while Windows is just fine. It only becomes bad when you go to play in a very hostile land. Ex: Its registers.
The best OS is the one you master.
We have only Windows machines, connected to Windows servers at my work, we have Office licenses and therefore no OpenOffice installed (important detail for in 2 paragraphs).
One day, a dev wanted a Linux because it’s definitely better for real devs who are not amateurs.
The SysAdmin said to him, OK but you have to manage from A to Z. He said that was fine.
The guy never managed to connect a printer, he was sending me .odt files by mail and asking me to print them. Apparently even exporting to PDF was not in his logic.
If you master an OS and are comfortable with it, this is the one. If you are curious about an OS, it will be the right one as soon as you master it, if you are more comfortable with it than with your current one. But never let the hype lead you to an OS just because professional speakers have decided so.
Tell me which is the best way to get around, walking or driving? You will tell me that the answer depends on where I have to go, the distance, the weather, if I am in a hurry, if I have my license (!), if I have to go alone, if I have to carry something etc.
The answer to your question is just as impossible to give as it is: the “best” to code what kind of software? in what language? for what users? what is your knowledge in computer science? etc.