Finding First Gear in a New Language
Today, after a twenty year career, I'm announcing my retirement from programming in the Perl computer language. Other than occasional required maintenance for old software, I've gone Cold Turkey.
This is not to say that I've quit programming. I'm doing more recently than I have in years. I'm just no longer writing in the language that I've known and loved for two decades. That may seem like an odd time to abandon such a familiar tool but it's the right thing to do. Why? So I can teach myself a new language called "Ruby".
The effort to learn Ruby started over two years ago1. Since then, it's been nothing but false starts and falling back to using Perl. That trend showed no sign of slowing down, much less stopping. In order to make progress a big change was called for. So, I've completely jumped to the new ship and burned the old one.
Learning a new programming language is one of those things that falls into the dangerous "This isn't a good time to..." category. Like everything else in the category, it's tempting to set the definition of "a good time" so that it never occurs. There are lots of reasons for this. It's taken a long time to realize it, but for me it all boils down to fear. Lots of individual fears, really, that combine into a giant mass of hard to spot~|ambigious fear~undirectionsal. Some of the individual fears making up the larger best are, in no particular order:
- asking questions that show my ignorance
- being perceived as stupid because of the ignorance
- screwing something up because I'm using a different tool
- going from a resident expert to a completely green novice
- that I'll never be as good at the new thing as I was at the old
- that I won't be able to even become competent at the new thing, much less an expert
- now seeing the path out of being a novice
- knowing there's so much I don't know
- knowing that means there's even more that I don't even know that I don't know
Strangely, identifying the fears helps lessen their impact. They certainly don't go away, but once they have a description, the mind can work to play out secnarios where they don't kill you're ability to grow.
The better approach to use is to ask, "Will anything physically explode if I do this now?" If the answer is "No," then it's time to stop procrastinating and dig it to get started 2.
the better appraoch is to ask "Is there anything that will blow-up if I do this?" Since there will never be a "good" time, answering "No"
, there will never be a "perfect" time to do it and it's easy to extend "perfect"
In the early parts of the learning curve tasks that take 30 seconds in an known language can take hours of research the first time through. If the only measure of progress is the output produced any motivation to learn is killed. The key is to remember that in the early stages, the goal is not mastery but exposure and practice.
Taking ego out of the equation is necessary. It's hard to be really bad at something after being good at something so closely related. But that's the wrong comparison.
The past two years were a horrible time to attempt a new language. For its entire existence, PGATOUR.com (the day job) has been run in partnership with other companies. In the summer of 2012 we made the decision to bring everything in-house. All my efforts since that time have been geared toward the transition, its cleanup and a site redesign/overhaul that's about to launch. As the tech lead and feed expert, I spent all my time coordinating contractors and writing basically no code. The net effect is that over the past twenty-four months, I spent maybe two weeks worth of time working with Ruby. We've pretty much got our feet under us now. So, it's time to delve back in.
- Find a Ruby Icon to use
- Clear the rest of the text below this.
. It's especially daunting at the start. Tasks that take 30 seconds in an known language can take hours of research the first time through. It feels like trading in a Ferrari for an '82 Toyota Corolla with no A/C. Sure, it's still possible to hit the road, but it takes longer and is less comfortable.
The path through the early part of the learning curve is unavoidable.
If you're the type who enjoys learning, it's also fun. Well, maybe not the actual grinding parts. The point right after that when a first handhold in the language is reached. And then a toehold. And then things start clicking at an accelerating pace. More and more connections line up between the old language and the new. Each providing a little dopamine hit from the understanding.
Getting over the first hump is like figuring out how to shift into first without grinding gears.
It's the ability to break through inertia
I'm excited to have hit that point
There's a kind of compound interest to learning that's no less magical in learning than it is in money.
The more you know, the more you can figure out.
You might as well learn to enjoy it since there's no way around it.
Things start to click
a toe-hold is reached and things start to click. It takes relatively huge amounts of energy and work to get there but once you find first gear it's constant little hits of dopamine.
as understanding builds on itself.
may take a few hours worth of research the
Things I could do in 30 seconds in Perl take hours in Ruby
After twenty years, I've ended my career of writing code in Perl. Though I used LOGO and played around with BASIC as a kid, Perl was the first language I really learned. Thanks to Learning Perl and The Perl Cookbook, I taught it to myself and started what has turned out to be a very lucky career to be in.
Perl used to be called the Glue of the Internet. I know for my day job as the Tech Guy behind PGATOUR.COM that has certainly been true. Our main product is our leaderboard and for years the system that delivered our feeds was a batch of Perl code I wrote.
When I first got to the TOUR, another contracter was there. He was more than a little arrogant and contantly snuffed at Perl. He'd never actually programmed in it, but his constant refrain was "Perl Sucks". Having an almost religious view of programming languages is fairly standard in the world of coders. Especially younger ones. I would just laugh it off and use the language to do stuff in hours that was taking him days.
As fond as I am of Perl, I started playing around with Ruby and Ruby on Rails a few years ago. Rails had gone from "The New Hot Thing" to "The Relatively New Hot Thing that's had some time to stabilize a little". The timing for getting into it was off though. Over the past 18 months, we brought our site in-house and then immediately started working on a redesign. Since I'm more of a manager type tech lead these days, I didn't do much coding.
almost no time coding.
At the end of 2012 we took everything in-house. The decisions was made in the summer of 2012 and ever since then all my efforts have been geared toward the transition, its clean-up and site redesign/overhaul that's about to launch. As the tech lead, I spent almost no time coding.
Ever since we made the decision to move in-house in the summer of 2012,
The months leading up to that and those after were all about the transition. As the tech lead, I spent almost no time coding. My efforts were geared toward coordinating the move and then clean up and redesign kickoff that immediately followed. The net of this is that I spent maybe two weeks worth of time over the past two years working with Ruby. Not nearly enough to get past the initial learning curve.
As we near the launch of our redesign, things have settled enough.
Now that all that's behind me the effort to learn Ruby is a priority.
Most of my time was spent helping coordinating that effort
After years of partnering with other companies to help run PGATOUR.COM we moved the site in-house in December of 2012.
The reason for abandoning a tool that I've been using for so long? I'm learning Ruby. I've wanted to pick it up for a couple years but I could never get into it. Not because
A big part of that is because the last eighteen months involved moving PGATOUR.COM in-house for the day job and then immediately starting a redesign.
I've been trying to pick it up for a couple of years, but the fates have conspired against me. Mainly this came in the form of a gargantuan projects at work where we brought PGATOUR.COM in-house and then kicked off a site redesign slightly before we had our feet under us.
of moving PGATOUR.COM in-house and starting an overhaul redesign project
Possible leads: I've been programming in a computer language called "Perl" for twenty years. As of today, I've quit. Other than occasional maintenance for legacy applications, I've gone Cold Turkey.
I've been making more and more software recently. That may seem like an odd time to abandon such a familiar tool but it's the right thing to do. Why? In order to teach myself a new coding language called Ruby. After two years of false starts 1, the only way I've been able to make progress has been to by completely jump ship and burn the old one.