Learning How to Learn
I have always valued the importance of learning how to learn or how to teach yourself. This concept is much more valuable than learning a specific skill by rote memorization. When I teach a PowerShell class, I must ensure you know how to teach yourself. First, it is impossible to teach you everything about PowerShell in a single class, nor can you memorize everything PowerShell can do. You need to understand how PowerShell works and how to teach yourself.
As IT Pros, we are often asked to learn new tools and technologies. These tools might have a PowerShell angle, like Azure or AWS. But I want to caution you against jumping directly to the PowerShell tools. I think there is a better approach to learning something new. These ideas can be applied to just about anything new you need to learn.
Everything I want to cover is merely my opinion. However, it is based on 25 years of teaching IT Pros and witnessing how people learn, especially adult learners.
Authoritative Sources
My first step is to identify authoritative sources. Who is going to teach me? This step might take some time, especially for a topic that is entirely new to you. You must research the topic and discover who or what is respected and what high-quality learning resources are. Don't simply jump to YouTube and hope to find something useful. I'm not saying you won't find helpful information on YouTube, but you need to ensure you are investing your time with a reputable and high-quality source. It is easy to talk to a camera, but not everyone can be an experienced teacher.
I can't stress the quality idea enough—not only in the quality of the content but also in how it is presented. I'm not going to suggest you select one learning modality. If you learn better through video, go that route. However, I'd suggest supplementing your learning material with books at some point. This also goes the other way. You will reinforce your learning by combining modalities.
There is a reason learning resources like books or video offerings like Pluralsight cost money. Yes, content publishers are trying to earn a profit. But that means they have an incentive to provide high-quality content that can compete in the marketplace. They typically engage with respected and experienced creators, authors, and teachers. They also offer added value, such as editing and production support. These things are worth the money. If I am reading a self-published book full of grammar errors and spelling mistakes, that takes me out of learning mode. You should also assess content publishers to ensure you invest time and money into high-quality content. If it is possible, don't let price alone guide you.
You will need to identify your authoritative sources because you will use them for the learning methodology's next steps. Oh, and don't shy away from content you think might be repetitive. Repetition is a valid learning technique, and authors might present the same general idea differently. One way might click more with you. Or you might pick up a new detail. This is also why I encourage a mix of video and printed material, not to mention live events such as conferences or user groups. How the material is presented will impact how you learn it.
Terminology and Vocabulary
Learning anything new, whether a new tool like Python or a technology like Kubernetes, will expose you to strange and new terms. You don't need to learn the details of every term or new word. But you need to know enough to recognize what it is and be able to provide a rough definition. Over time, your mastery of terms and vocabulary will improve.
Learning the necessary fundamental terms is your first step. This is why you need to identify reputable, authoritative sources. You need to understand what you need to know to get started. Your focus should be simple understanding and recognition. For someone new to PowerShell, I would teach them terms like cmdlet and pipeline. You don't need to know how to use them, but you should be able to define them, even if you don't fully understand all parts of the definition. Deeper comprehension of terms and vocabulary will come with time, repetition, and the following steps.
Relationships and Patterns
Next, and I'm being a little abstract, you need to be able to identify relationships and patterns. No matter what you are learning, the thing will have some sort of structure. There is an organizational structure or framework, whether you are learning C# or French. You can think of it as syntax. When you learned how to use a PowerShell cmdlet, you had to learn the syntax of parameters. Some parameters are required. Some are positional. Parameter values are typed objects. Some parameters have default values. There are many ways to pass parameter values to a cmdlet. All of this is syntax. It takes time to learn and absorb. Don't rush this step.
In Kubernetes, there are a variety of technical terms, such as containers and orchestration. You need to learn the relationships between the technical concepts. Don't feel you need to know how the relationship works. That is the easy part since you have authoritative sources to teach you the technical details. But you need to recognize the pattern or relationship to know what to look for to learn it.
Walk Before You Run
I can't stress this point enough, but when learning something new, focus on the fundamentals. Learning something new is no different than constructing a house. If you don't have a solid foundation, the building will not last. Everyone learns at a different pace, so don't compare your learning journey with that of others. Take the time you need to understand the bigger picture. Just as it is in learning a foreign language, you start with some words, learn to put them together in sentences, and, with practice, eventually hold a conversation. You will be frustrated and unsuccessful if you jump in and attempt the conversation phase without the fundamentals.
The steps I've mentioned so far are iterative. You start with basic terms and patterns, then move to intermediate-level understanding, and finally, advanced or expert level. Over time, with repeated work and exposure, you will become fluent in the new thing, and it will simply be part of you.
I am fluent in PowerShell and don't have to work as hard because I instinctively know what I want to do and how to achieve it. However, this is only possible because I have been learning, using, and teaching myself PowerShell for almost 20 years.
Have a Goal
Another recommendation when learning something new is to have a realistic goal. Why are you learning a new thing? What do you want to accomplish? Again, keep it simple. I remember, back in my VBScript days, encountering someone in a forum looking for help. He admitted to being an absolute beginner but was looking for help in writing a script that would use WMI to set permissions. That's a task even I would have wanted to avoid attempting.
Think about a task or goal that you would like to achieve. Maybe you want to be able to automate the creation of an Azure virtual machine, or be able to order dinner in Italian. Knowing why you are learning something helps put your learning in context and perspective. Having a goal adds meaning to your learning.
GUI First
Before I wrap this up, I want to briefly suggest a few tips for learning something new that is PowerShell-related. Let's say your company has decided to migrate to the cloud and begin running workloads in Azure. You know you can manage Azure with PowerShell, so your initial thought is to load the Azure modules and start banging away.
This step would be OK if you already know Azure. PowerShell can make it easier to manage and automate a technology like Azure. But if you don't understand how Azure works, you are doubling up on the learning pain. You are most likely trying to understand Azure and make sense of the Azure cmdlets.
In these situations, my recommendation is to follow the steps I have suggested and learn Azure first. Take advantage of the graphical tools to use the new technology manually. Often, a graphical interface can help you build internal patterns and relationship maps. In my Azure example, learn the graphical and manual steps to create a virtual machine. Try to visualize what Azure is doing with each button click.
PowerShell It
Once you understand how the technology works manually, you can turn to the PowerShell cmdlets. Since you know what steps you manually perform to achieve a task in Azure, you can search the available cmdlets for the tools that will achieve the same result in PowerShell. This step is, in reality, something else that is new to learn, so apply the steps I've been talking about: identify resources, learn terms, build patterns, etc.
Learning is an iterative process that never ends.
Summary
I love the thrill of learning something new and applying it. This last step is critical. If you don't use what you learn, you won't retain the knowledge, and you'll never truly know it. We learn by doing, which is especially true in IT.
If you have tips or suggestions on what helps you learn new things, I hope you'll share them in the comments.
Learning has to be a goal of every successful IT professional. There is no possible way to know it all and much of it has to be a black box that we assume works by faith in whoever built/developed it. Whether it is the CPU, some cloud service, or the compiler, much of what we do is based on faith assuming that the commands we execute will work "as expected" and "as documented". I've been in IT for 42 years and the only constant has been learning. There is always a new technology, new way of doing the same old thing, etc. Excellent post. Thank you!