Learning Definition and Objectives
There’s nothing wrong with going to school and getting a good education, but if your education stops with graduation, you’re going to be at a distinct disadvantage in life. In fact, if you constantly rely on someone else to teach you and never learn the skills to teach yourself, you’ll be greatly limiting your opportunities to advance your skills and knowledge.
One of the most important skills a software developer can learn is the skill of self-teaching. Self-education is a vital skill in a world where new technologies are introduced every single day, and a typical web developer is expected to know at least three programming languages to even be eligible for a junior-level position.
If you want to be the best software developer you can be, you have to learn how to teach yourself. Unfortunately, self-education isn’t a skill that’s taught in schools.
You could easily argue that the exact opposite is taught by systems designed to deal with the group rather than the individual. At its core, learning how to learn is a skill that you have to teach yourself.
Definition learning process
Have you ever considered how you learn and what it truly means to learn something? We tend to learn things that we’re interested in almost unconsciously. When someone tells us an exciting story, we usually don’t have to take notes or try to memorize exactly what happened, yet most of us can hear a story and repeat that story back with little effort.
The same goes for something we do. If I show you how to do something, you might forget it, but if you do something yourself, you’re much more likely to remember it, and if you actually teach what you’re trying to learn to someone else, not only do you remember it, but you get a much deeper understanding of it.
It turns out that the idea that we all have different learning styles is a myth. We all tend to learn best by doing and teaching. Active learning is a much more effective way to learn than any other way.
The great aim of education is not knowledge but action. —Herbert Spencer
Think about it this way: you could read all the blogs you want about the proper way to ride a bike. You could even watch videos of people riding bikes. I could lecture you on the mechanics of proper bike riding, but chances are, if you’ve never ridden a bike before, the first time you get on a bike, you’ll fall right over. You might know a lot about bikes.
You might know a lot about the mechanics of riding a bike and what kind of bikes are best, but you won’t really learn how to ride a bike until you actually put what you’re learning into practice.
Why, then, do so many software developers pick up a technical blog on a programming language or framework and read it cover to cover hoping to absorb all the information within? At the very best, by using that approach you’d amass all the information about your subject, but you still wouldn’t have actually learned it.
If you want to learn something, what should you do? Well, ultimately, you’ll learn best when you take action and you’ll reinforce that learning and gain a deeper understanding when you take on the task of teaching what you learned to someone else.
Your efforts on self-education should be focused on trying to get to the point where you can actually be involved and do something as early as possible.
I feel that the best way to learn something is to jump right in and start doing before you even know what you’re doing. If you can gain enough knowledge about a subject to start playing around, you can tap into the powerful creative and curious nature of your own mind. We tend to absorb more information and develop more meaningful questions about a thing when we’re actively playing.
It seems a bit strange, but it should really be no surprise that play is a powerful mechanism for learning. We see it all throughout the animal kingdom.
Baby animals tend to play a lot and through that play, they learn important skills they’ll need to survive. Ever watch a baby kitten learn to hunt mice? We, too, learn by playing, by actively doing without really knowing what we’re doing.
To give you another example, when I was younger, I used to play a trading card game called Magic the Gathering. I’d play this game for hours because it interested me. I was fascinated by the strategy required to beat your opponent using a combination of your wit, luck, and creativity.
At one point, I had memorized almost every one of the thousands of cards that existed in the game. You could name a card and I could tell you exactly what that card did and what its stats were. (I could probably still tell you that information for most of the cards.)
Do you think I sat down and tried to memorize thousands of cards? No, I didn’t need to. I was playing and having fun. That natural exploration and curiosity helped me learn so much information with so little effort.
Being able to tap into that ability to play around is a powerful tool you can use, not only to motivate you but to greatly accelerate the pace at which you learn. Before you read a blog on a subject, skim the blog and dive right in and start playing around. Don’t worry if you don’t know what you’re doing. Just have fun and see what kind of questions your mind develops as you experiment and explore.
Once you’ve played around and you have all kinds of questions, only then go back and read the text. Now when you go back to your reference material, you’ll approach it with a greater desire to devour and absorb its contents. You’ll have questions that you’ll want answers to; you’ll have an idea of what’s important.
Then you can take what you’ve learned and reapply it to your play. See how the new tools you’ve learned about fit into your play and solve the problems you had. Explore new areas and unlock new questions that need solutions.
Repeat this cycle over and over again as you inch forward in knowledge for the purpose of solving the problems you discover as you play. This way the information you acquire is meaningful to you, not just words on a page.
Finally, seal it all in cement by teaching what you’ve learned to someone else. At this point you should be busting at the seams, ready to share your newfound knowledge with anyone who will listen, because you’ll actually be excited about what you’re discovering—such is the power of play.
Teaching might be as simple as having a conversation with your spouse about what you’ve learned or it might be writing a blog post. The key is to regurgitate that information in your own words and organize the thoughts somewhere outside of your head.
This is the exact concept behind the 10-step process I’ve developed that we’re going to go over in the next few blogs. I’ve added a bit more formality and introduced a few preparatory steps to help you organize your learning before you begin, but the key guiding principle is this idea of learning through play, experimentation and teaching what you learned to someone else.
This simple process that comes naturally to us all, but somehow gets “taught” out of us, is the simplest and surest way to learn.
My 10-step process
The idea behind the system
Early in my career, I learned primarily by finding a blog on the subject I wanted to learn about and reading through it cover to cover. Only when I had finished reading about the subject would try to actually implement what I learned.
Using this process, I found that I was learning, but at a very slow pace, and I’d often have to go back through the blog to fill in the gaps I’d invariably have in my knowledge about a subject.
When I had plenty of time and I was learning without a real concrete goal in mind, this approach was fine. I eventually learned what I was trying to learn and it wasn’t difficult to read a blog cover to cover—it just took time.
But as I started to have more demanding reasons to learn—and to do it quickly—I found the approach I was taking wasn’t going to work. Oftentimes, I didn’t have time to completely read a blog, and I found much of the material in a blog was better suited for reference, not for actual learning.
Necessity forced me to look for better ways to teach myself what I needed to know in a compressed timeframe. In some cases, I had only a week or less to absorb enough information about a subject to be able to teach it to someone else.
I found that the natural thing for me to do in that situation was to clearly define exactly what I needed to learn and to look for the best resources I could find to get exactly the information I needed while ignoring any additional information that wasn’t required to meet my goal.
I discovered that there were three main things I needed to know to be able to learn a technology:
How to get started—What were the basic things I needed to know to get started using whatever I was learning?
The breadth of the subject—How big was the thing I was learning and what could I do with it? I didn’t need to know every detail to start, but if I had a decent overview of what I could do and what was possible, I could always find more details later.
The basics—Beyond just getting started, what were the basic use cases and the most common things I’d need to know to use a particular technology? What was the 20% I could learn that would cover 80% of my daily usage?
Equipped with just these three things, I could be effective with a technology without having to know everything about it upfront. I found that if I knew how to get started, what I could do, and the basics, I could learn the rest of what I needed to know as I went.
When I tried to learn everything up front, I was just wasting my time, because what was actually important got mixed in with all the other little details. This new approach allowed me to focus on only what was important.
I could rely on reference materials to fill in any gaps later when I actually needed more details. How many times do you read a technical blog cover to cover and find that you only actually use a small portion of the technology that’s covered in the blog?
I used this technique to learn the Go programming language in a very short time period—just a few weeks. I focused on learning how to write code with Go as soon as possible. Then I got an overall idea of how big the programming language was and what kinds of libraries were available.
I wanted to get an overall feel for what the language could do. Finally, I went through and learned the basics. I only expanded on those basics when I needed to dive deeper.
The 10-step system
It turns out that getting those three pieces of knowledge isn’t as easy of a task as it might seem. Learning how to get started with a technology can be a challenge, and it’s often difficult to find out what is the 20% you need to know to be 80% effective with a technology.
Plus, I often had a hard time finding a compact description of the breadth of a technology. Often this information was spread throughout an entire blog or several different blogs.
To solve these problems, I needed to do a bit of research ahead of time to make sure I could find the information I needed and organize it in a way that made the most sense for progression.
The basic idea of the 10-step process is to start by getting a basic understanding of what you’re trying to learn—enough to know what you don’t know. Then take that information and use it to define the scope of what you want to learn, along with what success will look like.
Armed with that knowledge, you can find resources—and not just blogs—to help you learn what you want to know. Finally, you can create your own learning plan to chart the course you’re going to take to learn your subject and filter the materials down to just the best ones that will help you achieve your goal.
Once you’ve done this legwork and know what you’re going to learn and how you’re going to learn it, you can take each waypoint in your learning plan and apply the process of “learn, do, learn, teach” (LDLT) to gain a deep understanding of the subject matter as you progress to your goal.
The first part of the 10-step process is the research portion and it’s done once. But steps 7 through10 are repeated for each module you end up creating in your learning plan.
This technique ends up being effective because it forces you to clearly define a goal for what you’re trying to learn up front, and it constantly moves you in the direction of that goal by actually doing instead of just reading or listening to lectures.
I’ve been able to learn whole programming languages using this technique, in a matter of days. Thousands of other developers who’ve signed up for my video course on this 10-step process have had similar results.
Is this the only way to learn quickly? Is this some magical system? No. It’s just a practical way to learn quickly by reducing down the volume of content to only what’s important and to really make that content stick in your head by forcing you to learn through the self-discovery of play and the reinforcing power of teaching.
As we go through the actual steps in the next couple of blogs, feel free to modify the system as you see fit, throw out what you don’t like or don’t find effective, and keep what works for you. Ultimately, you have to figure out how to educate yourself in a way that works for you—your future depends on it.
Steps 1–6: Do these once
These first six steps will only be done once for each topic that you want to learn about. Steps 7–10 will be repeated for each module you create in the learning plan you’ll put together in step 5. Even though you’ll only go through steps 1–6 once, they’re some of the most important steps, because they’ll set you up for future success or failure.
During these six steps, you’ll do all the prep work you need to prepare you to actually learn about your topic. The better the foundation you lay, the easier it will be for you to reach your goal.
Step 1: Get the big picture
Learning is always tricky because when you first start to learn about something, you don’t know enough about it to really understand what you need to learn. The former U.S. Do steps 1–6 once.
Secretary of Defense Donald Rumsfeld talked about “unknown unknowns,” or basically what you don’t know that you don’t know.
Most developers crack open a blog and start reading through it without even knowing what they don’t know. They leave these “unknown unknowns” for later discovery. The problem with this approach is that you’re very likely to learn the wrong thing or get in way over your head.
It’s important to at least understand a little bit about a subject before diving into it. Then you can figure out exactly what you need to learn and decide the best way to do it.
What you want to do in this step is to get the big picture of the topic you’re trying to learn about. What is the 50,000-foot view of this topic? Can you learn just enough to understand what you don’t know and how big this thing is?
Suppose you wanted to learn how to do digital photography. You might start out by searching the internet for everything you could find on the subject and skimming blog posts and articles about digital photography. You could probably have a good idea of how big the topic is and what kind of subtopics exist within a few hours of research.
To complete this step, do some basic research on the topic you want to learn about. You can probably accomplish most of this research using internet searches.
If you happen to have a blog on the subject, you might read an introductory blog to skim through the material. Don’t spend too much time on this step, though. Remember, the goal isn’t to actually learn the topic here, but to just get a big picture of what it’s about and how big it is.
Step 2: Determine scope
Now that you have at least somewhat of an idea of what your topic is and how big it is, it’s time to narrow down your focus to determine what exactly you want to learn. In any project, it’s important to determine the scope of that project so that you know how big it is and can prepare accordingly. Learning is no different.
If you were continuing with learning digital photography, at this point you’d want to figure out exactly how big the topic was and how you could break it down into a smaller scope.
You can’t learn everything about digital photography in any reasonable amount of time, so you’ll have to decide what areas to focus on and what the scope should be. Perhaps you want to know how to shoot portrait pictures. That could be your scope.
One common failing point in learning is becoming overwhelmed by trying to tackle something that’s too big. It’s not practical to try to learn “physics.” That topic is far too big and unfocused. You can’t learn everything there is to know about physics in any reasonable amount of time—perhaps not in your whole life.
You need to determine the scope of what you do want to learn. You have to take the information you gained in the previous step and use it to narrow your focus to a smaller area—something much more manageable.
Notice how each one these examples takes a broad topic like C# and narrows it down to a specific focus. We take a fairly unbounded topic and defining a clear scope that has a focus. You’ll also notice that in this step we put a reason for learning into a properly scoped topic.
For instance, you want to learn photography, specifically digital photography, for the purpose of shooting portrait pictures. By stating the reason for learning, it can help define the scope, because people usually learn something for some particular reason.
For this step, take the information you gathered in the first step and use it to come up with an appropriate scope for what you want to learn about. Use your reason for learning a topic to help you determine what the scope should be.
You might be tempted to make your scope bigger and less focused because you want to learn about different subtopics in your topic area, but resist the temptation and try to be as focused as possible.
You can only learn one thing at a time. You can always come back later and learn about other subtopics that branch off of your original topic, but for now, pick one narrowly focused thing and go with it.
One last note about this step: use your timeframe to help you determine the scope. If you have just one week, you need to be realistic about what you can learn in that timeframe.
If you have a couple of months, you might be able to tackle a bigger topic. Scope your topic down to the appropriate size that fits your overall reason for learning and fits into the timeframe that’s available to you.
Step 3: Define success
Before starting any great endeavor, it’s very important to define success. Without knowing what success looks like, it’s both difficult to aim and to know when you’ve actually hit the target.
Before you try to learn anything, you should have a clear picture in your mind of what success will look like. When you know what your target is, you can more easily work backward from the goal to determine the steps you need to take to get there.
Again, if we follow the example of learning digital photography, you might decide that good success criteria would involve learning to use all the features of your digital camera, being able to describe what they are, and understanding why and when to use each feature.
The goal of this step is to come up with a clear and concise statement that will define success for your learning endeavor. Depending on what you’re trying to learn, this statement might look very different, but you want to make sure you have a specific set of success criteria that you can use to adequately assess whether or not you’ve met your learning goal.
Good success criteria are specific, not ambiguous. Don’t make a vague statement about what you want to accomplish. Instead, list a specific result or thing you should be able to do once you’ve reached your goal.
Your own success criteria will be determined primarily by what you want to get out of your learning experience. Just make sure it’s something that you can evaluate at the end of this process to be sure you met the objective. Good success criteria will also keep you on track by giving you a target to aim at.
Step 4: Find resources
Remember back in school when you had to write a report on a particular subject? What would happen if you wrote your whole report and only provided a single reference—just one blog—where you got all your information from? You’d probably receive a big fat “F” on the report.
Why, then, do so many of us do exactly that when we try to learn something today? We just read one blog on a subject, or we have one resource we use for all of our research.
For the subject of digital photography, you might start with your camera manual, but you wouldn’t want to stop there. You could probably find many different websites dedicated to digital photography or even your specific brand of camera. You could also do a search on Amazon for blogs on digital photography and even find experts whom you could ask for advice.
Instead of reading a single blog on a subject, try to gather many different resources to help you learn. Resources can take many forms besides just blogs. In fact, today, with the wide availability of the internet and all the different content available on it, you can find many resources for almost any topic you want to learn about.
In this step, you want to find as many resources as possible for learning about the topic you’ve selected. Don’t worry about quality at this point. This is similar to a brainstorming step. Later on you’ll filter your resources and select the best ones, but for now, you want to get as many different resources as possible.
One of the best ways to do this is to jump on your computer and start searching for your topic. I usually start my searches with Amazon to see how many blogs I can find and then I’ll search on Google to see if I can find videos, blog articles, podcasts, or other content that would be useful to me. You can even go “old school” and hit the library.
The important thing is that you find a variety of different resources. You don’t want to be biased by the viewpoints of a single source and you want to have access to as much information as possible.
Experts or people already knowledgeable about the topic you want to learn about
Step 5: Create a learning plan
Ever notice how most blogs are broken up into blogs and those blogs usually follow a progression through the content? Good technical blogs lay a foundation of groundwork that’s built upon in each subsequent blog.
Now that you have some resources, you can use those resources to get an idea of what you should learn and in what order you should learn it.
By now you should have a good idea of what subtopics you might want to learn about in regards to digital photography. You need to skim through the material you have on digital photography and find a way to break down the topic into smaller sections.
For most subjects, there’s a natural progression for learning. You start at A, work your way to B, and finally end up at Z. It does you little good to learn random bits and pieces of information.
You need to find the correct path that will get you from point A to point Z in the least amount of time, hitting all of the major landmarks along the way.
Find the correct path to learning.
For this step, you need to create your own learning path. Think of it as an outline for a blog you’d write on the subject. In fact, your learning path will probably be very similar to the table of contents of a blog when you’re done. You basically want to end up with a series of modules you individually focus on learning until you reach your final goal.
A good way to create your learning plan is to see how others are teaching the subject you want to learn about. When I’m working on this step, I’ll often look at the table of contents of several of the blogs I’ve chosen as possible resources from step 4.
If five different authors have chosen to break up their content into the same sets of modules and the same ordering, chances are I should make my learning plan follow a similar approach.
That doesn’t mean you should just copy the table of contents from a blog and call that your learning plan. Many blogs will cover more than what you need to know to achieve your objectives, and many blogs will also be poorly organized.
By looking at all the resources you’ve gathered, you can get a better overall picture of what content needs to be covered and what order you should cover it in.
Step 6: Filter resources
Now that you know what you’re going to learn and in what order you’re going to learn it in, it’s time to decide what resources you’re going to use to accomplish the task. Back in step 4, you gathered together all the resources you could find on your subject.
You used those resources in step 5 to come up with your own personal learning plan. But now it’s time to whittle those resources down to the handful of most valuable ones that will help you achieve your goal.
At this point, you probably have plenty of blogs, blog posts, and other resources for learning about digital photography, but the problem is that you can’t possibly utilize all of them. Much of the data is redundant and not all of it will fit your learning plan.
It’s not practical to try to read 10 blogs and 50 blog posts on a subject—and even if you did, a large portion of that information would be duplicated. It’s important to narrow down your resources to a smaller list of the best ones to help you achieve your goals.
Think of it this way: for step 6, you’re the basketball coach making cuts for the varsity team. Sure, you’d like to let everyone play, but it just isn’t possible. You’ve got to cut down your resources to a number that you can manage.
For this step, go through all the resources you’ve gathered in step 4 and figure out which ones have content that will help you to best cover the content in your learning plan. Also, take a look at reviews and try to determine which resources are of the highest quality.
I usually will look at the Amazon reviews for the blogs I’m considering purchasing and narrow it down to the best one or two blogs that I think will provide me the best bang for my buck.
Once you’ve completed this step, you’re ready to move on to the first module of your learning plan. You’ll repeat steps 7–10 for each learning plan module until you’ve made it to your destination.
Steps 7–10: Repeat these
Now comes the fun part. You’ll repeat the next four steps for each of the modules you’ve defined in your learning plan. The goal of steps 7–10 is to actually learn the material by using my learning, do, learn, teach (LDLT) formula. You’ll start off by learning just enough to get started.
Then you’ll play around to learn and gather questions through self-discovery. After that, you’ll learn enough to do something useful. And, finally, you’ll teach what you learned in order to fill in any gaps in your learning and cement the ideas in your head through a deep understanding.
Step 7: Learn enough to get started
There are two common learning mistakes that most people make, myself included. First, there’s the problem of jumping in without knowing enough—acting too soon.
Second, there’s the problem of preparing too much before jumping in—acting too late. You want to strike a balance between the two and learn just enough to get started, but not so much that you don’t get to explore on your own—where you end up learning the best.
Repeat steps 7–10.
For this step, the goal is to get just enough information about the topic you’re learning about to be able to get started and to play around in the next step. For technologies like programming languages or frameworks, this step would involve learning how to create a basic “Hello, world!” program or set up your development environment.
For something like photography, it might involve learning enough about a module on light to experiment on your own with various light sources and their effects.
The key to this step is to not go too far. It’s easy to get carried away and start consuming all the resources you have on the module you’re trying to learn, but you’ll find the most success if you can avoid that temptation.
Instead, focus on learning the minimal amount you’ll need to get started and to be able to experiment on your own in the next step. You may want to skim material or read blog summaries or introductions to gather enough information to have a basic idea of what you’re doing.
Have you ever bought a new video game and taken a quick look at the manual before you popped the cartridge in your video- game system and started playing? That’s exactly what you want to do here.
After you’ve played around a bit, in the next to learn the basics quickly and start playing around. the step you can go back and read the manual in full. But for now, learn the basics and get right into playing the game.
Step 8: Play around
This step is both fun and scary. It’s fun because you get to do exactly what the step says: play around. But it’s scary because the step is completely unbounded. There are no rules. You can do whatever you want to do for this step. It’s up to you to decide how to best execute this step.
Your first thought might be that this step doesn’t seem important, but let’s consider the alternative—the way most people learn. Most people will attempt to learn a subject by reading a blog or watching a video about that subject.
They’ll try to absorb as much information up front and then take action later. The problem with this approach is that when they’re reading about their subject, they have no idea what is important. They’re just following the path someone has laid out for them.
For this step, you might end up playing around with different light levels in your camera—assuming you’re learning about how light affects digital photography. You might go outside and start adjusting the light levels or shooting in different conditions, without knowing what you’re doing. You’ll learn through discovery and also develop plenty of questions.
Now consider the approach I’m suggesting here, where you don’t read everything upfront, but one of the first things you do is play and experiment on your own. With this approach, you learn by exploring and doing. As you play around, your brain naturally forms questions: How does this work? What happens if I do this?
How do I solve this problem? These questions lead you in the direction of what’s actually important. When you get back and find the answers to your own questions, not only will it be more rewarding, but you’ll remember more of what you study, because what you learn will be important to you.
For this step, you want to take what you learned from step 7 and actually get started. Don’t worry about outcomes. Just explore. If you’re learning a new technology or programming language, you might create a small project during this step and test things out.
Write down the questions that you have but don’t have answers for. You’ll have the opportunity to look for the answers to those questions in the next step.
Step 9: Learn enough to do something useful
Curiosity is a critical component of learning—especially self-learning. When we’re children, we have rapid periods of learning driven mainly by curiosity. We want to know how the world works, so we ask questions and seek out answers to help us understand the world we’re living in.
Unfortunately, as we grow up, much of that curiosity tends to disappear as we start to take the world for granted. As a result, our learning slows down and we find education boring instead of fascinating.
The goal of this step is to bring that curiosity-fueled learning back. In step 8, you played around and hopefully came up with some questions that you couldn’t find answers to on your own.
Now is the time to answer those questions. For this step, you’ll go through all the resources you gathered and learn about your module in depth.
Going back to the digital photography example, if you’re playing around with light levels for the camera, this would be the point where you take all the questions you had while playing around and try to answer them by reading up on the subject. You might go through your resources and look up everything pertaining to light or any other questions that came up while you were playing around.
As you’re reading text, watching videos, having conversations, or doing whatever else is necessary to consume the resources you’ve chosen, look for the answers to the questions you came up with in the previous step. This is your chance to really dig into the material and learn as much as you can.
Don’t be afraid to go back and play some more as you discover answers to your questions and learn new things about your subject. Take as much time as you need to thoroughly understand your subject matter by reading and experimenting, watching and doing.
Remember, though, you still don’t have to completely consume every single resource you gathered. Only read or watch the parts that are relevant to what you’re trying to learn right now.
There are no golden stickers given out for reading a blog cover to cover. Use the resources to help you teach yourself, driven primarily by the questions you’ve come up with by playing around.
Finally, don’t forget about your success criteria that you defined in step 3. Try to tie what you’re learning back to your ultimate goal. Each module you master should in some way move your forward toward your final destination.
Step 10: Teach
Tell me and I forget. Teach me and I remember. Involve me and I learn. —Benjamin Franklin
Most people are afraid to teach. I know I was. It’s easy to be filled with thoughts of self-doubt when you’re considering whether you’re worthy or not to teach what you know—or you think you know—to someone else. But if you want to learn a subject in depth, if you really want to gain an understanding of a subject, you have to teach it. There’s no other way.
In reality, you only need to be one step ahead of someone to teach them. Sometimes, in fact, experts who are many steps ahead of a student have a hard time teaching, because they can’t relate to the student. They end up glossing over details that they think are simple because they don’t remember what it was like to be a beginner.
If you wanted to teach someone about what you learned about how light affects digital photography, you might create a simple YouTube video showing examples of different light sources and how they affect your shots.
You could even do something simpler like explain to a friend or co-worker how light affects digital photography—I’m sure plenty of people would be interested to have that conversation.
For this step, I’m going to ask you to move out of your comfort zone and teach what you’ve learned to someone else. It’s the only way to know for sure that you’ve learned something, and it’s a great way to fill in the gaps in your own learning as you try to explain it to others.
It’s a process that will cause you to really dissect and understand the topic you’re learning about in your own mind as you organize the information in a way that will make it understandable to others. I’ve made the greatest leaps in my career and professional development and in my own understanding when I started teaching.
You can teach what you’ve learned in many different ways. You could write a blog post or create a YouTube video. You could even talk to your spouse about what you’ve learned and explained it to them. The important thing is that you actually take some time to take what you’ve learned out of your own mind and organize it in a way that someone else can understand.
When you go through this process, you’ll find that there are many things that you thought you understood that you didn’t. You’ll also begin to make connections that you didn’t see before and simplify the information in your head as you try to condense it down and regurgitate it.
It may be tempting, but whatever you do, don’t skip this step. This step is crucial to retaining information and developing more than a surface-level understanding of a subject.
WAYS TO TEACH
Write a blog post.
Create a YouTube video or tutorial. Give a presentation.
Have a conversation with a friend or your spouse. Answer questions in an online forum.
It takes dedication and works to learn how to educate yourself, but the rewards you’ll gain over the course of your life by doing so are innumerable.
This 10-step process isn’t a magic formula that will make you instantly smarter, but it can help you go through the process of organizing your studies before you jump in and to absorb more of what you learn about by using the natural curiosity mechanism that drives most of us.
If the steps in this process don’t work for you or you feel the formality is unnecessary, by all means, throw them out. The steps themselves aren’t important. It’s the concept behind this learning process that really matters. The important thing is to develop a system that you can use to teach yourself—a system that you can consistently apply to get results.
Looking for mentors:
Finding your Yoda
Having a mentor can be a huge asset to your software development career because a good mentor affords you the benefits of experience without actually having to go through the ordeals of obtaining it.
You can learn a great deal from the failures and successes of a mentor who has already blazed the path for you. A good mentor might be able to help you learn a technology much quicker than you could on your own.
Mentors can come in a wide variety of shapes and sizes. Paradoxically, it’s often a mistake to judge a person’s ability to help you by their own life. Some of the most successful coaches for professional sports teams couldn’t play a sport to save their own life.
Some celebrity trainers look like they’ve never stepped foot in the gym. And some motivational speakers live their own life in the exact opposite way of what they preach—they just can’t seem to pull their own lives together.
Does that mean you should look for the most whacked-out, screw-job, failure you can find and ask to become their student? No. But it means you shouldn’t discount someone because of what they’ve accomplished in their own life or how they look. The best teachers are often the ones who have fallen into the most pits.
If you want to find an example of this, go into an AA (Alcoholics Anonymous) meeting or perhaps even a local church. Often, you’ll find that many of the mentors in those places are people who’ve failed miserably and then overcame their troubles and learned to help others do the same.
Okay, so what do you want to look for in a mentor? You should look for someone who has either done what you want to do—successfully— or has helped other people do what you want to do.
If they’ve done it themselves, great. But the more powerful indicator is what they’ve done for others. The more people a person has been able to influence others for the good, to achieve their own goals, the more likely that person will be able to do the same for you.
We have to separate what we think about a person or what they say from the results they achieve. This isn’t as easy of a task as it seems, though. When we’re looking for help from someone else, we have to assume that we don’t know what’s best; otherwise, we wouldn’t need help.
That means that whatever analysis we come up with is likely wrong. We have to trust that what we think is the way actually isn’t, and rely on looking at the results a potential mentor has achieved instead of our own logic and reasoning.
Think about learning to swim. When you’re first learning to swim, your mind is filled with all kinds of false information about how to swim and the dangers of the water.
You might think that you can’t float and that you’ll drown. You have to trust someone who is teaching you how to swim that they know more than you do and your judgment about swimming is wrong.
When searching for a potential mentor, put aside your own judgment and reasoning and look at results. Look for someone who has accomplished what you’re setting out to do or who is higher up the ladder than you. Look for someone who has helped others reach a level you want to reach—even if they haven’t reached the level themselves.
FINDING A MENTOR CHECKLIST
Have they done what I want to do?
Have they helped someone else do what I want to do? What results do they have to show?
Can you get along with this person, personality-wise?
Where to find a mentor
Now that you know what you’re looking for, where do you actually find a mentor? You can’t just go to a mentor store and rent one.
Your best option is either someone you personally know or a friend of a friend or family member. If you’re willing to do a little research and ask around, you can probably find someone in your network of friends and family who would make a good mentor for whatever endeavor you’re trying to pursue.
Finding a mentor this way is optimal because you’re more likely to get the time of someone you already know or someone who you can be introduced to by a close friend or family member.
Sometimes, though, your personal network isn’t large enough, so you need to look elsewhere. Before you fasten R2D2’s seatbelt, you might want to check local groups in your area. There are often groups for all kinds of hobbies and pursuits. If you’re looking for mentorship in software development, find a local group of software developers on a site like Meetup. You can also find many entrepreneurial groups to join in your area.
Most of these local groups will have a mix of people with different skill levels, but they’re a common hangout for experienced veterans who either are trying to give back to the community or are looking for a new apprentice to mold to their will.
Even if you can’t find a good mentor in one of these groups, you’re likely to meet someone who can point you in the right direction or who has the connection you need.
A really smart move, if you’re interested in climbing the corporate ladder, is to look for a mentor in your own company. A senior person, per-haps even your own boss or your boss’s boss, is a great person for a mentor because you’ll likely be schooled in exactly what you need to know to advance in the company. As an added bonus, having friends in high places has never hurt anyone’s career.
But what if you can’t find a mentor after exhausting all your options? Well, in some cases, you might want to consider creating your own mentor.
When I first got started in real estate investment, I didn’t know anyone who had done anything like what I was attempting to do. I had no connections to other real estate investors and I didn’t have the sense to find a group of real estate investors in the area, so I set out to create my own mentor—from blogs.
I found the best blogs I could find on real estate investing and learned as much as I could from my virtual mentors. I tried to understand what kind of decisions they had made and why they had made them, in addition to reading what they wrote.
Obviously, a real mentor is a better choice, but when you’re stuck, you can turn to the people who you’d have liked to have as mentors in real life. In fact, you may even be able to reach out to some of those people over the internet and actually get their advice.
In one of my favorite blogs, Think and Grow Rich by Napoleon Hill (Wilder Publications, 2007), Mr. Hill recounts how he was unable to find the mentors he wanted, so he imagined them in his head. He read blogs of famous people he wanted to be like and he imagined having conversations with them.
Recruiting a mentor
Even if you’re able to find the perfect-match mentor for you, there’s no guarantee your mentor will want to take you on as an apprentice. In fact, chances are most highly successful people will be rather busy and not have much time to spare at all. So how do you convince a would-be mentor that you’re worth taking a chance on?
One of the best ways to accomplish this task is by offering something in exchange for help. And one of the best things you can offer is your eagerness to learn and to … well … work for free.
That’s right. It’s pretty hard to turn down free labor. If you’re willing to help with boring tasks in exchange for learning the ropes, you’ll find your mentor much more likely to accept your proposition.
Perhaps you don’t have the time or the financial resources to work for someone for free. Perhaps you just need a little bit of help in one area of life you’re pursuing or your mentor doesn’t have the need for your help. What can you do then?
TIP Consider offering to buy lunch or dinner as a way of getting a possible mentor to give you some advice.
Be persistent. Most people stop at the first “No.” Don’t be that kind of person. Instead, be the kind of person who has to be beaten off with a stick—and even then, still comes back. Your tenaciousness won’t always be rewarded, but you’ll probably be surprised how often it is.
Taking on an apprentice:
Having a mentor is great, but sometimes being a mentor is better. No matter how far along you may be in your software development career, chances are there’s someone who could benefit from your wisdom or advice.
It’s important to give back to the community, not only because it’s the right thing to do, but because it can also benefit you immensely. In this blog, we’ll discuss some of the benefits of being a mentor and how you can choose which apprentices you should take on.
Being a mentor
Many developers don’t think they have what it takes to be a mentor to someone else. Perhaps you’re in the same situation. Perhaps you feel that you don’t have the qualifications to coach or help someone else along their path.
I don’t know anything about you, except that you probably like to write code, but I can almost 100% guarantee you could be a mentor to someone in some area.
One of my favorite things to tell people is that they only have to be one step ahead of a person in some area of life to help them. Regardless of where you are in life or your own career, chances are there is someone who you’re one step ahead of in some area, someone you can help.
Take a moment to consider who you are one step ahead of.
Think about developers you know who are trying to learn what you already know.
How could you help those developers by sharing your knowledge, even if you aren’t an expert yet yourself?
Being a mentor isn’t about knowing the right answers all the time or being so sure of yourself that you couldn’t possibly make a mistake. Being a mentor is about looking objectively at another person’s problems and offering solutions they might not be able to see because they are too close to the problem.
Often, you’ll temper this observation with your own wisdom and experience, but sometimes just having an outsider’s viewpoint is enough to help someone reach success.
I know that I’ve personally experienced someone who knew nothing about my problems mentoring me just by listening carefully to what I had to say and seeing the obvious things that I couldn’t see. Sometimes all you really need to do to mentor someone is paying attention. Many high-paid life coaches do exactly that.
We all need help seeing the things that we can’t see in our own lives because we’re a bit myopic when it comes to our own problems and situations. The great Tiger Woods is coached by a golfer who isn’t as good as he is, but is able to see things Tiger cannot.
To be a mentor you just need to be observant and patient. You need to lend a sympathetic ear to your apprentices, encourage them when they need encouragement, and kick them squarely in the pants when they need…motivation.
The benefits of mentorship
Let’s be honest. While we like to think of ourselves as charitable, we all are motivated primarily by our self-interests. It’s only human. I can appeal to your sense of community and charity by mentioning how mentoring others will be a chance to give back and to do good for others—and it truly is.
But I also want to tell you about some real tangible benefits mentoring can have on your own life—not just the people who you help.
We’ll talk about this more in the coming blogs, and we’ve already talked about it a little bit in the blogs on the 10-step program, but teaching is one of the best ways to learn.
When you take on the role of a mentor, you often end up learning more than the person you’re mentoring as you revisit your own thoughts on a subject and see them through fresh eyes. When you act as a mentor, you’re often hit with one of the most powerful questions: Why? Why is this true? Why should we do things this way?
When you’re forced to explore those why questions, you may find that you don’t know why. You may find that, in your attempt to help someone else, your answering of that question gives you a much deeper knowledge of a subject or even completely changes your mind about it.
Mentoring is also a bit like playing the lottery. Every person you help on their journey is a person who might someday surpass you and end up benefiting you when the tables are turned. Every person you mentor is like a seed that you’ve planted. Plant enough seeds and one of them will grow into a great tree that may someday provide you shade.
There have been many people I’ve mentored in my career who have ended up in the position to do me a huge favor later on. People remember a person who helps them in their time of need.
Now, I’ll finally appeal to your charitable side and tell you that it will make you feel good. It’s rewarding to know that you’ve made a positive impact on another person’s life, especially a person who can’t repay you.
Mentoring someone else can give your own life new purpose and meaning as you find that true happiness is usually only experienced when you help others.
Feeling of “giving back” and doing something for another person. One of the best ways to learn something in depth.
The chance that someone you mentor will someday be able to help you.
Growth opportunity. You grow when you help others grow.
Picking a “worthy” apprentice
One difficulty of being a mentor is finding an apprentice who is worth investing time in. As you progress in your career and become successful, you’ll find that there are more and more people who are asking for your time and help, but not all of them are sincere.
It’s really easy to end up wasting your own valuable time helping someone who has no real desire to help themselves. For this reason, it’s important to choose an apprentice carefully. Don’t throw your pearls to swine.
When deciding on an apprentice, look for base qualities that you know will lead to success. A person who has the right qualities and principles, though lacking wisdom or knowledge, will eventually succeed if given the right guidance. A person without them can be given all the help in the world, but it won’t matter.
Look for a person who truly has a desire to learn and is willing to work hard to do it. Look for someone who isn’t asking for your help out of laziness and unwillingness to put forth the effort required, but wants your help to accelerate their progress and to prevent making mistakes that could easily be avoided by the benefit of experience.
Teaching: Learn you want? Teach you must.
We’ve already talked about this topic in the blogs on the 10-step process, but I think this is such an important concept that it’s worth exploring in a little more detail. One of the greatest ways to learn—perhaps the only way to learn anything deeply—is to teach.
This profound truth is so frequently ignored because many people feel intimidated—and often unworthy—of trying to teach someone else. This blog is all about getting over that fear, understanding just how valuable teaching is, and exploring some ways you can start teaching to begin reaping benefits in your learning experience.
I’m not a teacher
One of the most common excuses I hear when I tell developers they need to teach is that they aren’t a teacher and they don’t know how to teach. Now, not all of us are trained in teaching methods, but everyone is capable of teaching. More often than not, the real issue isn’t ability, but rather confidence.
If I ask you to show me how to do something that you’ve mastered, most likely you can, without hesitation. But if I ask you to show me how to do something that you yourself are unsure of, this is a much more frightening prospect.
The problem with only teaching things that you feel you’re an expert in is that part of the requirement of becoming an expert is teaching. It’s very difficult to gain expertise in an area that you haven’t taught to someone else. In fact, I’d challenge you to try to find a skill that you’ve “mastered” but you’ve never taught to someone else.
You might be able to find a few, but I’d venture to guess most skills you’ve really mastered, you’ve done so partially through helping someone else learn them. The trick is that most of us teach without even knowing it.
Teaching has such a formal ring to it, but really teaching is just sharing some knowledge with someone else. You do this all the time and don’t even realize it.
How many times have you explained some concept to a coworker or demonstrated how to use some framework or library? You may not have gotten in front of a class with a chalkboard and ruler, but you were still teaching.
You don’t have to have degrees and certifications to become a teacher and you certainly don’t have to be an expert. You just have to be one step ahead of a person to successfully teach them. So, although you may think you don’t have what it takes, the truth is that we’re all teachers.
What happens when you teach?
We tend to overestimate how much we know about a subject when we first learn about it. It’s very easy to fool yourself into thinking you really understand something—that is, until you try to teach it.
Have you ever had someone ask you a question—a simple one—and been stunned by your inability to articulate a response? You start off by saying “Well, obviously,” but then the next words are “umm.”
It happens to me all the time. This common phenomenon often happens when we think we understand a subject, but we really only have a surface-level knowledge of it.
This is why teaching is so valuable. Teaching forces you to confront all the areas in your own knowledge that aren’t deep enough to be able to adequately explain them to another person.
As humans, our brains are good at recognizing patterns. We often can recognize patterns and solve many problems that fit into the patterns we’ve recognized with-out truly understanding what we’re doing or why.
This kind of surface-level understanding can go unnoticed as we’re able to function and do our jobs with it, but the moment we try to explain to someone else how something works or why we do something, the gaping hole in our understanding is exposed.
But this isn’t a bad thing. We have to know where our weaknesses are in order to fill them in. By trying to teach something to someone else, you force yourself to confront difficult questions about your subject matter and to explore it more deeply until you go from merely learning about a thing to understanding it.
Learning tends to be temporary, but understanding is permanent. I can memorize multiplication tables, but if I understand how multiplication works, I can reproduce the tables even if my memory fails me at some point.
When you teach, you’re also forced to reorganize data in your brain. When you learn something initially, it usually comes in bits and pieces. The material you were taught may have been organized nicely, but when it goes into your head, it often goes in a much more disorganized manner.
You grasp one concept, which leads you to the next, and bounces you back to the previous one as you finally get that part you didn’t grasp before.
Storing data in your head in this way is inefficient and confusing. This is why when someone asks you a question that you know you know the answer to, your words often come up in a garbled mess. You know you know it, but you just can’t explain it.
When you try to teach someone, you’re forced to reorganize the data in your own head. The act of thinking about the best way to explain something and put it on paper, or into words or slides, causes you to put together the disconnected bits of information in your brain and reorganize them in a way that makes sense.
You essentially have to reteach yourself before you can teach someone else. This is why teaching is so effective for learning.
Perhaps, by now, I’ve convinced you that teaching is both something you can do and something you should do—especially if you want to actually have a deep understanding of what you know.
But you might be wondering how you can actually get started teaching. It isn’t exactly easy to step out there and act as an authority on a subject that you may or may not feel comfortable about.
I find that teaching is best approached from a humble perspective, but with an authoritative tone. What I mean by this is that when you teach, you don’t act like the knowledge you have makes you in some way better or smarter than your student, but you do teach with confidence, firmly believing what you’re saying.
No one wants to learn from someone who is unsure of what they’re saying, and they also don’t want to be made to feel stupid when they are being taught.
It takes some practice to get this right—it’s easy to step too far in one direction or the other. Just try to realize that your job in teaching is to help someone else, not to prove your superiority or to seek approval.
Think about some of the teachers in your life who were most effective, the ones who made you enjoy learning and made an impact on your life. What qualities did they have? What approach did they take to teaching?
Now, where to get started? Should you open up your own classroom and invite people to attend?
I’d recommend starting small and getting used to the idea of sharing your ideas. I always recommend developers start a blog (did you read section 2?), which is a great place to teach what you’re learning without much pressure. As you learn about a subject, blog about what you’re learning. See if you can distill the information you’ve acquired in a simple way.
My original goal—and still the most important one— is to make the complex simple. When I started my blog, I wanted to take what I was learning and simplify it so other people could understand it better.
You don’t have to stop with blogging, though. Another great step is to start giving presentations at local user groups or your own workplace. Just remember to keep that humble yet confident spirit—not arrogant—and you’ll do fine, even if you aren’t the best presenter.
Do you need a degree or can you “wing it?”
Do you need a degree to succeed?
I’m sure you know this is a very charged question. If you asked someone who has a degree they are likely to say “yes.” Ask someone who doesn’t have one, and you’ll most likely get a “no”—unless they happen to be unemployed at the time. But what is the truth? Do you need one or not?
Well, I happen to have a degree in computer science, but I didn’t start my career with one, so I’ve been on both sides of the fence. That doesn’t make my answer infallible, by any means, but it does give me the perspective of having tried to get jobs and promotions in either situation.
From my experience, I’ve found that having a degree isn’t required to succeed, but it’s certainly a limiting factor that narrows down the number of jobs available to you and to some degree your advancement—especially in larger corporations. Not having a degree can end up causing you to be filtered out before your resume is even looked at by a human.
Many companies, especially large corporations, filter job applications on education levels. In fact, some corporations have explicit hiring policies that require software developers to have a college degree. Again, that doesn’t mean you can’t get a job with one of those companies—there are always exceptions—but it certainly would make it harder to do.
I don’t want to overemphasize the importance of a degree here, but I do want you to understand that not having one will limit your options. With that said, I firmly believe a degree isn’t required to actually succeed.
I know many software developers who have had successful careers without ever getting a degree. Bill Gates is a great example of this. He didn’t finish his degree but look at him now. For a good portion of my software development career, I didn’t have a degree and I did just fine.
In the field of software development, the most important thing is ability. If you can write good code and solve problems and you can demonstrate that ability, it will take you much further than a piece of paper that says you’re “educated.”
The thing that’s different about software development, compared to many other industries, is that the field is constantly changing. Every day new frameworks and technologies are introduced.
It’s virtually impossible to adequately prepare a software developer for the real job environment in an educational institution. By the time textbooks are published and course curriculums are decided on, many things have changed.
Now, this doesn’t mean that there aren’t some core areas of software development that don’t change. Many computer science degrees include courses on algorithms, operating systems, relational database theory, and other topics that are timeless, but the simple truth is that when you sit down at your desk to write some code, you rarely fall back on the skills you were taught in school.
Most of the work we do as developers involve using new technologies and learning how to work with them. We rarely need to go back to our computer science roots.
Again, that doesn’t mean that a basic computer science education isn’t valuable. The ability to be able to dig deep into a problem and to understand it at more than a surface level can be very valuable. It’s just that, for most developers, the more relevant indicator of success at a job is relevant experience.
Advantages to having a degree
We’ve already talked about some of the advantages of having a degree, but let’s dive in a little deeper.
First, having a degree is going to ensure that you have a well-rounded education in software development. A computer science degree, or similar software development–related degree, won’t give you all the education you need to be a good software developer, but most degree programs are going to at least equip you with the basics and a solid foundation.
You can, of course, learn these things on your own, but if you’re self-taught, you may end up with some holes in your education that could hurt you later in your career.
A computer science or related degree will equip you with high-level mathematics; understanding of programming languages, operating systems, and algorithms; and a few other key topics that you might not necessarily need to know to do your day-to-day job, but that will provide you a good foundation and deeper understanding of what you’re actually doing and how things work.
Having a degree also helps you get started without experience. It’s very difficult to break into the field of software development, especially without any experience. Having a degree, in that case, can make a big difference. It’s very hard to convince someone that you can write code when you’ve never had a job doing it before and you don’t have formal education.
A degree can also give you more options. There are some positions that you’ll never get without a degree—especially in large corporations. And you’ll have a hard time moving over to an executive position without a degree. If you decide you want to switch tracks and advance up the management track, you may want to get an MBA, which will require a lower degree, first.
What if you don’t have a degree?
Okay, so obviously having a degree isn’t going to ever hurt you, and it could help you, but what do you do if you don’t have a degree?
If you don’t have a degree, you’re going to have to rely more on experience and demonstrated proof of your capabilities. A degree gives an employer at least some confidence that you know something about software development, so without one, you need to be able to prove your ability on your own.
The best way to prove your ability is through previous experience. If you were a software developer for the past five years without a degree, it’s pretty likely that you can write code.
But if you’re just starting out, your job is going to be a bit tougher. You’re going to have to prove that you can actually do what you say you can do. One of the best ways to do this is with a portfolio.
I’d recommend having a portfolio of your work, whether or not you have a degree or experience, but if you have neither, you better be able to show some code you wrote.
One of the best ways to do this today is to contribute to—or start—an open source project hosting on a site like GitHub (Build software better, together). GitHub is a service that hosts many open source projects. Someone can look at your GitHub account and see your contributions.
You can also put together some websites or applications you’ve created and brought the source code with you to a job interview. I always recommend that developers, especially ones starting out, create a mobile application, like an Android or iOS app. This is a good way to show a prospective employer that you have what it takes to build an entire app and deploy it.
Take a moment now and think about apps that you could create or how you could create some kind of a portfolio that you could bring to an interview. Do you already have some code or a project that you could use?
Another thing to consider, if you don’t have a degree at present, is whether or not you want to get one in the future. When I first started out, I didn’t have a degree. I ended up working hard to get my first few jobs, but then I got to a point where I had enough experience that a degree wasn’t all that important.
Still, I decided to pursue my degree after working for a couple of years, just so I could get that piece of paper. By going after my degree this way, I was still able to work, so in the end, I actually ended up having about four more years of experience than my peers but also had a degree.
The only downside is that I had to spend my evenings studying for a few years. Even the cost wasn’t a factor for me, because correspondence and night schools are usually cheaper.
Plus, when you already have a job, the expense seems much less and you don’t have to go into debt. Not only that, but some companies will actually pay some or all of the cost of your degree.
If you don’t have a degree right now, you can pursue a similar route. You can keep your current job and get a degree by taking classes part-time. It’s a good backup plan that may help you in the future.
One other course you may want to pursue is professional certifications. While not as powerful as a degree, they aren’t nearly as expensive and can help you to prove competency in an area.
There are professional certifications in Microsoft and Java technologies and for methodologies like Scrum. You can usually self-study for one of these certifications programs and take a fairly cheap test to become certified.
Finding gaps in your knowledge
There is nothing wrong with focusing on your strengths, but sometimes your weaknesses, if not addressed, can be the limiting factor in your career or life in general. We’ve all got weaknesses.
We all have gaps in our knowledge that prevent us from doing things as efficiently as possible. The more of these gaps we can find—and eliminate—the better off we’ll be in the long run.
This blog is all about finding those gaps in knowledge that are holding you back from reaching your full potential. We’ll examine why those gaps exist, how to find them, and finally how to fill them in so that you aren’t limited by what you don’t know.
Why we leave the gaps
For a long time, I didn’t understand how lambda expressions worked in C#. Lambda expressions are basically anonymous functions that can be used to create a delegate in C#. You could use a lambda expression as a shortcut for declaring a function that doesn’t have a name.
I kept seeing lambda expressions in C# code I was working with, and I could kind of figure out what was going on, but I didn’t really understand it. I knew that if I took the time to understand how lambda expressions worked and what they really were that I could do my job better, but I just didn’t have the time.
Eventually, it became readily apparent to me that I had a severe gap in my knowledge. Neglecting to take the time to thoroughly learn how lambda expression worked was costing me hours of wasted time. I eventually decided to take the time to understand lambda expressions. It only took me a few hours of reading and experimenting with them before the concept clicked.
An observer, watching me work, would have immediately identified my weakness and how much productivity it was costing me, but even though it’s apparent now, I couldn’t see it at the time.
That’s the problem with gaps in our knowledge. We tend to gloss over them and we tend to be too busy to stop and take the time to fill them in. We end up not really understanding what we’re doing or do things in an inefficient way to avoid areas where we’re weak or feel uncomfortable.
Even when we do eventually identify these gaps and understand the pain they’re causing us, we still have a tendency to do nothing about it—even though we know we should. It’s like avoiding going to the dentist when you have a toothache because you don’t want to be bothered with it.
Finding your gaps
Now, not all gaps in your knowledge are apparent. In fact, I’d say that most of them you’re only vaguely aware of—if at all. It’s often difficult to know what it is you don’t know and it’s easy to ignore.
One of the best ways to identify gaps in your knowledge that could be holding you back is to look at where you’re spending the largest amount of your time and any repeated tasks you’re doing. Often, you’ll find that tasks that are taking you an inordinate amount of time are being slowed down by some gap in your knowledge.
You might be fumbling through something because you lack a thorough understanding. That’s exactly what was happening to me with lambda expressions. I was spending a large amount of time trying to debug or work with code that had them, instead of taking the few hours it would have taken me to understand them.
The same goes for repetitive tasks. Anything you’re doing repeatedly is worth a thorough examination to see if there’s something you don’t know that, if you did, might increase your efficiency.
Consider keyboard shortcuts. Perhaps you’re using an application repeatedly, but you aren’t working as efficiently as possible, because you have to manually drag a mouse around the screen and click.
A possible gap in your knowledge could be keyboard shortcuts. Just spending the time to learn the keyboard shortcuts for an app you use for hours each day— hint: your IDE—could save you hours a week.
Another technique for identifying gaps in your knowledge is to always try to be aware of anything you don’t understand or that isn’t clear to you. You can keep a list of things you need to research or aren’t clear about and keep track of how often those same subjects keep coming up. You’d be amazed how quickly that list can grow.
Just be honest with yourself: if you encounter something you don’t understand, you don’t have to learn it right away, but add it to your list so you can at least identify gaps in your knowledge.
This technique works great if you’re preparing for a job interview and need to identify what you need to study. Try to find as many job interview questions as you’re likely to be asked at an interview. If you’re looking for a Java job, perhaps you’ll find lists of Java job interview questions.
Go through all the questions, and put any concept that you don’t understand or any questions you can’t answer with complete certainty on your list. Once you’re done, you’ll have a nice long list of topics to study.
It seems simple and obvious when I say it here, but many software developers preparing for a job interview have no idea what to study or how to figure it out.
Filling the gaps
It does no good to identify all the gaps in your knowledge if you don’t have a way to fill them in. Fortunately, just like the trip to the dentist, the actual work of filling in a gap, once you identify it, isn’t as dreadful as you might imagine.
Really, the key to filling in a gap is identifying it. Once you know what a gap in your knowledge is and how it’s holding you back, it’s usually easy to figure out how you can fill in that gap.
When I was able to figure out that not learning C# lambda expressions was holding me back, all I had to do was take the few hours needed to sit down and make a concerted effort to learn.
Just make sure you know exactly what it is you need to learn—and make sure the focus is narrow. If your weakness is that you aren’t good at physics, you aren’t going to be able to easily fill in that gap. But if you can identify that not understanding how springs work is what is actually causing you the trouble, you can spend some time studying Hooke’s law.
Often, you can fill in a knowledge gap very quickly just by being willing to ask questions. You might be a bit embarrassed because you don’t
Find a gap and then fill it in. know something, but if you can overcome that embarrassment and ask a question when you don’t understand something, you’ll find that you’ll fill in many gaps in your knowledge with little effort.
When you’re having a conversation or discussion and you encounter something you don’t understand completely, don’t gloss over it—ask for clarification.