Thursday, July 08, 2010

Is Linux harder to learn?

Last week I had a long phone conservation with a good friend who moved out of the area a few states to the East. I haven't spoken to him in a few months, just things were busy here and he was busy with his move. After the phone conservation moved from catching up, I mentioned how I'm working in a multi-OS environment with Windows and Linux. As I was giving some details on a recent headache, my friend commented, "I tried to learn Linux but it was too frustrating".

I actually was surprised by the comment not for the fact that he was learning Linux but the fact that he struggled with the OS. When we discussed how similar in a problem I was also at, and that many books while aimed towards new users, were very unclear, it made me wonder is Linux really more difficult than Windows to learn?

What are we used to?

For most users, their first experience with a computer is a Windows desktop. This might be a simple desktop with a mouse and keyboard setup, running general applications such as Internet Explorer. Now from a user's perspective, this is a very simple to use computer, little to no knowledge is needed, you could get someone up and running within a few minutes. Possibly in a day you could have someone running decently understanding how to create e-mails, writing documents, save/copy/paste, basically do simple tasks on the Internet.

Now let's break down how the user is viewing the computer. For most users, there is mostly visual memorization how to get where, such as icons, when you right click the drop down menu shows your available options, etc. Thinking about this, moving toward a non visual OS would be a big change but how hard is this really?

Why it's hard to understand the basics

When I first started playing with Linux I ran the desktop version on my home computer, did a few simple applications and that was it. Beyond a different and free OS, there wasn't much else I could do. Why? For one part, I was heavily tied to applications that were not available on the Linux platform, for example Microsoft Office and Adobe Photoshop. I was used to using the same applications on Windows and my problem was not with the OS but not understanding how to use a application.

Once I got past the transition and understood OpenOffice and Gimp, I was able to pretty much work as normal, there was some adjustment period but soon after that, everything was the same. Thinking the same thing towards using the command line, it's very similar. You are used to using the mouse, then switch over to using just typed commands, which takes some time but like switching from one application to another, it's a matter of getting used to the new functions.

Another point why it's hard to understand the command line is how much it's used in Linux verses Windows. In Windows almost everything (except maybe a few functions) are done with a mouse on the GUI desktop. I've been an Windows admin for a few years and the only functions I know of that really require command line knowledge is when you are doing high level admin changes, or running commands for the Powershell environment. In most cases the majority of functions and settings are done from a visual menu, while there are some applications that use config files it's not nearly as common as in Linux.

For even a high level Windows user, it's easy to see how you can get by without ever using the command line for anything more than simple commands. I worked with some IT staff that could not even run the simplest of DOS commands.

Is Linux and the CLI really more difficult?

My first adventure in the CLI was not met with success. I think I battled for a few minutes just to copy a file, other times I was trying to move the cursor in Vi. It was a somewhat steep learning curve, but once you have a understanding of the basics it's actually very fast.

For example, you want to view the log files on the server. Let's think about this from Windows, you need to right click "My Computer" then select "Manage" then expand "Event Logs" and from there click "System". Ok, now let's try this from Linux, from the command line enter "tail /var/log/messages". That's it. You get a return of the most recent events for the server.

Now while the method described for Windows can be shortened, that's the most common steps to view the logs. It's actually more difficult than remembering one command line, but it's again the same problem that most people are trained visually to use their mouse than remember commands from memory. Once you get down the basics, which are not too hard, things start to make sense.

Text files vs mouse clicks

One area that also took a while to fully understand was why most Linux applications use text files to store their configuration. In Windows you can make changes by clicking on an application usually under the "settings" window. If you ever worked with DNS servers you know that working on a Windows DNS server and a Linux Bind DNS server is very different. One server you can see visually the settings where the other is all stored on conf files.

Which one is easier to work with? If you asked me a few years ago it was Windows hands down but recently it's been Linux. I found out that when you keep a conf file in a text format while it's more difficult to view, it is extremely easy to save. Now think of this, you want to save your configurations, then make a change, but the change caused a problem, how to you revert back.

With a text config file it's very easily done, but with a regular Windows application it's much harder. How do you export your settings and then import the same settings again? It's understanding that once you know how to use the other OS correctly, it's not that hard to learn.

No comments: