Its 9am and my daughter, Genevieve, is down for her morning nap right on schedule, allowing me to write my first blog post. Little does she know, I’m writing about her. Right now she is just over a year old, which means that she is working on walking without bumping into things and tripping over her feet, but soon she will be much more focused on developing her language skills. Coincidentally, I’m also working on my language skills, but instead of learning how to communicate verbally with other people, I’m learning how to talk to a computer using R. While the languages we’re learning are very different, the way we are learning them is very much the same. For instance, when I learn a new function in R, lets say “seq(),” I get really excited and end up using it whenever I can. I’ll even use it when it may not be the most suitable tool for my purposes. Meanwhile, when Genevieve spoke her first word, “Dog,” while looking at our dog, I again got very excited, which made her smile and realize she had done something right. Soon, she was claiming that anything with four legs was a dog, just so she could practice her newly discovered language tool.
This leads me to the first message I’m trying to get at. Don’t get stuck using the same functions for everything just because you are comfortable with them. To communicate more effectively with your computer, you need to branch out and explore some new R vocabulary once in a while. Oftentimes I find myself slaving over a workaround to a problem that could be solved in 2 lines if I had only queried the help menu sooner. There is almost always a simpler, more elegant way to write your code. You just have to look it up.
Another parallel that I can draw in our (mine and my daughter’s) language development can be summed up in one word: frustration. There are few things more maddening to me than trying to get one stubborn line of code to work the way I want it to, without succeeding. Probably 90% of the handful of times that my laptop has actually seen its short, binary life flash before its web cam as I threatened to throw it out a window, have occurred while I was programming. There’s a good reason for this trend. It is incredibly frustrating to lose the ability to communicate, whether it be with a friend, your dog, or your computer. I see this same frustration all the time with Genevieve. When she gets hungry, and she doesn’t have the use of language to express her needs, the first place she goes is anger, and the anger that we are feeling is one and the same.
When you get frustrated because you can’t figure out how to express what you need to your computer, you are basically being a hangry toddler. I’ve found that the best remedy for this situation is to first take a ten minute ice cream break. Then when you sit back down to try your code again, either study up on debugging (it will be your best friend) or simply wipe the slate clean and begin a new script with a different approach. After all, there’s more than one way to skin a data set.
Genevieve’s vocabulary started with a single word and over the past few months, it has slowly grown to maybe five, but I can already tell that the frequency with which new words are being discovered is steadily getting faster. I hear that there is a language explosion at around 18 months and I can’t wait to hear what she has to say. It also makes me wonder if the learning curve for my R programming will follow a similar trend. If our programming language development is as similar to my daughter’s as I think it is, then we can all look forward to an exponential increase in our understanding of this sometimes frustrating interface between man and machine that we call R.