As programmer and tech journalist Ciara Byrne noted in her op-ed “No–You Don’t Need to Learn To Code”, learning to code is not always fun, easy, or even useful for every career path. Nonetheless, programming can develop several soft skills that translate across a broad range of professions. In addition to increasing your digital literacy, learning to code teaches you to solve problems, to seek out collaborative solutions when you are stuck, and (in my experience) to endure lots of frustration for the sake of future rewards.
The benefits of learning to code are especially tangible for information science students. Programming knowledge equips you to customize content management systems, create sophisticated reports in an integrated library system, develop mobile apps, manage databases, implement open source software, navigate user experience design, customize or create a web presence for your institution, and collaborate more effectively with IT professionals.
You may be thinking, “But Sam, I am not a programmer. It just doesn’t come naturally for me.” Well, join the club. My undergraduate degrees are in history and political science! Although I grew up in a very tech-friendly home, I never had any ambition to be a programmer. After I started working in libraries, however, I found that some kind of coding knowledge is necessary for many of the jobs I want to pursue. It hasn’t always been fun and it has rarely been easy, but I have made it a priority to learn these skills. Over time, I have actually learned to enjoy coding.
Here are some guidelines that have helped me endure the tough times:
Make a map
What languages or programs do you need to know to pursue your dream job? No single language will allow you to do everything, but you may find that some languages are more widely applicable in your field than others. For starters, look through job ads to see what skills employers are seeking. Talk with peers on social networks to see what they have found most useful in their classes or internships. Read technology centered career posts from Hack Library School and INALJ.
Don’t know where to start? Check out:
Web Development 101 – The Basics | Hack Library School
Why I Learned To Love the Command Line | Hack Library School
What educational environment will you thrive in? As long as you are learning, you can’t go wrong. Some people enjoy collaborative learning networks that feature loose structure, like Codecademy’s Code Year or The Mechanical MOOC: A Gentle Introduction to Python. Other people prefer the rigor of formal coursework. If you’re not satisfied with the courses offered through your LIS program, consider OpenCourseWare programs like MIT Open Courseware, Udacity, Khan Academy, or Coursera. Many of our Hackers also recommend Lynda.com, if your graduate program or company maintains a subscription.
I tried many different methods of self-teaching before I entered graduate school, but ultimately I knew I would learn better in a structured classroom environment. I made it a priority to seek out LIS programs with a strong computing emphasis. I designed my degree plan to incorporate a heavy concentration of technology courses that support LIS objectives, including coursework in database management, software development, GIS, web design, electronic resource management, digital preservation, and information retrieval systems.
Find A Community
Even if you prefer to work alone, it is often helpful to have a community for support, motivation, and collaborative troubleshooting. Websites like GitHub and StackOverflow allow you to collaborate with students and professionals all over the world. You can also find or create communities on Codecademy like Archivists Code or join an organization on your campus. I recently joined the Drexel Women in Computing Society to meet like-minded students outside the library program. Twitter can be a great place to meet other library school students. You can find current and former HLS Hackers on Twitter here.
Practice, practice, practice
You may have heard of Malcolm Gladwell’s “10,000 hour rule”, the notion that it takes at least 10,000 hours of practice to master a skill. It’s just as true for learning to code as it is for learning Russian or picking up a new instrument. You probably won’t feel like coding every day, but you can set goals that will help combat the tedium of repetition. Musicians use this same trick; it is much easier to make yourself practice for two hours if you are perfecting a new piece than it is if you play the same scale over and over.
Programming is a means to an end. If you are happy with the product of your work, the process won’t seem as onerous. Just remember: everybody gets discouraged, frustrated, and fed up.
That’s why it’s helpful to know your long-term goals and have a community to draw encouragement from. If you find yourself really truly stuck in a rut, it might be time to try something new. Find an application for your burgeoning skills that is fun and rewarding even if it is not “practical”.
Here are some creative ways to stretch your brain and even give back to your community:
- Attend or organize a hackathon
- Become a coding mentor
- Participate in an unconference
- Play! Raspberry pi | Lego Mindstorms | XBox Kinect Hacks
- Make your own mobile app
- Build an e-portfolio or professional website for yourself
- But most of all, in the words of Miss Frizzle: “Take chances, make mistakes, and get messy!”
What are your favorite resources for learning to code? What approach has worked best for you? How do you stay encouraged when it becomes frustrating? Let us know in the comments!