Why Linux is Hard
=================
:author:  Aaron Ball
:email:   nullspoon@oper.io


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!

. <<preconceptions, You already have preconceptions of how an OS should work>>
. <<server-v-desktop, Server VS Desktop>>
. <<not-enough-xp, You don't have enough experience>>
. <<no-linux-to-bowels, People tend to go from no Linux, to the bowels of Linux>>
. <<just-work, But an OS should just work>>
. <<summary, Summary>>


[[preconceptions]]
You already have preconceptions of how an OS should work
--------------------------------------------------------

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.


[[server-v-desktop]]
Server vs Desktop
-----------------

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.


[[not-enough-xp]]
You don't have enough experience
--------------------------------

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.


[[no-linux-to-bowels]]
People tend to go from no Linux, to the bowels of Linux
-------------------------------------------------------

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.


[[just-work]]
But an OS should just work
--------------------------

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.


[[summary]]
Summary
-------

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
link:https://en.wikipedia.org/wiki/Neuroplasticity[neuroplasticity].  :)


[role="datelastedit"]
Last edited: {docdate} {doctime}
