Thinking Programmatically

Professional Development

Good morning all! Another week of four jobs has passed, and I am pleased to say I showed up at all the right places at the right times every day. As you have undoubtedly noticed, all that working cuts into blogging time, and giving up sleep nowadays has more negative consequences than it did when I was an undergrad. Ah well.

For many people around me, the novelty of the four jobs thing has not worn off. After asking how all these jobs are going, almost everyone asks if I’m learning. I am learning lots of things, but unfortunately for everyone who asks, the biggest thing I’ve learned is the least interesting to explain. I am learning to think programmatically.

Eh?

I am learning to break down problems into pieces machines can solve. In my case, this involves taking messy text, or strings of letters and numbers, sticking them into Excel, and then pulling the tidied data into another program (usually a database). Moving text around by hand would be a complete hassle. But because Excel has miniature bits of programming built in, it is a very powerful tool for manipulating strings as well as numbers.

The most difficult part of this kind of work, for me, is not the functions. You write them once and recycle them for the same task until it’s complete. The hardest part is breaking apart what it is I need to do in a way that makes sense to the computer program. I began my life as a lover of human language, and instructions for human beings are a million times easier to write than instructions for computers. When picking apart a task that would be simple for a human to assess and complete, I have found that I have to work backwards from what I want, or solve half the problem and then come back for the other half.

Sometimes this is maddening, because I know I could type out what I want in a fraction of the time it would take me to build a function to cobble the desired end product together from existing strings. But with that reasoning, I should pull out a pen and paper and handwrite my information. The purpose of working with a computer is to be lazy, and get the computer to do as much of the work for me as possible. Telling myself all this while fiddling with parentheses is not very encouraging, but when I finally get the problem worked out, it is very satisfying to stick that gobbledygook series of cell references together with commands, commas, and parentheses and watch it turn messy text into a perfect string of concatenated, uppercase characters.