I think Linux users can basically be divided into average users and users who will put time into learning, who are passionate about Linux and eventually are amateur or professional programmers. The average users only want their software to work, and will use the system to accomplish various tasks and not bother with the way things work since they will not need this information. Over the years the ease of use of Linux has advanced considerably, to the point where everything works neatly out of the box, and for the users who only need to use it for basic stuff like web surfing, listening to movies or graphics, there are distributions like Ubuntu or Mint to satisfy their needs. Which is great, since a computer is first a tool, intended to help you do something with it, from a spreadsheet to an advanced graphics or CAD project, for example. The other category includes all the knowledge-hungry guys who usually want to learn more as they advance, who will dig into tutorials, read books, test and experiment.
Of course, most of the time, especially when you need to solve the task at hand in a timely fashion, you will usually just find the quickest way that works, and probably not bother on how exactly does it work. These tips are for beginners, but mostly for those who like Linux as a whole and like to sacrifice some of their own time to go on a path of constant learning how it works.
First, read the introductory tutorials: Read the documentation of your distribution, articles over the Internet about the basics on how it works, what programs does it offer, learn how to install software using the package manager, and start learning how to use the most basic terminal commands, how to make directories, edit files, navigate through the directory structure. Learn what are the standard folders on Linux, what is their purpose. Later you will need to become proficient in shell scripting, since most tasks make your work easier if implemented as automated scripts.
Get real time help on IRC: I find Internet Relay Chat (IRC) to be an invaluable resource when having difficulties in understanding something or when you are in a rush and need a quick answer to accomplish some task. Usually the Linux projects have channels on Freenode and OFTC, and channels like #ubuntu, #debian or #bash can be very helpful. You can as well find help for programming languages, distro-specific questions or just discuss everything Linux on channels such as #ubuntuforums.
Post questions on the forums: The online forums are also very helpful. Each distribution out there has a very large community, part of which is active on the distribution’s forums. For example, Ubuntu Forums is a great place to ask questions, and usually no such question remains unanswered, and moreover, in a timely fashion.
Read the manpages: Although at first a bit hard on the new Linux user, manpages have all the information regarding the usage of a certain tool. They usually contain a description of what the software does, examples on how to use it, as well as all the command-line arguments that can be used. For standard C functions for example, the manpage will show the definition of a function, a description on what it does, possible return values and eventually, some usage examples.
Read the community news websites: Specialized websites in the Linux news domain are a great way to keep yourself up to date, and also to learn new (even if random) stuff. Among the news there are also tutorials featured on these websites, ranging from how to use the command-line and up to how to conquer your desktop using some new, bleeding edge feature. Websites like LXer, Linux Today or OMG! Ubuntu! are among my top recommendations here. But you can also have a look at TuxRadar for example, or the reddit channels for various Linux topics.
Listen to podcasts: Podcasts are live radio streams which you can listen to. MintCast comes to mind first here.
Read technical Linux books: These are probably the most powerful and reliable source of information. You can start by reading some introductory book which will only cover the basics of the command-line and Linux, and will explain in detail the desktop interface of a particular Linux distribution. However, once you advance, there are books which cover shell scripting in detail, programming, system administration, or the Linux kernel intrinsics. Although maybe you’ll never have anything to do with the kernel directly for example, even if you make programs for Linux, knowing the basics of how it works can’t hurt.
Read tutorials: There is a great number of tutorials on various websites, written by Linux professionals. For example some documents at TLDP talk about shell scripting in detail, or Perl programming, or the Linux kernel.
Google is your friend: Even if this seems so old, the truth is if you’re looking for an answer on how to do something, there is at least half chance to find your answer by searching for it on Google. Questions have usually been asked before, on forums, mailing lists, specialized websites (if you’re a programmer, you may find StackOverflow very helpful).
Read the application documentation: You need to do something with a certain program or tool? First try to find help in the application’s help system, which may have a section dedicated to exactly what you’re trying to accomplish. For example, do you need to embed your graphical program in the system tray but the configuration has no option, try to see if the command-line arguments provide it, before searching and finding out you can do it with some other program.
As a conclusion though, be careful with commands taken from various websites or IRC. Even if you’re in a hurry, just stand back for a while and have a look at the source of information, the command-liner which you’re pasting in your terminal or the script that you are about to run. See if it looks safe before using it. Usually there is no malicious advice out there, but certain commands may still be harmful in your environment, even though they’re not intended to be so. For example, do you need to batch rename a collection of 1000 files? First, copy 3-4 files in a new directory and test your script there instead of running some command which, although for another user works well, on your system may have a different result depending on your setup.
So, what are your tips on what is the best way on starting and getting better with Linux? Please share your thoughts in the comments below.