Deconstructing My Learning Process
Lately I’ve been doing some self-examination of my learning process. With Microsoft releasing so much new technology, including .NET 3.5, Silverlight, Azure, and soon .NET 4 (just to name a few) in rapid succession, there is a TON of new stuff to learn. The learning process is fun for me. I really enjoy picking apart a new technology, figuring out what it can do that no one has done yet.
I tend to follow the same loosely defined process when I’m picking up something new:
- Decide I want to change the world with some technology (often the flavor of the day: Azure, LINQ , Silverlight, etc.)
- Do a blizzard of Google searching
- Save a bunch of links (Delicious, private wiki, etc)
- Add all of that domain’s guru’s blogs to Google Reader (ScottGu, Wildermuth, etc)
- Add the StackOverflow RSS for that subject to Google Reader (I currently watch Silverlight and Entity Framework-tagged questions, it’s very cool!)
- Read a bunch of “how-to” walkthroughs
- Download code samples that demonstrate the bits and bobs I want to learn
- Go to town with VS.NET
I suspect this is a common process for many people. It has occurred to me that being more aware of this process might help me to improve it. I’m currently in the process of a deep dive into Silverlight. Silverlight is such a humongous subject unto itself that I find myself spending too much time spinning my wheels. Therefore, in the interest of improving my learning process and making it more efficient, I’ve decided to deconstruct it here for all to see!
Strengths and Weaknesses
Here is what I like about my process:
- Gathers lots of reference material
- Identifies authoritative sources for information
- Follows others work in the domain (StackOverflow, Blogs, Code Samples)
Here is where I think my process can be improved:
- Disorderly
- Too task-focused
- Wastes too much time on narrow subdomains
My Current Process
I’ll use my Silverlight research to demonstrate my current modus operandi. I’m really jazzed about Silverlight, so I’d like to learn as much as I can. I want breadth and depth. I started with #2 of Dave’s Way to Learn Stuff, so I went to Google:

The first link is the official Silverlight Get Started page. It’s a good start. I see all the tools I’ll need to get rolling. I also see:
- Tim Heuer’s “hello world!” Silverlight screencast
- ScottGu’s series on Silverlight
- Lynda.com training videos
I looked at some of these videos and articles, but not all, and not in any particular order. My current process is not that orderly. I tend to start off with an idea of what I want to accomplish, then set out to achieve it by targeting the specific elements I need to “Make It Work.” This is one of the major flaws in my process. I get so excited about creating something that I absorb the information I need in a disorganized, scattershot fashion. In my impatience, I go down a single rabbit-hole without building the larger picture around me first. The return on my time investment yields, at best, a narrow task-oriented understanding.
Dave’s Learning Process 2.0
Step 1: Mind Maps
What to do? I need to be patient enough to build a comprehensive, 10,000 foot-level understanding of the domain before I dig deeper. If you’re like me, you want the big picture…
I ran across the idea of Mind Maps some time ago, but only recently realized their potential. I’m a visual kinda guy. You can stand a talking head in front of me for hours and I’ll absorb maybe 30% of what he/she says. Sit me in front of a cool Discovery program with lots of pretty graphics, and I’m a sponge- I’ll memorize 80% of the stuff. Mind maps are an excellent way to create a visual representation of a subject. They help synthesize domain information into a comprehensive mental model.
The mind map above took me less than twenty minutes to build. I stole borrowed the structure right out of the MSDN Silverlight Roadmap. It’s not complete, but it doesn’t have to be. It covers the major aspects of Silverlight, so I have my 10,000-foot overview. When I learn something new about Silverlight, I’ll know where to plant it in my mental garden.
Creating your own mind map of a subject is a great first step to learning it. If breadth and depth is what you want, you can round-robin each major trunk, “drilling downward” into the subject, rather than inadvertently falling down one rabbit-hole to the exclusion of all other subdomains. Using a mind map, you’re in better control over your research process. If you’re only interested in one sliver of a domain, such as Silverlight Media and Animation, that’s fine, but I still believe the mind map is useful. It helps you understand how subdomains relate to each other. Notice in my Silverlight Mind Map how DataGrid straddles Data and Controls. If you want to understand DataGrids, you’ll have to learn at least a little about how Silverlight handles Data.
Read, Follow, Create, Invent
Now that my mind map is created, I can build the foundation. My past research process has been driven by impatience- I want to get something done NOW! This has lead to a false economy of time investment. From now on, I will take the time to ingest the basics first. Ironically, I think this will save me time in the long run. I will spend less time looking things up and cross-referencing if I read up on the essentials first. I can also rely on the mind map to let me know how far I’ve gone and how far I have left to go. This will keep me from feeling that the foundational learning is an endless, pointless process… the feeling that has historically kept me from taking the time in the first place!
Step 1: Read
Let’s go back to the MSDN Silverlight Roadmap. I pulled eight major trunks out of the Roadmap and added it to my mind map. Each of those trunks has a dedicated top-level page on MSDN. This just isn’t a lot of reading. Once I’ve read each of these, I can make notations on my mind map, calling out areas where I want to dive deeper. I won’t spend more than say, fifteen minutes on each trunk before I move on to the next one.
Step 2: Follow
Now it’s time to do a little trying out by following simple examples. I’ll build a test project, and add a page for each of the major trunks. Here I will try out little bits and pieces of each subdomain. Nothing fancy, nothing complex, nothing integrated. Just tiny little examples of each subject. Look for the most basic how-to code samples for each subdomain and just copy and paste.
Step 3: Create
This is the stage where some creativity comes into play. As a few “what-if” questions about the examples you’ve built, and start to experiment with tweaks and modifications. Form and test some theories about the way the features work by themselves and together. Try combining features from related subdomains in a limited way until you have a feel for how they interoperate.
Step 4: Invent
Now we’re ready to build a real application. Using elements from several different subdomains, build something simple but useful. My first full Silverlight app will be… tada! a Sticky Note application. Stop the presses.
Lab Coat Time
Let me be clear: this is not wisdom from on high. It’s not the new bestselling productivity book. It’s an experiment- my experiment. I have a good feeling about it because it feels… weird, heavy somehow. I know that has to be a good thing because anything better than my current way of doing things will be outside my comfort zone. Therefore, a little discomfort is probably a good sign!
So, my next step will be to start with Read. I will dive into the MSDN Roadmap and go from there. I will dutifully report my progress, so watch this space for updates and code samples as I forge ahead! If this works as well as I hope it does, expect to see more open studying for lots of other goodies. Stay tuned!
DS

