In my last post, I talked about computer programming and why learning to code is important for kids and for the world. Today I want to lay out the case for libraries as the ideal place to learn coding.

From their earliest history, libraries have been built on a model of asking questions and finding answers. Someone wants to learn about something, so they come to the library and search through stacks of scrolls or books to find the information. The Dewey Decimal System and online catalogs and search algorithms are more recent examples of the same workflow. Education professionals refer to this approach as “informal learning,” and according to the blog devoted to it, accounts for as much as 95% of the total learning happening in the world.

The beauty of informal learning is the emphasis on the learner. Whether driven by natural curiosity, an obsession with a topic, or a desire to create something, a kid with a question is a powerful force in the world. Just ask any librarian.

Contrast that with the “formal learning” model used in traditional classrooms, where a single source of information (teacher, lecturer) transmits knowledge to a group of students. The flow of knowledge from teacher to student is constant, regardless of the level of interest or the speed of comprehension of the students. This is the source of the longstanding debate around “teaching to the middle,” and recent efforts by educators to implement “differentiation.” Even more challenging is the human factor of attempting to teach someone that doesn’t want to be taught. Just ask any middle school teacher.
informal-learning-1024x697This picture compares the two learning models. Note the individual learner in the informal model. She sets her own path, deciding what she wants to learn and then chasing that knowledge in whatever form she can find it. Books and the internet are part of it, but there are also important roles for peers and good old-fashioned hard work and experience.

While it may be more effective for other subjects as well, the informal learning approach is definitely the better way to learn computer programming.

Let me illustrate with a story. When I was in college, I saw the whole “internet thing” coming and decided I should try my hand at programming. So I enrolled in a java class and found my way over to the computer science building, where I endured lecture after lecture of having no idea what they were talking about. By the time I got to the computer lab for the class projects, I felt hopelessly behind, and stumbled through projects that were not interesting. I only survived by haranguing the teaching assistants until they helped me with the correct syntax, never mastering the underlying concepts.

Fast forward a few years. I ended up in experimental physics as a grad student. Even though I never took another computer science class, I used programming every day in my data analysis and even learned how to build websites for the school club I was involved in. I got a job as a consultant, and within a week I found myself looking at a spreadsheet manipulation task that I had done before. Even though I had never used Microsoft Excel, I believed that computers can do these redundant tasks faster and more reliably than I could, and so I dove into Visual Basic (the computer programming language of Microsoft applications). With help from Google and Stack Overflow, I learned how to get that single task automated, saving myself lots of hours. There was no curriculum, no lectures, no teacher or even another human being (at least in person). But this time, I was able to learn computer programming quickly and effectively. The difference? I wanted the knowledge and set out to find it myself.

There are other stories like mine. Look at this quote from Mark Zuckerberg, who started Facebook as a 20-year-old college student:

“Learning how to program didn’t start off with wanting to learn all of computer science or trying to master this discipline or anything like that. It started off because I wanted to do this one simple thing — I wanted to make something that was fun for myself and my sisters.”

Zuckerberg wanted to know how to make a simple game and he set out to acquire the information he needed. It’s a model that is consistent across almost all (if not all) computer programmers. I get to see if firsthand in Code Club, where kids as young as 6 and as old as 17 teach themselves computer programming, motivated by their desire to create games or websites. Without realizing it, these kids are proving the effectiveness of informal learning.

And they are proving that libraries are the perfect place for it.