Knowledge of the subject in which you are attempting to solve a problem is the first step. You must be knowledgeable about Linux at the very least, and even better, you must be knowledgeable about the other factors that can interact with and affect Linux, such as hardware, the network, and even environmental factors such as how temperature, humidity and the electrical environment in which the Linux system operates can affect it.
Knowledge can be gained by reading books and magazines about Linux and those other topics. You can attend classes, seminars and conferences. You can also just set up a number of Linux computers in a networked environment and through interaction with other knowledgeable people.
My personal preference is to play — uh, experiment — with Linux or with a particular piece such as networking, and then take a class or two to formalize the knowledge I have gained.
Remember, “Without knowledge, resistance is futile,” to paraphrase the Borg. Knowledge is power.