Disclaimer: to all non-nerds who also know my girlfriend, Ruby is not my secret lover. She is a programming language and she is beautiful and is way too good for me.
I finished my first Ruby project this week. It doesn’t do a whole lot, and it has a few caveats, but it works. Every time you get a twitter mention, it spits out a Growl notification (next step: making it actually growl). It was a great experience and an awesome learning exercise, thanks to a lot of research and about an hour of completely invaluable one-on-one time with my coworker Emma, who knows this stuff backwards and forwards.
I am not an experienced programmer, by any means. In fact, I’m not comfortable with that label at all–programmers are people who are able to get jobs building code, and whose skills easily transfer ideas into practice. These people build things from the ground up and gain experience for their next project in the process. These are the people building tomorrow’s technology and making obsolete that super expensive phone I just bought yesterday (assholes). It’s a highly networked, incredibly fast-moving profession, and I’m not a part of it–I am just not knowledgeable enough yet, nor am I entirely convinced it’s the place for me.
However, I do believe I know what I am, and I think there are lots of people like me–very willing to learn, expand their skill sets, and branch out into new realms of thought and action. We’re not really smart enough to realize that sticking with a subject has its benefits, nor are we dumb enough to get stuck doing any one thing for too long. Each of us has the tenacity to finish projects and make inroads on any given field of study, but we certainly cannot be called “experts” in any subject. We usually study something really useless in college, like philosophy, and then find a job at a construction firm “until the economy gets better.” And although our goals and desires for knowledge are sometimes impractical in scope or depth (for instance, I know how to re-build those model rocket ignitions from household supplies), we do generally end up with some pretty impressive (looking) resumes:
- Builds and maintains Guitar Amplifiers
- Gives great advice on building desktop computers (you know, the big ones)
- Knows the practical AND technical difference between humbuckers and single-coil guitar pickups (and also that these aren’t the only choices!)
- Can cook a 3-course gourmet meal, as long as you provide the knives, kitchen, and cookbook
- Knows the neurological basis for most types of aphasia (my favorite disease)
- Can quote, in order, the sequence of devices from microphone to PA, on a multi-stage setup at a large event like Bonnaroo
- Recognizes the Rule of Thirds used in photography, and could probably imitate the style of several well-known photographers
- Can re-create the Sun Salutation from memory without any real knowledge of why it feels so awesome
- Can give you a passable guitar solo in all seven musical modes and follow most of the changes…most of them
But ask me too many questions about any of these topics, and you’ll realize quickly that my knowledge does not extend nearly as deep as it should.
Which brings me to my recent attempt to break this cycle of non-mastery by learning the Ruby Programming Language. By all indications, it’s an “easy” programming language in that it makes sense to read, from left to right, line by line, in English. This is contrary to the way in which a lot of “traditional” languages are constructed, with the computer scientist or mathematician in mind. Basically, Ruby is a great general-know-it-all’s language, made incredibly powerful by some amazing intentional features, and it’s the perfect “first language” for someone like me who would love to become an “expert” in a field. </quoting spree>
To me, the expertise afforded by learning how to program is much broader than the simple ability to get a job writing code; it’s about the ability to take an idea and translate it into a working concept, regardless of the purpose for which it was created. I’m sure any of the programmers in my life reading this will agree when I say knowing a language doesn’t make you a programmer–it’s the ability to leverage that knowledge into a usable and elegant entity which takes input and provides output without putting a burden on the user (that’s called “user experience“). Being a programmer, like being anything else, is about doing what you’re doing efficiently, with style and class (suppressing desire to make jokes about syntax. #nerd). Those are behaviors you don’t learn until you’ve looked your demons in the eye, suspended your skepticism, and actually committed to mastering a skill.
And that journey begins now.
(stay tuned for more attempts at nerd humor and more ruby projects that aren’t all that great)