Dean (aka @Danger0u5) mentioned on twitter that he'd like to be a Powershell/PowerCLI ninja someday. (I think he's already on his way. :)) It got me thinking about how I got started with Powershell and what my core success factors were with learning it. These tips can apply to learning almost anything, really!
1. Make it a priority.
My mentor and
Bluelock CTO Pat O'Day (maybe unbeknownst to him :)), caught me once saying "I wish I had the time..." Very understanding to my dilemma, he said "You will
never have enough time. It's about priority." That simple fact might be obvious to a lot of people, but it absolutely changed my views about time vs. priority. "I don't have time" doesn't exist for me anymore. It's all about where it lands in the list. "Hey Jake, can you {Insert task here}?" "I can do that, but lets figure out the priority."
The point here? You have to decide the priority of learning this new skill. Ask yourself "How important to me is learning Powershell/PowerCLI?" I can tell you from experience it is
well worth it, but you need to decide for yourself. After that, it will be fairly simple to fit it into your list.
2. Focus on a specific task.
I learned Powershell because I had an idea. A need. I wanted learn to Powershell to accomplish something very specific. So, I mapped out in my head the various bits of information that I would need, and then learned how to get that information with Powershell. Then it was just math and formatting. There are a lot of great books, blogs and online training regarding Powershell/PowerCLI, but if you don't have a specific need, you aren't going to retain the information.
I've been struggling learning Ruby (and Rails). I
really want to learn Ruby (and Rails). The problem is, I don't have a specific need. I've been through
tryruby.org and
Rails for Zombies, which are both GREAT free tools to learn Ruby (and Rails), but the moment I leave the page, it's gone. There are a few reasons I want to learn Ruby, but again, nothing that is specific enough, or high enough priority.
For those struggling to learn Powershell/PowerCLI, don't be discouraged. Focus on a very specific need. For those struggling to find a specific need, talk to people around your office. Groans and sighs are good places to start. Listen for phrases like "It's going to take me 12 hours to put this data in." Another good place to look for inspiration is the forums. Look for tumbleweed type questions (those that have somehow slipped the view of
Luc Dekens. ;)) I'll lurk the forums once in a while looking for things I find interesting. Even if they are already answered, I can look at how the problem was solved, and see if I would have answered it the same way.
3. Don't be afraid to ask for help, but know how to ask good questions.
It surprises me how often I answer my own questions just by typing it up, and reading it as if I were answering for someone else. When I ask a question, I really try to understand what information someone would need to answer it. I want to equip the answerer with enough information to get me the right answer the first time. There can be
too little information, but worse there can be
too much information. Understanding the real issue is the key to getting a correct answer.
Back in my telecom days, there was a tag always attached to a piece of equipment that, in large bold font said "DO NOT ASSUME ANYTHING." I always had a chuckle about it, but it's a life rule Engineers should live by. Don't assume thing A doesn't work because of thing B. Be ready to defend it with facts. When it comes to asking questions, don't assume that DNS is working properly, or that network cable is attached and it's not a crossover, or everything is powered on, or.............. you get the point. ;)
4. Share what you know.
The question my mentor asked that I responded with "I just haven't had the time" was about my involvement with the local tech community. My other excuse was "I don't really get anything out of it." That, of course, was also a poor response. ;) He went on to tell the story of the birth of Bluelock. Actually, the story of how the founders of Bluelock first met. Not surprisingly, it was a small technology group.
He recommended that I make it a priority (see tip 1), but also start sharing what I know. I countered with the fact that there are EXPERTS out there who know way more than I do, and what could I possibly have to offer the community. He pointed out that everyone is a sum of their own unique experiences. No two people live exactly the same life. Whether you consider yourself an expert or not, you bring a uniqueness no one else has. Don't be afraid to share it. You could turn out to be an expert in someone else's eyes.
So if you've been on the fence about learning PowerCLI (Powershell), Ruby, or anything else, think about these principles and how they apply to you!