Mary over at The Coding Pad has a great blog entry titled
The Strengths and Pitfalls of Online Tutorials for Beginners. She suggests that beginner programmers should work to develop a strong understanding of fundamentals before diving head first into the plethora of online tutorials out there. She also mentions some great tips on how to do this. But one pitfall she mentioned that really struck a chord with me was "Fragmented Knowledge".
This idea of Fragmented Knowledge (or "fragmentitis") is a huge pitfall for anyone who is looking to learn something new, not just novice programmers. The amount of reference material, how-to books/webcasts, etc. available on the internet is astounding and covers nearly every topic you can imagine. With a few clicks of the keyboard, you could start learning almost anything about any topic you can think of. That's pretty amazing, Star-Trek-esque crap right there. But let me illustrate for you the problem of Fragmented Knowledge. Here are some of the topics I've wanted to learn more about this year:
- Beginner electronics + circuit-building
- C# 4.0, WCF, LINQ
- jQuery, Processing, Javascript
- Ruby, Python, PHP
- Linux basics
- Custom Firefox extensions
Add to this list my experiments with social media + emerging internet services, plus keeping up tabs on RSS feeds and occasional gaming. The result- my limited free time is gone, and I know a little bit about everything on this list but not enough to actually be productive. I can make lights blink on my Arduino device and send http GETs in Ruby, but I haven't learned enough to do anything cool or useful. And I know I'm not the only one in this boat.
Now this is not all bad. I'm a firm believer that society is becoming increasingly disconnected with the technology we reply upon every day, and we all have a duty to understand (at least at a basic level) how the things we use work. But this is clearly a misapplication of my precious free time.
One of the suggestions that Mary makes in her blog is to figure out what you really want to learn and focus your efforts on, then create a learning plan around that. I'll add there is a step in there to "defragment your head"- arrange and weed out the pieces of supporting information you have collected in order to best focus on your learning goals. As an example: for each item in the above list, I have a dizzying number of bits and pieces of info. Links to sites, tutorials, books on Amazon, downloaded videos, PDFs, whitepapers, page snippets and emails. Not only are they strewn everywhere, but taken together they do not comprise any kind of approach to learning the topic. They distract me, waste time, and worse- could just be plain bad information. So once I have my learning goals in place, I'm going to arrange my data sources + tools accordingly to best maximize my time. Over the next few weeks I'll detail the steps
I've taken to defragment my head and focus on actually learning new things.