Yesterday I was asked, why should librarians learn Python? And I answered the wrong question. I answered, why should librarians learn Python, when I should have answered, why should librarians learn code. (Python is merely an entry point, with strengths and weaknesses; it’s one I happen to find convenient, but others will do.)

My flailing attempt at an answer has been bugging me ever since, so here’s a better one.

Optimizing workflows. Librarians do a lot of work with data processing and web stuff, frequently involving repeated, predictable, or systematic steps. Edit this whole pile of MARC records to a particular standard. Provide more context in your chat widget. Anything of this nature is amenable to improvement through code, and a lot of the improvements are surprisingly low-hanging fruit — things that could be implemented with a dozen lines of code.

Librarians do a lot of work with data processing and web stuff, frequently involving repeated, predictable, or systematic steps. Edit this whole pile of MARC records to a particular standard. Provide more context in your chat widget. Anything of this nature is amenable to improvement through code, and a lot of the improvements are surprisingly low-hanging fruit — things that could be implemented with a dozen lines of code. Improving usability. A lot of library/patron interactions are mediated by the web. A lot of service provision happens through software and is constrained by what that software can do, which may not be what librarians want or need. We can make it suck less.

A lot of library/patron interactions are mediated by the web. A lot of service provision happens through software and is constrained by what that software can do, which may not be what librarians want or need. We can make it suck less. Communicating with IT and vendors. Libraries need to work well with IT and get good service from software vendors, but communication problems are widespread. You can communicate with anyone better if you speak their language. Learning some code — even if you never write it again — allows you to better characterize problems, specify goals, make intelligent cost/benefit decisions, and know when people are pulling the wool over your eyes (and when you’re asking for the impossible). It lets you be more a collaborator, less a supplicant.

Libraries need to work well with IT and get good service from software vendors, but communication problems are widespread. You can communicate with anyone better if you speak their language. Learning some code — even if you never write it again — allows you to better characterize problems, specify goals, make intelligent cost/benefit decisions, and know when people are pulling the wool over your eyes (and when you’re asking for the impossible). It lets you be more a collaborator, less a supplicant. Insight, dreaming, and creation. My grandmother was a social worker, and she got an award with an inscription something like — solving problems before others even saw the need. Code lets you see. Learning to code lets you notice things you hadn’t seen before, or had believed to be immutable facts of the universe, and recognize that they are real things and you can optimize them. “Empowerment” is a cliche but that is quite literally what learning code gives you: the power to see and change more of your world. I don’t know what you’ll see when you have the power to create — that’s the wonderful thing about open source, about decentralization, indeed about creativity — a thousand of us can dream a million dreams. If I teach you to code you’ll have ideas I never imagined. And you’ll no longer need my permission to build them.

So Python, sure, Python’s much more readable for newbies than most other languages, it has spaces that are unusually friendly for newbies, its community invests in diversity and outreach, it has a ton of free or readily-accessible learning resources, there are some cool projects written in it, some (though not all) libraryland problems lend themselves to Python. I can make some specific arguments for why Python is a reasonable place to start, but really, that’s not the point; I could make good arguments for starting somewhere else, too. The point is to start. And if Python makes the starting easier, hooray!