Self-education is something that separates good developers from great developers.  Great devs are always searching for new ways to do things, always trying to learn. You need to rely on YOU for your education.  However, teaching yourself isn’t always something that comes natural. Here are some of the things I’ve learned about learning that might help you.

“Drop out of school before your mind rots from exposure to our mediocre educational system. Forget about the Senior Prom and go to the library and educate yourself if you’ve got any guts. Some of you like Pep rallies and plastic robots who tell you what to read.”  – Frank Zappa

  • Reading code is in many ways more valuable than writing it. Read open source code every single day. If you are use a library, read it’s internals. Read the annotated first version of jQuery and then read the annotated version of 1.6.  Then read where it is going tomorrow.
  • Look at the commit messages to understand *why* changes happen. Some are funny, some are novels, but going from *what* to *why* helps you learn.
  • Read technical specs. If you work on the web, you should read and understand *how* the web works.
  • Submit a patch to a large and maintained open source project. There are two ways to get feedback from people that work on these big projects: Hire them, or contribute to an open source project they maintain. One of them is going to be a lot cheaper.
  • Open source half-baked ideas.  Yes, you need to be brave
  • Fail.  Fail a lot. Failure is a gift.

“I have not failed. I’ve just found 10,000 ways that won’t work.”
― Thomas A. Edison

  • Keep on failing.  I have failed more times than I have succeeded, but it just makes success that much more gratifying.
  • Attend meetups and conferences. Chat with people about code. Ask them what they think.
  • Teach.  Submit a talk to a conference where you aren’t 100% sure beforehand that you know the topic area.

“Those who know, do. Those that understand, teach.”
― Aristotle

  • Instead of finding someone to mentor you, find someone you can mentor.

“In learning you will teach, and in teaching you will learn.”
― Phil Collins

  • Once you have moved beyond the basics, experience is the best teacher.  Build something, even if you are going to throw it away.
  • Accept feedback liberally, process it critically. Let others tell you what they think you should do and how to do it, but only listen to it if you think it’s a good idea.
  • Be passionate, have opinions and share your opinions.  A former boss of mine told me that you can’t be a good engineer unless you are opinionated.
  • Make time to look backward and forwards. Hold retrospectives and analyze if you were correct or not.
  • Read things from unrelated fields and find parallels. I like to find lessons for building websites in science fiction and fantasy.