Prioritizing for Self-Learners

Recently, I've been catching myself picking up every single book I can find on web development.  From HTML/CSS to jQuery to Ruby/Ruby on Rails to progressive enhancement, there's just SO MUCH information out there.  And, frankly, I want to know it all.  Preferably... now.

Unfortunately, there are only 24 hours in a day.  And, when you consider that up to 12-16 of those hours are spent sleeping and engaging with loved ones and another 2-3 are spent doing things like eating and showering, that doesn't leave all that much time to really absorb everything immediately.

While some might posit that the obvious answer is to sleep less, ditch the family, skip those silly showers, and eat microwave food, I insist on having all of those things.  It keeps me sane.  If I have to choose between hacking and being sane, well then goodbye hacking.  No, seriously.

But given that I want to hack and learn and seriously become front-end dev savvy, then the only way to get it all is to first, admit that I can't have it all right this second.  Second, prioritize.

So then, as I review all the things on my starter list, I realize I have a couple of options:

  1. Get awesomely good at one thing at a time
  2. Get an overview of everything
  3. Do some combination of 1 and 2

Now for the pros and cons of each:

#1 - Pros: In the process of becoming awesomely good, you learn all the intricate details of it. People will admire you for your knowledge and line up around the block to learn from you. If done properly, you will become awesomely good with the fundamentals first and then build upon them by becoming awesomely good at the fancy stuff, too. In the end, you will be awesomely awesome, no questions asked.

#1 - Cons: Becoming awesomely good at anything takes serious time. Also, when it comes to technology that never stops changing (like web development), you'll never be done.

#2 - Pros: Buffets are awesome because you can sample a little bit of everything without committing to a single dish. By getting an overview of all the major components of web development, you can see how all the layers work together to make something magical.  Plus, it doesn't take very long to learn a little bit about something (at least, compared to being awesomely good at the same thing).

#2 - Cons: Learning something about everything means you won't know everything about something. The time you could be spending getting a deeper understanding about one thing is instead being spent on getting a shallow understanding of other stuff.

#3 - Pros: Everyone loves compromise! (Similarly, everyone hates it. That's just the nature of compromise.) The idea here would be that you learn more than just a little bit about everything. Instead of becoming awesomely good, you'll be pretty good. About a lot of stuff. I like to go by the 80/20 rule.  You can learn 80% of what you need to know in 20% of the time it would take to learn it all perfectly.

#3 - Cons: Same as the cons for both #1 and #2, but less so.

In that respect, my goal will be to get to 80% understanding on everything, starting with the fundamentals and working my way up to the fancy stuff.  Then, when I need to dive in deeper, I can use the 80% understanding I already have to get another 10%.

So, then, I'm going to take the same list from my first post and reprint it, in order of priority, from learn it immediately to learn it later:

  • HTML/CSS
  • CSS-based table-less layouts
  • Compliant code (What does “compliant” mean, exactly?) * A portfolio (I’ve got nothing of note so far)
  • Design principles
  • Typography
  • JavaScript/jQuery
  • PHP
  • Ruby/Rails
  • User interfaces
  • Web standards
  • Usability
  • Other scripting languages
  • Adobe Photoshop
  • Adobe Illustrator
  • Experience building and maintaining large sites (50+ pages)

Note that not every next item is more important than the last.  There are some significant chunks of things that are all equally important, like HTML/CSS and compliant code. I've already started noticing that, since I don't have a serious background in HTML yet, I don't have to re-learn compliance.  I just have to absorb it and other best practices while I pick up HTML.

Ok, I think that should help me focus a bit... Thanks, Internet :-)