Learning like a developer learns
If you want to see the future—and who doesn't?—the place to begin your search is now. It's not only that the future is already here, just unevenly distributed, as William Gibson has put it. Sometimes it's all around us and we just haven't noticed. If you want to see the future of education and knowledge, take a look at how software developers learn. There's a strong case to be made that they have built for themselves the best continuing and rapid education system ever.
This is a learning environment that works at every level:
If you don't know which programming language to use, there are pages that compare them, and extensive discussions about their strengths and weaknesses.
If you need to learn a new language, there are tutorials aimed at beginners, at experts and at people who are grounded in one language and now want to learn some other.
If you have a question about how to do something in a particular language, you can pose it to a search engine and it is highly likely to turn up a precise and accurate answer, either at a site dedicated to answering developers' questions or on a blog by someone who struggled with the same issue. There are likely to be multiple answers, each with some back and forth discussion, and then the code that you need.
If you understand how a particular function works, but want to try out some variations in a sandbox, there are sites that let you.
If you run into a bug in your own program that is driving you crazy, you can post it and likely find someone who has already worked out the problem.
If it turns out to be a bug in the language's implementation or in a browser or an operating system, there is likely to be a way that you can report it, or read the status of someone else's report.
If you want to reuse some existing code, whether it's for a function or an entire application, you can. Sites like SourceForge and GitHub make it easy to find code, alter it and post your version so others can benefit, as per the Open Source ethic.
If you want to learn about new developments in software engineering, and the development of new tools and places to learn, you can bookmark sites like Hacker News where the community poses links, and discusses the linked posts, in an informationally high-density format.
This environment has dramatically increased the productivity of software developers. Because they write the code themselves, it conforms quite precisely to their needs and ethos. Because most lawyers, doctors, academics and other knowledge seekers can't program their own sites, their learning environments are not as highly tuned to their needs. But they will get better, especially if they pay attention to the attributes that make the developers' environment so productive:
The developers' learning environment covers every level of learner, from the newbie to the seasoned veteran. The discussions are appropriate to each level, including in their tone. While newbies can be scorned at times, it is usually not because they're asking beginners' questions, but because they have failed to observe the rules and norms of the particular forum, such as searching for an existing answer before asking a question, or posting the question in multiple subject areas.
The answers in developers' learning environments tend to come from other developers, not from a professional staff of educators. It's an ecosystem of practitioners teaching practitioners.
They have developed a set of tools and conventions for reusing one another's work. It's often just a download or a copy-and-paste of code. If it requires some commands typed into a terminal, they're often posted in a format suitable for copy and pasting.
Developers share as much code as they can. That's not going to work in every profession, but it is a default to be encouraged.
Their learning environment encourages iterative improvements: small tweaks and optimizations. That also breeds a certain humility about one's code: It can always be improved.
The educational materials developers post usually don't sound like educational materials. They sound like that particular developer. It might be funny or feisty, but it comes in the voice of an individual human being.
And the learning environment created by developers models something profoundly important, I believe: the idea that learning can be and should be a public activity that enriches not only the individual learner, but makes the public space a little smarter as well. The idea that the educational process improves society directly, and not just by creating individuals who can then work for a better society, is one of those notions that seem small and obvious, but could have big long-term effects on how we think about teaching and learning.
Someday we'll all learn like software engineers.