| (pre-emptive horn-toot warning/apology, its a career story, as my entire software career so far has followed from stuff learned and done on SO. If you read this I hope it makes you consider contributing to something like StackOverflow. The rewards can be much more concrete than "just" knowledge and a website score.) I did the StackExchange (StackOverflow) and start-a-blog approaches that this article suggests and it worked out beyond anything I could have expected. I think that good teaching is the best way by far to becoming an expert at something. Right before I was graduating college in 2010 I got an email from my former employer who had offered me a job (I had accepted) talking about what he had in mind for my upcoming work. The email read, "Do you know anything about the new Canvas element?" I didn't. There wasn't a lot out there for canvas in 2010, just some pretty proof of concepts and bad tutorials. I felt like I had two choices: Try to build something with canvas to learn how to use it, which always felt like a good way to use very little of something, or try to learn by teaching, which in college seemed like the only way to understand something in depth. Sidenote: I believe that if you can't explain it, you don't understand it. This is just as true for political/philosophical positions as it is for mathematical rules. This is also what separates reasoning from mere opinion on many topics (ie, one's opinion on abortion. Regardless of what it is, if you can't explain your position to me, you don't have reasoning, you have a vague notion gotten from parents or peers that happens to pass as an opinion). So I took to StackOverflow like a fiend. Whenever there was a question asked too often, I'd write a blog post tutorial about it. After a year I had answered more than 10% of all canvas questions ever asked. (It did end up being a bit of an addiction. If I put StackOverflow on my resume, it will have to be under the header "Poor Time Management".) StackOverflow is gratifying. Really gratifying. Forget the points, too, especially if you're in a niche topic. The people I was helping gave me the only encouragement I need[1]. I didn't realize it at the time, but after a while I just became a resident expert on canvas. Even really obscure questions like this[2] presented my mind with easy solutions after answering so many other questions. I didn't believe myself an expert until one day, I had forgotten how to do something, so I Googled the answer and clicked on the StackOverflow link. The answer-er was myself. I didn't even remember writing the particular answer, but there it was, and past me literally (re)explained to future me some canvas trivia. In two years I went from knowing zero about canvas to being one of very few visible human resources for canvas on the web. I got a book deal[3] and several job offers out of it. That means that contributing to SO and helping people ought to favor even the most mercenary among us. I still receive a steady stream of emails from people asking canvas questions. I try to help where I can, but feel overextended these days. Even while being overwhelmed, I still get the feeling that teaching is the most important thing I could be doing. I had considered taking some time off my job to do nothing but make JS tutorials, and try to make some "Bob Ross"-style learn to program with JS videos, update the MDN, and hold office hours in StackOverflow chat. My "dream job" would be doing something like that full-time, maybe for a year, but I can't really afford to quit work for more-or-less charitable web stuff just yet. Someday though, probably in a couple years, I'll have the money to "buy" the time. [1] http://i.imgur.com/POZmt.png [2] http://stackoverflow.com/questions/10060242/html5-canvas-glo... [3] The book contains lots of interesting canvas tips and quirks I've found in the past years (and a canvas performance chapter!) http://www.amazon.com/dp/0672336278/ |
I now want to try teaching people more directly, but it's somewhat difficult. My university is unfortunately really biased against functional programming (much less the interesting theory stuff). There are some cool meetups around, and I'll probably give some talks there in the near future--after summer--but it would have been cool to TA a class to. One day.
This is also why I think that having a good culture of education, both on the learning side but also on the teaching side--is so important for a company. That's one of the main things I'm looking for now when I consider where I would like to work.