Buckle up, we’re going on a road trip with this one, but I promise if you stick with me it will be worth it…
In this article I am going to lay out five non-technical tips for the Linux beginner. These are things I wish someone had told me twenty plus years ago when I started to tinker with my first Linux installation.
1) Ask Questions, But Ask the Right Way
I belong to a lot of Linux forums, user groups, and social media groups. There is often a ton of good conversations in these groups about all things pertaining to Linux. These good conversations often hide in a sea of the same questions being asked over and over by people cutting their teeth on Linux. Don't get me wrong, I think it is important to ask questions, and you won't find me getting easily annoyed and screaming (typing in all caps) "GOOGLE IT!", though I often agree with that sentiment. I was once that guy asking the questions others thought were silly, or simple, we've all been there.
It's inevitable that, at some point, you will get stuck on a problem. That's life though and a big part of the learning process. It is also inevitable that you will turn to the internet for answers. First you will search, but searching is often hard when you are new to a subject. You may not know the lingo, or the exact name of a feature or method. It can be frustrating. All of this leads people to ask questions on forums and other online groups.
When asking a question on a forum, or other online group, try not to burden your audience. For example, if you go online and post "I tried to open port 80 on my firewall and it's not working", this question will most likely be met with some level of hostility. The Linux community is one of sharing, but community members also have a firm belief that you should try to help yourself first. What this means is that you should do as much research as possible on the problem BEFORE asking the question. When it comes time to ask the question you should be able to articulate some basic information such as, what distro/version you are using, what you tried so far, your expected outcome, and what your actual outcome was. Let's take this example to the next level:
"I tried to open port 80 on my firewall but it's not working, help."
"I installed apache on my Red Hat 7 system and I am in the process of trying to open port 80 on firewalld to allow web traffic. I typed the following command "firewall-cmd --zone=public --add-service=http" and it returned success. When I then tried to access the web server though I get "the server can't be reached". If I turn off firewalld it works. What am I missing?"
The moral of the story here is do your research, try things, read the pertinent parts of the manual, and then ask your question.
If you follow these rules the Linux community will be your best friend and will help you through any problem. If you just ask basic questions, lacking in detail and/or demonstration of personal effort, you will most likely be flamed or ignored.
This is an important topic, and it's never been covered better than in Eric S. Raymond's "How to Ask Questions the Smart Way". In my humble opinion, it should be required reading for all Linux beginners.
2) Make Mistakes, Plenty of Mistakes
Making mistakes is critical to any learning process and shouldn't be feared. If you are constantly afraid to make a mistake, or if you easily lose confidence because you made a mistake, you should work on turning that around first. Making a mistake doesn't mean you are stupid or bad at something. Every failed attempt gives you a little more information, which, if used wisely, can lead to success. Take notes, write down what you tried and the outcome. Try to understand WHY it failed and think about how to apply that information towards a solution.
If you do this, when you do get it to work you will have a more intimate knowledge of the process. People who learn from books alone often lack this knowledge and it shows when something goes wrong. Trial and error are both your friends.
Reaching acceptance that mistakes and failure are learning tools can be difficult. We often hear this in IT circles, but this mindset is critical and applicable in just about any arena. In fact, if you’re looking for a different take on the same idea you might want to check out Rodney Mullen's Ted Talk on the subject. Rodney is a professional skateboarder from my era. He discusses how the best skateboarders are the ones who take the falls and use that as the engine to drive them to be better. It is an entertaining and thought provoking 18 minutes, and it is just as applicable to Linux as it is to skateboarding.
Back in the old days, we didn't have virtual servers, docker and all the other rapid deployment solutions we have today. Anyone with a decent home PC can spin up Linux on a virtual machine, or spin up a docker image. These tools help you recover from mistakes quickly. Leverage the ability to snapshot virtual machines immediately after install. When you inevitably blow it up, just restore the snapshot and try again.
Do not be afraid to fail. FAIL = First Attempt In Learning
3) Know Your Tools, Let Them Do The Work
This is a phrase passed down to me from my father. Of course he was using the phrase in a different context, but, this holds true whether you are talking about a hand saw, or a Linux pipeline. Having the right tools for the job is important. Knowing how to use those tools is critical for success.
In order to be efficient at anything you need to understand how to use the tools associated with that job. If you were a carpenter, you would obviously need to know how to use a tape measure. You might be saying everybody knows how to use a tape measure. That's probably true, but not everybody knows all the little idiosyncrasies of that simple tool. Check out these four tips and tricks for using a tape measure. There is a reason that video has 18 million views. This person knows her tool.
In Linux, or computing in general, it is important to know your tools. Being a Linux System Administrator there are specific tool-sets designed to make your work easy and efficient. Familiarize yourself with them, and let them do the work. A good starting point for someone learning Linux is the GNU Core Utilities. These are file, text, and shell utilities that come with almost every Linux system and most are go-to tools for seasoned admins.
4) You Can Learn From Anybody
I had the good fortune of working with some very smart people in the beginning of my career. They all had different personalities, and different degrees of patience when dealing with me (a junior admin), but, I made it my mission to suck as much information as possible out of all of them. Even some Principle Engineers who had little to no patience for a Junior Analyst asking questions were able to unknowingly teach me skills that would last a lifetime.
You see, I learned that they would often balk at the idea of answering my seemingly stupid questions, so instead of asking them I just watched. I made it a point to be around when there was discussions of big changes and when it was time to implement them. Always watching over someones shoulders for as long as they would allow. I would offer to do the grunt work just to be involved and remain close to the projects. This allowed me to learn from people with experience. To learn things that cannot, and will not, be learned from a book.
Even as I have progressed into the senior person on the team, I still find myself watching and learning; this time from the more junior team members. They often show me new ways of doing things, some so obvious I wonder how I never thought of them before and others that simply weren't around when I was learning (Ansible, Docker, etc...). This phenomenon holds true because there are usually multiple ways to accomplish a given task in Linux. Many people using the same tools will often use different techniques. It amazes me to see how different people come to the same result from different avenues. Remember, you can learn from anybody.
As a senior team member, I accept ANY question as a valid question. Sometimes I can ramble off an answer out of my head, other times I need to go look up the answer myself. Either way I am learning.
Back in the late 80's and early 90's I was heavily involved in the BBS scene, and there was one SysOp (System Operator) who loved to teach and share his knowledge. He had a quote that was on the top of one of his pages that has stuck with me all these years:
The Smartest of Men are both Teacher and Pupil.-Unknown
5) Patience Grasshopper, Start from the Beginning
In my mind patience is a very personal thing. Different people have different levels of tolerance for different things (that is a mouthful). Some people can easily tolerate a little buzzing from an overhead fluorescent light. Personally, that would drive me insane and I would get a ladder and remove the ballast if I had to. Some people listen to music while they work, it helps them think, and increases their productivity. I prefer complete silence, any music breaks my concentration as I start saying the words in my head.
The point I am making here is that patience is different for every person, but it is always equally important. If you lose patience, for any reason, you become frustrated and make mistakes. Now, I know I said you should make mistakes, but if you’re too frustrated to learn from them then they aren’t doing you, or anyone else, any good. The best troubleshooters that I have worked with all had the same ability to block out interference and simplify the problem.
If you have worked with Linux for any amount of time you have probably come across a situation where you are trying to fix something. You were probably beating your head against the wall because you knew you did everything right. You checked and double-checked the configuration, you searched Google for the errors and you even checked another system that has the same configuration and is working fine. After a few hours you figured it out, and it was something so stupid and basic that you wondered how you missed it. We've all been there.
Most humans have an inclination to become frustrated, and you are human right? Sometimes, after a few minutes (or an hour because I am stubborn) of troubleshooting, I will walk away. I'll go for a walk, get a glass of water, and maybe talk about last night's episode of Criminal Minds, literally anything to remove that frustration. Once I have reclaimed my patience, I go back, start from the beginning, and usually figure out the problem fairly quickly.
Another way that "start from the beginning" helps is understanding to start with the low hanging fruit. I see a lot of people, some new to the industry and, some experts, start troubleshooting an issue from the most complicated possibility. When they get frustrated, their minds wonder off to a place that insists the answer has to be complex. Start your troubleshooting from the basics, remember the OSI model?
So, we’ve been on quite the journey with this one. Some of this seems very common sense, but all too often new Linux admins get needlessly overwhelmed discouraged. If you’re not new to this then preach it and if you are new please don’t give up! Ask good questions, make mistakes (make all the mistakes), know your tools, be willing to learn from anyone, and have patience because you will one day be both pupil and teacher.
Comments are closed.