I have had several conversations with people recently who frustratedly asked me the question, "Why is Linux so hard?". I have had this conversation enough that I think it is time for a post about it. Before we dive on in though, a quick disclaimer.
While I prefer Linux to other OSes, I will try to avoid making quantitative statements about other OSes. I think they all work fine, though I disagree with them somewhat. I just prefer Linux. I also don’t think anyone more or less intelligent for preferring one OS over another.
Let’s get started!
Firstly, let’s talk about who talks to me about their Linux frustrations.
Regular Windows users
.Net developers using Windows
Firmware developers using Windows
Java developers using Windows
Security analysts using Windows
Regular MacOS users
Developers using MacOS
You might notice a trend in that list. Each one of those people uses Windows or MacOS primarily. This brings me to my first point. If you have a preferred OS already, you also have preconceptions about how an OS should work. Those preconceptions line up with the way your preferred OS operates.
If you live in the United States, consider how different Europe is. Their traffic signs are in different languages, speed limits are usually in kilometers per hour rather than miles per hour, the UK drives on the left and not the right, stoplights work slightly differently, they drive manual transmissions and the US drives automatic. All of this is so very different from the United States, yet traffic still flows relatively fine in both parts of the world.
To bring this to operating systems, when you take a look at the filesystem looking for your personal files, you’ll either look for C:\Users\Me or /Users/me. Linux keeps this at /home/me.
Consider that in Windows, your settings are all in the binary registry. This has its pros and cons. Linux stores most of its configs in text files in /etc/. This also has its pros and cons. The Linux/POSIX developers just solved the problem in a different way. Incidentally, IBM’s AIX has a hybrid text-based config file system and a binary registry, but you still don’t interract with it like you do with the Windows registry. HP’s HPUX does not, and is more like Linux. MacOS also stores its configs in text-based config files.
Another great example is that MacOS uses the command key for hotkeys, and Windows and Linux use Ctrl. If you want to copy some text in Windows and Linux, you would use Ctrl + v. In MacOS you would use command + v.
Every OS is different because they were developed by different people with different ideas on how to solve the problems at hand. This doesn’t necessarily make an OS bad or more difficult than others just because it is different.
To be honest, I have rarely heard frustrations about the difficulties of Linux from someone trying to use a desktop Linux distro (like Ubuntu, Mint, or Manjaro). Those distros are designed for ease of use. Most of the time, I hear frustrations from someone who is trying to configure a Linux server.
That said, a Windows desktop support professional is not the same thing as a Windows server administrator. The knowledge required for those two jobs is significantly different, and arguably the Windows server admin skillset requires much more time to learn than those required to be a desktop support person.
You should not think that Linux as a server should be just as easy as Windows or MacOS as a desktop. The Linux desktop distros are just about as easy to use as Windows or MacOS, but a server requires much more knowledge to run than a desktop, regardless of which OS you are using.
Another reason you might have difficulty with Linux is because you don’t have enough experience with it. This may seem like an obvious statement, but I would like to argue that an operating system is not meant to be easy. Sure, we try to make them as easy as we can, but if you consider how much your operating system does, you might begin to appreciate the difficulty of learning all the properties (especially the advanced properties) of it.
Consider, that [depending on your age] you have likely been using your preferred operating system since childhood. During that time, you played, experimented, failed, experimented, etc. You did that through high school, college, and your adult life. Being conservative, I would suggest that amounts to about 10 years of experience with your OS of choice.
How many years of experience do you have with Linux? If you ask anyone who has used Linux for 10 or more years, they probably won’t say it is that hard, except maybe to say that every OS has a learning curve.
Further, for many years, people have wondered why children learn languages faster than adults. My personal views on that aside, I think operating systems are no different. Linux is likely your second or third OS. Plus as an adult, you likely already have a full time job, personal life, schedule to keep, meals to cook, children to take care of, etc. You likely don’t have the time to learn Linux to the level you know your preferred OS. You almost certainly don’t have time to put 10 years in or to condense that time without sacrificing productivity somewhere else.
Many of the people I have spoken with about why Linux is so difficult have little to no experience with Linux, but are trying to do very advanced things with it, usually out of necessity for their job. This explains why they think Linux is so hard. You didn’t start using Windows by programming serial busses, doing block device forensics, or building and configuring web servers did you?
No. You probably played solitaire. At the most complex, you probably worked on some documents or browsed the web. These things are very easy on desktop Linux distros as well, but that isn’t where people tend to start with it for some reason. You can’t jump in to some of the most complex parts of Linux and expect you knowledge of your preferred OS to work in the bowels of Linux. No complex tool works like that.
From a desktop perspective, I don’t disagree. Admittedly, Linux has a relatively steep initial learning curve. Linux is definitely harder to learn at first, but is easier to learn the more advanced operations once you get past the initial hurdle. Conversely, Windows and MacOS are very easy to learn up front, but the more advanced operations are significantly more difficult. A lot of this has to do with assumed defaults that Linux prefers not to make but the other OSes do.
Also, per the first point of this post regarding servers versus desktops, servers can’t just work. By nature, they are complex, serve many different purposes, and require some relatively advanced knowledge to successfully build and configure.
Using an operating system in any advanced capacity is difficult unless you have already invested the time in learning how to do what you need. Unfortunately, companies often want to use Linux because of its cost (free), without first considering whether their workforce posesses the skillset necessary to administer it. I don’t want to sound dismissive, but this situation is caused by poor decision making, not Linux.
But moving forwards, consider that whatever the reason you need to learn the mystical black magic of Linux, is in fact not a problem, but an opportunity. Knowing just Linux opens up a very large portion of the job market to you. Knowing Linux and another OS further opens the job market. Plus, they say doing your routines in a different way is good for maintaining neuroplasticity. :)
Last edited: 2018-11-04 00:01:00 UTC