1. Do you need to learn how to program?

William J. Turkel and Alan MacEachern, The Programming Historian, 1st ed. NiCHE: Network in Canadian History & Environment (2007-08).

Techniques that don't involve programming

Do you need to be able to program? The short answer is "maybe not." You can certainly become more effective at online research with a few simple techniques that don't require any programming.

  • Citation management. Install Zotero and learn how to use it. Make sure to backup your Zotero database regularly.
  • Searching. Always use the advanced search interface when working with search engines. Learn whatever specialized search syntax is available, and check periodically to see if features have changed. You should know, for example, that Google lets you search for exact phrases or for words in any order; that it lets you exclude words; that it can limit your search to a particular domain or help you find the pages that link to a page you're interested in. You should also know that there are separate Google searches for books, images, historic news articles, code and scholarly articles among many other things.
  • Information Trapping. Think of a search as something that you do once. When you find what you're looking for, you stop searching. You may bookmark a website, but you have to return to it explicitly whenever you want to see if something has changed. There are some kinds of information that you need to monitor on a more regular basis. In these cases, it makes more sense to subscribe to regularly-updated RSS feeds. See Tara Calishain's Information Trapping for more detail.

Why you might want to learn to program

We think that at least some historians really will need to learn how to program. Think of it like learning how to cook. You may prefer fresh pasta to boxed macaroni and cheese, but if you don't want to be stuck eating the latter, you have to learn to cook or pay someone else to do it for you. Learning how to program is like learning to cook in another way: it can be a very gradual process. One day you're sitting there eating your macaroni and cheese and you decide to liven it up with a bit of Tabasco, Dijon mustard or Worcestershire sauce. Bingo! Soon you're putting grated cheddar in, too. You discover that the ingredients that you bought for one dish can be remixed to make another. You begin to linger in the spice aisle at the grocery store. People start buying you cookware. You get to the point where you're willing and able to experiment with recipes. Although few people become master chefs, many learn to cook well enough to meet their own needs.

If you don't program, your research process will always be at the mercy of those who do.

At this point you might object that some of your primary sources are not in digital form and won't be for the foreseeable future. We get this. We're not suggesting that historians no longer need to know how to use material sources in real archives. What we're suggesting is that the rest of your scholarly life has already gone digital. You communicate electronically using e-mail and mailing lists; you search library catalogs and archival finding aids online; you submit drafts of monographs and articles electronically; you present yourself to the world on one or more websites; you have to put up lecture notes or submit grades online; an awful lot of the information that you need daily is already on the web. To use another food metaphor, imagine that digital sources are like sugar (and who wouldn't like to think of them that way?) In medieval Europe, sugar was a rare and expensive spice. Although some people might know how to use it in a dish, most people didn't ever need to think about it. Fast forward to the late 19th century, when sugar made up a relatively large proportion of many European diets. Not everyone needed to know how to make dessert, but it was no longer a rare skill. In the 21st century, some forms of sugar (e.g., high-fructose corn syrup) have become very difficult to avoid.

What kind of techniques you will learn

Many books about programming fall into one of two categories: (1) books about particular programming languages, and (2) books about computer science that demonstrate abstract ideas using a particular programming language. When you're first getting started, it's easy to lose patience with both of these kinds of books. On the one hand, a systematic tour of the features of a given language and the style(s) of programming that it supports can seem rather remote from the tasks that you'd like to accomplish. On the other hand, you may find it hard to see how the abstractions of computer science are related to your specific application. Once you know how to program, of course, both kinds of book are very useful. You can use books about programming languages as references, or to transfer your knowledge of one language to another. And you can use computer science books as a source of inspiration and deeper understanding.

Our goal is to introduce programming techniques that will be immediately useful in your work as a (digital) historian. Although we will provide links to programming language reference books and computer science texts as necessary, we won't be concerned with giving you a full tour of any particular programming language or a systematic introduction to the algorithms and data structures of introductory computer science.

We're going to assume that you are connected to the web, and that there are a vast number of online primary and secondary sources that are relevant to your research, if only you could find and make use of them. We will start by developing techniques to find new textual sources, download batches of them, convert them from one format to another, characterize them individually and cluster them automatically into useful groups.

Programming is for digital historians what sketching is for artists or architects: a mode of creative expression and a means of exploration.