This is the fifth post in the teaching and learning series. The teaching and learning series includes the following posts:
Why Aren't You Awesome Yet? (Learning Via The World-Wide Community)
What Playing Cards Can Teach Us About How We Learn – And How Fast We Do It
These days there are unprecedented opportunities for you to learn, improve yourself and your skills. We often tend to take it for granted that information is at our fingertips and yet, at the same time, it has become so ubiquitous that we sometimes don't even realize that the answers to our questions are right there to be found. We fall back to the tried and true method of asking the people around us, perhaps we might even remember to do a quick Google search, but if that doesn't bear immediate fruit, we sit back, scratch our head and hope that the information we want/need will somehow appear. But, it doesn't have to be this way.
You know, people don't seem to have enough respect for books and developers are as guilty as most. I am not sure if this is a product of our age or if it has always been this way. I can't tell you how many times people have argued with me, staunchly defending the position that books are useless (I keep meaning to write a post about this, I still might). You see, apparently, the only way to learn is by doing and so books are a waste of time. There are so many things wrong with that statement, but I might save all of them for that other post, in case I ever get around to writing it. Let me just say this, "doing it" is the only way to PRACTICE, as far as learning goes, there are lots of different ways, with books sitting right up there at number one (or at least the top three). I don't want to go on a tangential rant here, but you can probably tell that I love books :) and believe that you can never read too many – (I am not the only one).
The good news is that book availability is at an all-time high. Take a step back and just consider what a service like Amazon provides for the book lover. All the books you ever wanted are only a click away. Robust search capabilities make sure you can find the most popular/most relevant books for your topic of interest. Reviews by other people, with similar interest, help you separate the mediocre books from the awesome ones; recommendations give you a trail to follow for further study. And then there are services like Booko (only for Australia though :)) to make sure you get the most for your hard-earned dollar. Contrast this with how it used to be, as recently as 10-15 years ago. The only places to get books were bookshops and libraries, this is fine, but the problem is limited selection, not to mention the difficulty of finding out about the "best" books in the first place. If your area of interest was specialised, you would have to be part of the community around this topic (e.g. be studying for a degree in that particular area) to even learn of the existence of some of these books. And when you did learn, the recommendations you get would be limited to several people at most. That's the difference between a world-wide community working on your behalf vs. a local one (or none at all).
Of course books are not the only way to learn, you can learn much by interacting with the experts. Except experts are busy people and hard to get a hold of, right? Maybe a few years ago this would have been true; the only way to get exposure to an expert in your field would have been to go to them (e.g. conferences) or for them to come to you (hired by your company). These ways are still valid (no matter how infrequent/unlikely), but this day and age, every expert and his pet has at least some kind of presence online. Many have blogs where you can be exposed to their thoughts, sometimes on a daily basis. Admittedly it may be hard to find the truly useful blogs, but it is eminently possible especially considering that the world-wide community is also working on your behalf in this instance (more on this shortly). Blogs you say, blogs are old-school, Twitter is the new black! I am exaggerating, they both have their place, but Twitter does often allow you to make instant connections with people you want to reach. When me and my friend @mat_kelcey were having trouble with RSpec and twitted our woes to the world, it only took a couple of hours before David Chelimsky came to our rescue – and he wrote RSpec! It doesn't really boggle your mind any more, we're all kinda used to it – still it's freaking awesome :).
If you think that seeking out experts in your field to learn from them is for the birds, why not get the experts to seek you out? Start a blog of your own. I guarantee that if the stuff you write is interesting and compelling enough, people will come to have a look, start a conversation and some of these will be the very experts you wanted to reach. I don't have to go further than my own blog for an example. I am by no means a guru, I simply try to write about what I learn, express my opinions and make it all reasonably interesting. But, you write enough about particular topics, and people in the relevant communities take notice. For example, I have written a bit about Ruby, and I've had people who are deeply involved in the Ruby community come and comment on my posts (I've even had David Heinemeier Hansson come and correct my grammar for me :)). I've expressed strong opinions quoting people well-known in our industry, only to have these people come along and pull me up on what I said, teaching me some valuable lessons as a result. I'd be lying if I said I didn't derive at least some satisfaction from knowing I have not only reached the people who can learn something from my posts, but also reached the ones who can expand on what I say, offer an authoritative opinion and teach both me and everyone else something as a result. There is nothing stopping you from doing the same. Infact, it would be great if you did, it can only benefit the community in the long run.
Talking about the world-wide community, there are quite a few prominent places which foster this in our field. Stack Overflow comes to mind as the most recent one, Reddit (proggit more specifically) and Hacker News have been around for a while. All these sites have different goals and do things differently from each other, but all of them build a community of like-minded individuals around them. These are the places where you can meet and interact with people who are just like you, from novices to experts. You can receive help and help someone else out. You no longer have to sit there scratching your head, you can get any question answered, you just need to ask. And if you want to understand what you know better, why not answer some questions yourself. And remember how I said that finding relevant resources online may be hard, well not any more, the community has done all the work for you, all you have to do is consume. But of course if you produce as well, you improve the ecosystem all-round and make the community stronger as a result. This benefits everyone, including you, everyone learns something, everyone improves.
I can't go past the greatest community collaboration effort of all – Wikipedia. I recently spoke about the need for developers to revive and maintain their math skills. Steve Yegge proposed that one way of doing this is to simply surf Wikipedia. Pick a math topic that interests you, read about it on Wikipedia and just follow the links until you get sick of it. Keep doing this for a while and you will be amazed at how much math you will pick up. But of course, this doesn't just apply to math, pick any broad topic that interests you and do the exact same thing. You may not get the most in-depth treatment, but you will get an intro and plenty of pointers to more information. The best thing is, unlike a normal encyclopaedia, it almost never goes out of date. It is actually even better than that. When Tim Bray announced that he was joining Google on his blog, I found out about it within I few hours (from Reddit or Hacker News I believe, see what I mean about community :)). As I was reading his blog post, I decided to go to Wikipedia to refresh my memory on exactly what he has done with his life. Do you know what the first thing that grabbed my attention was?
"…Tim was the Director of Web Technologies at Sun Microsystems until his resignation on February 26th, 2010. On March 15th, 2010, he announced on his blog that he'd taken up a position as a Developer Advocate at Google, focusing on Android…"
Did you catch that? It was on Wikipedia almost before Tim himself announced it. It certainly made me widen my eyes for a second, especially considering that only a few hundred years ago, you would have been lucky to get information sometimes decades out-of-date if you got it at all (read Bill Bryson's A Short History Of Nearly Everything, it is a great book in general but will also give you an appreciation for how slow information spread in years gone by, so slow that it was often independently invented by multiple people decades apart). Really puts things in perspective.
If all of this wasn't enough to energize you and help you become the best that you can possibly be, there is the Open Source movement. Open Source has really come into its own over the last decade. No matter what you want to do these days, there are Open Source tools and libraries available to you, that are just as good – or better – than any commercial offering, and the community (all the things I talked about above) can help you find the best tools for your needs. You not only have the resources to learn anything you want, you also have the resources to DO anything you want. That is to say, if you want to practice (remember what I said about practice), there is nothing in your way. And Open Source doesn't just mean free, it means OPEN SOURCE! You can study the code, change it, see how everything is put together. You can pick up style and techniques that you will not be able to find in any book. This is know-how right from the trenches and all you need to spend is a little bit of your time.
At no other time in the history of the world, have we had access to so much information, on any topic you may find of interest. At no other time, have we had tools at our disposal to organise it all and find just the right resources to give us the best "bang for our buck", when it comes to both finances and time expenditure. It is easier than ever to become a world-class expert on anything you want without even having to get a formal education in the subject. It is easier than ever to be awesome at what you do! So I will ask you once again, why aren't you awesome yet?