Its a little bit zen, but one dosen't get 'mad skills' by wanting 'mad skills'. One achieves a higher level of skills by actually making use of the skills you have. I started off with *pretty* pathetic reputation, and got better with time.  

First of all, most high rep folk tend to specialise. Two of the high rep users here tend to be OS X users mostly. I'm a hardware nut (who's an accidental generalist). There's windows specialists as well. They use these OSes and have a knowledge of how things work, roughly. You *primarily* learn by solving your own problems. This is often a combination of the very scientific process known as poking stuff with a stick (primary sources), and finding, and combining stuff other people found by poking with a stick. Knowledge very rarely is a vacuum, when it comes to computers. We're always cribbing notes from each other, and sharing knowledge.

As men of science, we do not *simply* poke things with a stick blindly. We have specific ways of poking things with a stick. A good computer guy has a process, a *way* of poking at things with a stick to get answers. He reads up on *better ways* of poking, and new and improved *poking tools*. He eventually finds his perfect poker. 

Working out questions where you know part of the answer is a good way to hone your skills to, especially if its an unfamiliar scenario. Its also useful to post a 'good' answer, and not be afraid to make it better. My most highly voted (and now CWed) answer was [edited multiple times][1] as I refined it. The original question was not in my usual problem domain, but it was fun to solve. 

In short, don't be afraid to experiment, and to read and learn. ;p

  [1]: http://superuser.com/posts/485811/revisions