The title is meant to incite a bit of discussion. I myself am not entirely convinced that every library student should be required to take a semester long course in programming, but I also think there are several very good reasons for librarians to learn programming:
- Information is increasingly in digital form and programming is the most powerful tool to search and work with digital information.
- Data migration will always be a problem, and learning programing can help one migrate data—or, at the very least understand why some forms are easier to migrate than others.
- Computers are possibly the most common piece of equipment in every librarian’s job. Learning to program gives one a way to take control of the machine, or at least not feel so much at its mercy.
- Programming librarians would allow libraries to develop more autonomy from outside vendors.
- Programming is becoming a basic skill, like reading, writing, and math.
- Information is increasingly electronic, and if librarians are going to be stewards of that information, we need to know how to manipulate it and preserve it.
- Many people would like programming if they tried, but if not forced to try, will hang on to the idea that it is “too hard.”
- Would teach future librarians that programmers are not superhuman and to understand a little what to expect when buying software.
- An army of programming librarians can do a great deal of good in the world.
During this, my last semester of library school (!), I took a class in which I learned the Ruby programming language (taught by Stephen Ramsay). While I feel I only scratched the surface of programming knowledge, the class really opened my eyes to the possibilities of and limitations of programming. Even if I never went any further with programming, I have learned several important things:
- How a search engine, in very simple terms, works.
- How much of programming is thinking, and how comparatively little can be spent actually writing code.
- How much of programming is just finding bits of code to reuse.
- How to conceptualize a program. I can think out the parts now. I can’t, at this point, just go put it all together, but I could talk to a programmer and explain it much more succinctly than before.
- Programming isn’t as hard as it seems, practically.
- Programming is much harder than it seems, conceptually.
While I think the benefits of taking a programming class are great, I also think few will actually take a programming class, even if t is offered, because it “is just too hard.” I think this is a shame, because often people will be surprised by what they can do when they have the right motivation and instruction. As an example, I was always a horrible math student in high school. I struggled with it constantly. I just didn’t get it. But when I moved to a new school district with better teachers, I understood it perfectly. I got A’s in math—easily—for the first time in my life. The point was further driven home when I later transferred back into my old school district and was making C’s in math again. This time, though, I knew that the problem wasn’t that I couldn’t learn math, just that I would have to find ways outside of class to do so (which is a sad commentary on education, but I digress).
My goal in library science is to work with technology, so it is hard for me to look at the programming question from other viewpoints. Programming is undoubtedly useful for me personally, but how useful would it be to someone who just wants to be a children’s librarian? I think programming can come in handy in many surprising ways, but it’s hard to think of an immediate practical application for some library jobs. How could a library school encourage future librarians to take programming without requiring it, especially knowing some people are terrified of the very idea of learning to code? I’m not sure I have an answer to this. Perhaps very basic programming concepts could be included in an intro to technology course—and presented in a non-scary way. Maybe the requirements of a library master’s aren’t the same for everyone, but depend on the student’s area of interest. Maybe programming is a pre-requisite to other tech based courses, such as digital libraries. In any case, I think the profession of librarianship would benefit greatly if the majority of future librarians learned something of it—even if they never took it further.
A few tips to someone who wants to learn how to program.
Unfortunately, not everyone can have a great teacher like I did. Like math teachers, I’m afraid good programming teachers may be few and far between. But there are a lot of good resources out there to learn programming on your own (list below) and you’d be surprised at how quickly you can pick stuff up.
One of the first questions you might ask yourself if you decide you want to learn to write code is “what language should I pick?” This turns out to be both difficult and easy to answer. My teacher said it doesn’t matter because the concepts you learn for one language carry over to others – and while that is true, I think it really does matter in some aspects. For me, I wanted to learn something that I could use right away, something that is fairly forgiving, and that there are a lot of good, beginning resources for. Ruby works for this, but there are others. As far as using it right away, if you have a blog or other web software written in PHP, by all means, learn PHP. You’ll be able to write something useful – like how to write a plugin for your blogging software – right away. Without classroom assignments (and grades) to drive you, you’ll need something else to drive you, something you are excited about.
Try to find several resources. Sometimes you’ll get stuck in one book/webpage and another will explain it another way. One of the best resources you can start with is code, which is another reason to try and pick a language you are already working with. Also, if you can, find someone you can ask for help. I have had tremendous help from people online.
Finally, here are a few sources I have found useful, though I have not worked through them all. A resource that’s great for someone else might not work for you,so try out a bunch.
- Alice is “an educational software that teaches students programming in a 3D environment.” I have not used this myself, but it has been recommended by many.
- Processing is a computer language for programming images and animations.
- Snipplr is a repository for code snippits. A great place to look if you are stuck.
- Regular Expressions are a basic building block of programming that allow you to manipulate text. But Regular Expressions are useful by themselves, too- many text editors support RegEx search and replace.
- Programming Ruby is good as a reference, but it assumes prior programming knowledge. Good paired with a beginning resource.
- HacketyHack – a standalone program that teaches Ruby. For Windows and Ubuntu now, more versions to come. Work in progress, but a great absolute beginner’s resource.
- Nobody Knows Shoes is an entertaining Ruby book, best combined with Hackety Hack.
- Why’s (Poignant) Guide to Ruby entertaining AND educational.
- Ruby-Doc.org is the documentation of Ruby
- Try Ruby in Your Browser is just like is sounds. Go ahead and give it a shot.
- PHP basics in pictures is pretty much what it sounds like.
- PHP/MySQL Programming for the Absolute Beginner is a great resource (link is to PDF)
- A Byte of Python is a beginning programming book using Python, available as a free PDF.
- Dive Into Python is another free programming book online.
- Beginners Guides for Non Programmers is a lengthy list of Python books for beginners.
What can you do with programming? Try these projects:
- How to Build a Firefox Extension
- Write a WordPress Plugin
- Get an Arduino and try “physical computing” (controlling objects in the physical world).
If you have any additional links, please leave them in the comments.
Thanks to my Twitter and Friendfeed buddies for helping me solidify my own thoughts on this subject. :)