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.
Links
- 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.
Ruby
- 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
- 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)
Python
- 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.
- The Programming Historian teaches Python and Javascript and uses practical, real world examples.
Some Ideas
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. :)
This really hits me to the quick, because it touches on my first intellectual love, mathematics. And my first teaching love, teaching mathematics.
There’s more in my mind now than could go into a response, so I’ll try to focus on the biggie to me — your first question of what language to pick. That’s spot on, and I think more people should have more knowledge about how to respond to that question. Not everyone should learn PHP. Or Ruby. Or Java. Or Javascript. Or CSS. Or XML. Or RDF.
But I think everyone in library science should learn enough about them to be able to make a decision about what might be fruitful for them to pursue, based on their own interests and talents. A smattering of any of them would help people understand the world of information representation (and, now, that’s a world little-understood by anyone!)
This is a really good issue for lots of people, regardless of profession, to address.
I am so glad you gelled to Ruby; I’ve tried various stabs at various languages — perl, php, python, c, c++, any number of shells, and the only one that I’ve made any progress — and the only one that has come close to making me truly content — has been Ruby. I’ve fallen off with it lately, but I should get back into it.
That said, I’m not sure that every librarian should be required to take a programming language. It should be an *option* in every library school, maybe coupled with some pleasant introductions to UNIX systems, but a requirement might be a bit extreme.
Have you read Programming: The New Literacy by Prensky? http://www.edutopia.org/programming-the-new-literacy
I don’t think requiring computer programming of every student is any more “extreme” than requiring every student to have mastered a given level of mathematics. It could easily become a part of every student’s general education if we did recognize it as a true literacy. In fact, I seem to remember reading somewhere (I can’t seem to recall the exact article) that computer programming/computer science is often a general education requirement in China.
Karin, do you think we’ll ever reach a point where for one to be considered “educated” one must understand how to communicate with and control the machines that we spend so much of our lives using?
Pingback: jodischneider.com/blog » Computational Thinking: quoting Jeannette Wing
Is it a radical notion to say the pace of marginalization for librarians is picking up?
A few years ago it was all about the computer, then it became all about the network, soon it will be all about the connections between networked information systems…then who knows what. Safe to say, though, it will involve technology.
So how can it make any sense at all not to try and improve your mastery of these systems? No, you might not be a programmer/developer but I’d argue that in our line of work (information plumbers), it sure makes sense to know at least one scripting language.
If the people hiring librarians find they have to hire or pay others to do the important tech work, it won’t be too long before they wonder, “why exactly are we keeping those folks around?”
Pingback: Technology education and the “real world” | Information Wants To Be Free
Gee. I am feeling old. My first programing language was PL/1. I then went on to COBOL, and both were on punch cards. I did Basic and SPSS.
You are right that programming is more than just writing code. It is logically thinking out the structure. I guess that I have forgotten that basic (pardon the pun) part of it.
Librarians should do *some* programming (i.e. computer programming) at some point, just so that they can talk intelligently about it.
Good post!
Thank you, Karin, for the discussion.
I would agree that programming should be a part of the curriculum of every LIS program but not that every student should be required to take it.
The good lord knows that I would be a terrible children’s librarian and therefore should not be required to take a children’s lit. course.
This is beautiful:
“An army of programming librarians can do a great deal of good in the world.”
I’d add that an army of programming librarians could definitely put the field back on the map as serious competitors in a digital world.
To be honest, I don’t think this is just about library science. What we actually need is a tech literate generation – and the place to start is school.
I suspect there is real potential for the integration of mathematics teaching with the principles of how computers work, and process information. Computer programming is a fantastic answer to the age old complaint ‘what is the point of maths in the real world – it isn’t like I even need to solve quadratic equations’.
I’m a librarian with basic programming skills – and these came not from library school, but from programming computers when I was at school. Even then they weren’t really part of the curriculum – it was more a home/interest thing for me – but we were encouraged at school.
I’m in favour of library schools including programming options – but I think the problem is more widespread than just libraries.
I recently organised the Mashed Libraries UK event (http://mashedlibrary.ning.com), where Tony Hirst presented on using Google Spreadsheets and Yahoo Pipes to manipulate data. It struck me in converation with Tony – Yahoo pipes would be a great thing to teach kids in school – the basics of how you can manipulate data, use loops, assign data to fields, use regular expressions – but all within a nice graphical interface.
Pingback: lis.dom » technology advisory
A few years ago…. I was going to design a course that included simple ruby programming as a way of learning to do other basic web tasks as part of an technology core in a library school. The course was already being taught by 2 other profs…. one who had been teaching his course as ‘learning microsoft office’ for many years and the other who was teaching it more or less as basic web design with some usability. Needless to say, my proposal to go forward with the course was pretty much slammed as ‘this is not what we are teaching librarians to do’, I came back with the argument that basic literacy in programming is necessary to communicate with systems librarians and such, and that also fell on deaf ears. I don’t think there is a great deal of interest in some library programs and actually i think some instructors are a bit scared of what it will mean when students can do more interesting things than they know about. I still think that all librarians should have a taste of programming, and by programming i don’t mean html and css, which is all too common.
Pingback: Trevor Owens » Blog Archive » £very1 c4n |_rn 2 ©ode (Everyone Learn to Code)
Why would I want to learn any of these? What does “ruby” actually DO? what does “PHP” actually DO? How would I use these in my job? I’ve never even heard of these before. My computer does what I want it to do – why would I want to re-program it? Neither this entry nor the comments have explained this to me.
I love the post. I’m currently in library school, I love programming, and technology, and I also struggle with what is the most relevant technology to learn. But I also agree a little bit with Susannah M. It’s a bit imprecise to say that all library science students should learn ‘programming’. Your post does not mention Java, C, C++, Fortran, Visual Basic, which are all major programming languages. It does mention Ruby, PHP, and Python, which are all languages that are used for web design and development. I agree that library science students should learn something about web technologies beyond simple HTML and CSS. However, a programming language can do much more; it can run an operating system, or build a stand-alone application, or control a database; or fly an airplane.
Pingback: The People Factor in LIS « the zeds
Pingback: Core skills: Curiosity « Attempting Elegance
Pingback: Back in the game « Librarian by Day
I agree! Everyone should learn the three basic control structures of sequence, branching, and looping. Given a simple example–baking a cherry pie–everyone should understand how to explain how to do it by breaking the process down in terms of the three control structures. Everyone should be able to take a data management problem and describe a solution in terms of relationships between datasets with high cohesion and low coupling. Everyone should be able to debug a computer problem, too.
Learning programming is more than just learning a language–it’s learning a way of looking at problems and developing solutions.
sharon, a former software engineer turned librarian
Out of curiosity, how many people responding to your post both 1) learned to program, and 2) think LIS students don’t need to learn to program?
Ben -Though I didn’t tally the results, I think only one person who already knows how to program thinks it shouldn’t be taught in library school. His argument, though, was that programming should be taught in High School (which I agree with as well). Since many people didn’t learn programming in high school, though, I still would like to see it taught in Library School.
Interestingly, every non-librarian except the one mentioned above agreed that librarians would benefit from learning to program.
Karin:
TOTALLY there with you. I was able to pick up HTML, CSS, and the like pretty easy but I’ve been frustrated by my lack of programming skills for a while now. Moreover, I’m frustrated by the skills that I DO have. I took the Web App I class offered by Dr. Cho last semester (it actually was decent), but it turned out that we spent time learning ASP.net. While it did a lot for me I’m convinced he chose ASP because it gave him an out. That way he could just tell us to install it’s Developer and not mess with Apache, MySQL, and CSS to learn PHP.
Still though. HTML and CSS are woefully inadequate for working with any sort of CMS or web-based digital library system. Even with my experience from the Gephardt Digitization Project, some work with Dr. K, and my M.L.S. I’m still hashing things out.
… and this is just touching on web-based stuff.
I’m really convinced that M.L.S. programs need to take it a step farther and add some technical prerequisites. It could keep the field from being overcrowded too. :)
Excellent article. I think that programming needs to be integrated into k-12 curriculum, as it is quickly becoming a necessary skill. We should in the least expose students to programming, so that those who find it interesting can start learning it earlier; I wish I had began programming much earlier.
Pingback: The Brewin’ Librarian » What I’m finding as an Information Professional
Programmers brings varied skills to a project. Programming is a team effort.
As a librarian accessible to the public during all working hours, doodling in Dreamweaver, maintaining the library’s network, and managing Adult Services (including outreach and public relations) leaves little time to focus on writing code.
I am very concerned as to whether the profession adequately addresses metadata integrity and product/service usability.
Systems thinking and programming skills are necessary to move the profession forward. Who is innovating on a large scale? How long can I apologize for my library’s SirsiDynix catalog interface?
The words of a certain professor often haunt me: “Let’s face it top of the line programmers are rarely attracted to the field of librarianship.”
I’ve just started library school — I’m interested in studying digital librarianship/archiving, and feel that understanding programming could provide some marketable skills once I’ve graduated. Where I work, I’m starting to see colleagues pick up these skills on the job as their workload demands it.
Of course, I work for an academic library that serves an extremely tech-savvy community.
Pingback: What’s the matter with our profession? « Librarian by Day
Pingback: A discussion on the future of librarianship « Circulation
Pingback: Librarian by Day » What programming should a library science student learn?
Pingback: Caveat Lector » Blog Archive » Proto-librarians and computers
That’s the first time i post something in an foreign blog. I just finished my library sciense classes this year and i could see how much is intensive the discusions about programming languages envolving our area, i working on web site’s delveloping
at 5 years using php, java and mysql and i took a while to know the relations between information retrieval and technology. That’s because in some countries, like Brazil, library science use to be related to humanities or applied social sciences. Information technology is commonly used in computing science or something like that. At this point we must understand the the dimensions of this knowledge field. Another thing i would like to comment is about studies envolving ontologies and taxonomies that represents an nice oportunity to treat classification schemas like thesaurus in internet enviroment (flickr)
I definitely agree what John Fink has been said above.
+—————–
That said, I’m not sure that every librarian should be required to take a programming language. It should be an *option* in every library school, maybe coupled with some pleasant introductions to UNIX systems, but a requirement might be a bit extreme.
——————————+
It should be an optional for every students to study specific programming language. but for me, the very important thing is how to learn the algorithm/logical values so every students have the proper basis to learn programming, and imho what we called an operating system specifically on unix/like since its Free/Libre opensource software and famously known in the server/client environment. and the server/client knowledge is needed in the working environment.
Its happened in the library science curricula in Indonesia also. i thought that we’re so leak in the ICT curricula and we learn it autodicactly from the community or books.
regards
ade from Jakarta, Indonesia
Pingback: Tech Skills for New Librarians & Me (seeking advice) – Library Hat
Pingback: Learning how to Code. |
Pingback: Librarians and programming revisited | nirak.net