I was reading Robert X. Cringely's most recent column for this PBS feature The Pulpit and something struck me. Metaphorically, not physically. What grabbed my attention was this passage:
Andy Hertzfeld said Google is the best tool for an aging programmer because it remembers when we cannot. Dave Winer, back in 1996, came to the conclusion that it was better to bookmark information than to cut and paste it. I'm sure today Dave wouldn't bother with the bookmark and would simply search from scratch to get the most relevant result. Both men point to the idea that we're moving from a knowledge economy to a search economy, from a kingdom of static values to those that are dynamic. Education still seems to define knowing as more important than being able to find, yet which do you do more of in your work? And what's wrong with crimping a paragraph here or there from Cringely if it shows you understand the topic?
You should read the whole article to get the full context, but Cringly's thesis is basically that education is being transformed by how we access information, much to the chagrin of educators. Now, I fall into that latter category from time to time, having taught general computing, hardware, software, operating systems and programming. So I know that this topic is not so much a can of worms as an oil-drum full. Still, I see where he's coming from.
For example, while teaching a programming intro class, I had two students who are really archetypal of what I usually see.
The first guy, lets call him Sven, just gets it. Totally a programmer from start to finish. Thinks in code. Sees data structures floating before his eyes. A Real Programmer. These are rarer than you'd hope, in any field. Sven is very simple to teach, because he intrinsically knows how it works, so you just hand him the tools, push him generally in the right direction, and then offer occasional course corrections (sorry, couldn't resist the pun) when he takes the long way around. Experience is the only thing that will make Sven better. I can't teach him a thing, I can only offer him opportunities to learn. His world is entirely based on Search. He doesn't need to know anything, because he fundamentally understands what he needs, and can find it online or in a book or whatever. If I were to ask him to fix a piece of code he'd never seen before, written in a language he'd never used, he could do it in not much more time than it would take him had he originally written the thing himself.
Then there's Ole. Ole does not get it. Hand him a book with lots of example programs, and he can whip you up any number of variations on those examples programs, but not much else. Throw another language at him, and it's like starting from scratch. Teaching Ole is very frustrating, because he has to learn everything by rote, and application is difficult for him. Not impossible, to be sure, but it takes tremendous tenacity and repetition.
I don't want to get into a major discussion about educational theory nor about what Cringely has to say, specifically. You can always go check out his blog for his opinion. This being my blog, my purpose is to tie this all to Open Source. So here it is.
Open Source is a unique way of doing things. Not only is it completely OK to use someone else's software, techniques and so forth in your own, but it's actually encouraged. Ole, being knowledge-based, wouldn't think to look for a ready-made solution to his problem. Sven would go there first. If Ole did decide to look for such a snippet of code, he wouldn't know how to search, since he couldn't describe the problem in abstract enough terms to get a result. Sven is a search-maven. Finally, if Ole somehow did get relevant search results, he wouldn't be able to stitch his code together with whatever he found. Sven is all about adaptation.
As we move to an Open Source kinda world, by which I mean one based on search, collaboration and integration, rather than an ivory-tower key-card-access-only business and technology model, this ability will be ever more vital.