Why You Should Learn Linux
Why should you develop on Linux in a world where the environment for developing on Windows is constantly improving?
To be clear, I'm not here to talk dirty about Windows developers. If you are happy and productive developing on Windows, that's fine. My main goal is to advocate why you should also learn to develop in the Linux environment.
The Three Areas to Master to Learn Faster as a Developer
A person once told me that there are three areas you need to master to learn everything easier as a developer. These areas provide a solid base that helps you understand how things work under the hood, making you learn things faster. Those fields are C, Unix, and Computer Networking.
It is not up to me to say that these are the only fields in which you need to build a solid base. I know my way around in both C and Unix Systems, I'm learning Computer Networking, and those fields provided me with a solid base that helped me learn most of the things I needed to know in the Computer Science field.
Yes, Linux breaks, but only if you do not know what you are doing
Let's talk about the ugly stuff first: Yes, when you start, you will break your Linux many times.
I have been using Linux for the last 11 years. During that time, I broke it countless times. By broken, I mean I either damaged my installation or did something on my OS that badly injured my user experience, and I had no idea how to fix it.
99% of the time, your Linux will break because you have too much power on your hand, and you have no idea how to handle it. When your Linux breaks, it is solely your fault. You must understand why you damaged your system and why the fix you applied fixed it.
My main mistake was not trying to understand why things went wrong. I googled the error, copied/pasted the most upvoted solution on Stack Overflow, and hoped for the best. This is bad because you will not learn how to avoid breaking it again and will get stuck in a break/fix loop.
I changed this behavior four years ago. I started to study why I broke it and how the fix worked, and guess what? My Linux started to stop breaking because then I understood why I broke, how not to break it, and how to fix it. I learned much more about my OS in those 4 years than in all the previous seven.
When your Linux breaks, it is a great opportunity to learn and evolve.
Most of the world's servers and clusters run on Linux
Most of the Internet runs on Linux, but that's not all, Linux is the common language among most developers.
Let's say you want to build or run locally a tool, such as Apache Kafka, the commands you will see on README.md are written in bash, which is the most common language we use in the Linux shell.
What if you want to download an install script from GitHub and run it on your machine, such as we can see in the Luaver repo? Well, you will face a command such as the one below
curl -fsSL https://raw.githubusercontent.com/dhavalkapil/luaver/master/install.sh | sh -s - -r v1.1.0
That is also bash, which is part of the Linux environment.
Can you see my point here? If you do not learn Linux, you will keep hitting a wall on your skill development because Linux is everywhere.
Is Linux still harder than Windows to learn?
Yes, it is. As I said before, you are too powerful on Linux, you will keep breaking your system and won't get out of this break-fix loop until you acquire some basic understanding of how your OS works.
But just because you have to solve more problems on Linux, it does not mean it is harder to solve them than on Windows. What I'm trying to say is that usually, the experience of dealing with and solving Linux problems is way smoother than when dealing with Windows problems. Why? Because people deal with Linux problems frequently and ask for help online, I can assure you that for 99% of your problems, you will find a solution easily in a simple Google search, the solutions will also be quick to apply and will probably come with an explanation among them.
What about WSL?
Windows Subsystem for Linux (WSL) is a great start. It will allow you to get the feeling of the Linux shell and get the basics of your way around without needing to install Linux directly.
But what you must know is that WSL has a lot of problems when compared to a full Linux OS. Because WSL is basically a virtual machine of Linux running on Windows, it will be a lot slower and memory-consuming, some packages will not be up to date and sometimes will not be as functional as a Linux distro.
Feel free to start with WSL, get the hang of it. But don't stop your Linux journey there.
TL;DR
Although Linux systems have improved and gotten way more beginner-friendly, they are still not as friendly as Windows. You are going to have many bad times with it, things are going to break, and it is okay. But if you use the right approach for when things are broken, it will pay off, In a relatively short time, you will get better, your developing speed will grow and you will have better usage of many tools you use daily as a software developer.