I forked yesterday for the first time. I’m pretty thrilled. Not about the few lines of code that I posted. If anyone notices and thinks the feature is a good idea, they’ll re-write my bit from the ground up.* What’s thrilling is seeing this ecology in operation, for the software development ecology is now where the most rapid learning happens on the planet, outside the brains of infants.
Compare how ideas and know-how used to propagate in the software world. It used to be that you worked in a highly collaborative environment, so it was already a site of rapid learning. But the barriers to sharing your work beyond your cube-space were high. You could post to a mailing list or UseNet if you had permission to share your company’s work, you could publish an article, you could give a talk at a conference. Worse, think about how you would learn if you were not working at a software company or attending college: Getting answers to particular questions — the niggling points that hang you up for days — was incredibly frustrating. I remember spending much of a week trying to figure out how to write to a file in Structured BASIC [SBASIC], my first programming language , eventually cold-calling a computer science professor at Boston University who politely could not help me. I spent a lot of time that summer learning how to spell “Aaaaarrrrrggggghhhhh.”
On the other hand, this morning Antonio, who is doing some work for the Library Innovation Lab this summer, poked his head in and pointed us to a jquery-like data visualization library. D3 makes it easy for developers to display data interactively on Web pages (the examples are eye-popping), and the author, mbostock, made it available for free to everyone. So, global software productivity just notched up. A bunch of programs just got easier to use, or more capable, or both. But more than that, if you want to know how to do how mbostock did it, you can read the code. If you want to modify it, you will learn deeply from the code. And if you’re stuck on a problem — whether n00bish or ultra-geeky — Google will very likely find you an answer. If not, you’ll post at StackOverflow or some other site and get an answer that others will also learn from.
The general principles of this rapid-learning ecology are pretty clear.
First, we probably have about the same number of smart people as we did twenty years ago, so what’s making us all smarter is that we’re on a network together.
Second, the network has evolved a culture in which there’s nothing wrong with not knowing. So we ask. In public.
Third, we learn in public.
Fourth, learning need not be private act that occurs between a book and a person, or between a teacher and a student in a classroom. Learning that is done in public also adds to that public.
Fifth, show your work. Without the “show source” button on browsers, the ability to create HTML pages would have been left in the hands of HTML Professionals.
Sixth, sharing is learning is sharing. Holy crap but the increased particularity of our ownership demands about our ideas gets in the way of learning!
Knowledge once was developed among small networks of people. Now knowledge is the network.
*I added a couple of features I needed to an excellent open source program that lets you create popups that guide users through an app. The program is called Guiders-JS by Jeff Pickhardt at Optimizely. Thanks, Jeff!)