A Guide to Selecting & Organizing Self-Study Materials


From Stefan Bucher’s 344 Questions


So, you’ve decided to learn how to program or speak a foreign language on your own. Without a clear strategy, one of two things will happen. You’ll spend hours researching and gathering resources, only to become overwhelmed, as it becomes increasingly clear you have no idea where to start. You’ll assume you need several hours a day to learn, which means that your routine will be threatened by every unscheduled event, bad mood, or low-energy day. Or, you’ll hop over to Codecademy or Treehouse, Duolingo or Babbel–or whatever big-name company you’ve read about online–and start picking through their courses. Your sense of mastery will grow with each badge you earn and streak you maintain, until of course you finish. That brief, exhilarating ego boost will be crushed, as you realize that your chosen subject is far more complex and rich than those introductory courses led you to believe.
This is when most people start giving up, which is unfortunate because both approaches have merit. Deep research is essential to mastering a subject, as is recognizing that you should probably stop googling and just get something done. The problem isn’t the approach; it’s the fact that most people only choose one.

The Three Types of Resources

Regardless of what you’re learning, you need to locate and stick to three types of resources:

1. Full Views

This book, course, or podcast provides a step-by-step introduction. You should comb through it for at least 30 minutes a day, as it offers both a high-level and deep understanding of the subject. Do not skip or rush. This is your foundation.


Principles for Language Learners
  • If it doesn’t have audio, it’s useless.
  • If it doesn’t teach you how to read and write the language and/or uses romanization, it’s useless.
  • If it doesn’t come with review or practice features, it’s useless.
Principles for Aspiring Developers 
  • Books are always more in-depth than videos. If you find video tutorials, great, but assume they’re supplementary.
  • Don’t buy any book that won’t give you free updates. Languages and tools change all the time, and you need to be up to snuff.

Language Learning Examples
Language-Specific Examples
Programming Examples
Web Development Examples
iOS Development Examples

2. Kickstarters

This is an app or course that gets you started, but often leaves you frustrated because it seems to be missing something. This nagging irritation is actually a good thing, because it keeps you engaged and asking questions, and pushes you to find answers. The key difference between Full Views and Kickstarters is time: with the latter, each lesson is self-contained and can generally be completed in 5-30 minutes. The sense of instant gratification and accomplishment you get from this type of resource makes it an excellent warmer and motivation sustainer. It’s a way to trick yourself into learning when you’d rather watch TV. And they have the added benefit of not giving you a false sense of mastery (assuming, of course, that you’re not exclusively using this type of resource). As with #1, they’re well-organized—you’ll see levels, tracks, and whatnot—but they don’t offer deep knowledge.

Language Learning Examples

Language-Specific Examples 

Web Development Examples
iOS Development Examples


3. Deep Dives

These are neatly divided by concept, and give you a deeper understanding of the material you’re covering in #1-2. Keep in mind that this part involves the most work. It’s not enough to just go through the material. You need to create drills. Pick something you want to master or improve—grammar or vocabulary, Table Views or Core Data—and work on it everyday for 2-4 weeks. If you’re trying to expand your vocabulary, create flashcards that force you to put new words in the context of familiar grammar structures. If you’re trying to get good at building and designing Table Views, create an app that uses TableView everyday for a month, and force yourself not to repeat the same designs, animations, or extensions.

Language Learning Examples

Language-Specific Examples

iOS Development Examples


So, now you know which types of resources to get, but there’s still the question of how to organize them. The bad news is that you’re going to have to experiment—there is no one-size-fits-all strategy for time management—but I can recommend the following approaches, based on experience:


During the busiest time of the week 
  • 15-30 minutes with a Kickstarter. Finish one section.
  • 1 chapter of a Full View. Assume it’ll take an hour. If it’s a really long chapter, and you’re pressed for time, find a good stopping point.
You don’t need to do these in one block. Do one in the morning, the other in the evening.

When you have blocks (2-4 hours) of uninterrupted time 
  • The same as above
  • + Deep Dives
If you’re a developer, I’d suggest Saturdays for Deep Dives related to a project you’re working on, and Sundays for your own projects.
If you’re a language learner, I’d suggest Deep Dives that prepare you for conversation practice. If you’re having an italki lesson tomorrow, do your Deep Dive to prep today.
If you’re super-busy, too bad. Break up your sessions into small chunks.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s