So by accident or design you found yourself in a position that involves computer programming. A common situation for library metadata specialists. I recall projects in graduate school where we mapped records from one metadata format or standard into another. Yet, we never discussed who creates the scripts to transform the records with your mapping (spoiler: its probably you). The result of this for me, someone who did not come from a computer science background, was getting the skills I needed through a mixture of things recommended by mentors, co-workers, and internet searches. Here is what worked best for me.
1. Take one intro into programming class with an object-oriented language
There really isn’t any way around this. Unless you’ve already taken a class, you need to. It’s difficult to re-wire how you think about problems and get a solid programming foundation on your own while working full-time. Taking one course in java, c++, or python will give you a firm grasp on methods, variables, loops, reading/writing to text files, and other necessary concepts you can build on with self-education.
Take this course at a community college or a university at an undergraduate level. I made the error of taking this course at a graduate level. I thought I would gain some skills in addition to credits for my master’s degree. Big mistake. In order for the class to be at a graduate level, they combined higher-level concepts into the syllabus. Instead of spending 15 weeks developing a solid programming foundation, the class barely kept their heads above water and passed due to heavy curving. I re-took a java programming class at an undergraduate level a year later with far better results.
If you are not able to sign up for a class locally, there are online options. North Carolina State University only requires a bachelor’s degree to take their introductory class and the price is reasonable.
2. Set up a LAMP server sandbox and use it
You might not be running your metadata transformations on your desktop. You need to become familiar with the type of environment you may use. The LAMP stack is a set of commonly used open source software (Linux, Apache, MySQL, and PHP). Setting up a LAMP sandbox either on your desktop or with a virtual private server (VPS) provider and using it for programming tutorials will familiarize you with working on the command line, installing software, and troubleshooting issues.
If you would like to set up a sandbox on your desktop, I would recommend using the lynda.com tutorial Up and Running with Linux for PHP Developers with Jon Peck. Lynda.com is a fantastic online library of tech tutorials. If you are affiliated with a university, you may have access through them. For those without lynda.com access, nearly all “learn php” books start out by setting you up with a LAMP sandbox.
If you are interested in setting up a sandbox with a VPS host where you can share your projects with the world, I would recommend DigitalOcean. Plans start as low as five dollars a month. Their site has a very active community that posts in their forums. I set up my VPS, installed software, and published a wordpress site all using the tutorials posted by users. When I was researching issues, such as how to get the “www” prefix to work before my domain name, I found the exact steps I needed to do on their forums.
3. Start a few personal projects that you care about
Tutorials published in books and available freely online are great resources. But to really get the most out of these tutorials, you need to connect the information with knowledge you already have and/or projects you are invested in. Make a website using an open-source content management system like wordpress or drupal. Feature your professional accomplishments or maybe a portfolio of your hobbies.
I started a digital library for digitized family photographs. Along the way I learned about Omeka, solr indexing, and to the delight of my mother, a little family genealogy.
4. Become familiar with XML transformation tools
I did a short free-labor internship at a technical services department of a large university library. I vividly remember having to export a group of records from a digital library as a comma separate file, opening the file in excel, running the data through a series of complex Excel formulas to transform the data, saving the file, and uploading the records back into the digital library. Painful, but you use what you have. Once I learned a few xml transformation tools, doing metadata cleanup and mapping projects became a lot more fun.
These tools are intuitive enough that a few tutorials and a good reference book will give you most of the skills you need:
XSL – A stylesheet language. Easy to work with but very powerful. Can transform xml records into anything you want: a display on a webpage, new records with modified metadata, or another format. XPath – This is used in XSLT and other programming languages to query XML files. It’s a good idea to review the syntax before you need it.
Need more training?
Is this enough training to meet your needs? For most metadata librarians, yes, but for me, no. I developed an interest in learning more and found myself in a position where I needed to develop applications and not just use them. Early this year, I researched online computer science post-baccalaureate programs, paying close attention to accreditation and price. Here are my comparisons of my top two choices:
North Carolina State University – This is a post-bacc computer programming certificate. It includes seven classes that are closely aligned with their computer programming minor. In order to receive the official certificate, you must take/have taken a college calculus course.
Oregon State University – This is a post-bacc computer science certificate. There are 15 courses to complete including web development, database, and networking curriculum that’s not included in the North Carolina certificate. Part of the admissions requirements for the program is a college algebra course or higher.
I decided to go with Oregon State University and start this summer. Look for future posts about my experiences in the program after I’ve completed a few classes.