Recently, I’ve picked up Go as another language, and I find myself falling in love with yet another programming language. I find it also interesting that it is causing me to be introduced to more computer science history and language design, which has caused me to ask myself, Why have I used the languages I have in my career?
So I thought I would answer that for myself, and for anyone else that might be interested (and for future me, who will surely look back on this post someday).
PHP - Post College and Paying the Bills
PHP paid the bills for over a decade. It’s what my first post-college job was all about, being tossed into the deep end and learning to swim in a web programming world. My second post-college job also leveraged that skill, and I spent a total of 11 years writing PHP professionally.
I don’t quite remember what got me into Ruby, but I vaguely remember it being due to a local meetup. I didn’t know him well at all, but Jim Weirich (a legend in the Ruby community) worked out of that same space. Him and a few others gave talks over the weeks I attended, and it ended up sparking an interest in me that I wasn’t aware of.
Eventually, my time with PHP came to an end when, during that 11th year, I suffered major burnout. Writing it was like bashing my head against a padded wall. I simply couldn’t do it. My brain still actively rejects it whenever I am asked to code review anything in PHP.
Ruby - So Good They Couldn’t Ignore Me
Maybe it was social media, maybe it was the Ruby Rogues, maybe it was my curiosity and desire to learn something new to use on the commandline. I think it was all of the above, to be honest. Having people (the Ruby Rogues) that were active learners and considered experts by others made it much more interesting than PHP had been for me (I was getting ready to deal with a massive bout of burnout with it).
Then there was Matz, and the whole “developer happiness” aspect that was core to the language.
I felt like I could actually write programs non-programmers could read. I still remember how I felt when
I first learned about the
unless keyword: amazed.
Ruby also offered me things I had never really considered for PHP, refactoring and testing. I still go back to talks by Katrina Owen and Sandi Metz on these topics because they’re relevant, regardless of the language.
Ruby and its community made me realize it was ok to be happy as a developer. It also made me realize that I could automate tests. It’s where I learned “make it work, then make it right” (in regards to refactoring).
I think the biggest thing that Ruby taught me, though, was that it was okay to be myself. If I wasn’t okay with being myself, I’m quite certain I wouldn’t be where I am now in my career.
I don’t think I’ll ever stop being a Rubyist, and I’m quite ok with that.
Go - Commandline Heaven
Now that I’ve spent time getting really good with Ruby, it finally felt like it was time for Go. I had looked at it a few years back, and my brain just wasn’t ready for it. Having been writing gems and other commandline scripts in Ruby, I was at the point where a cross-compiling language spoke to me. So earlier this year, I took another look at it, and to my surprise, my brain was excited to learn it.
Since then, I’ve realized that the community is remniscient of Ruby’s, which is incomparable. I also noticed that Katrina Owen, someone I have the utmost respect for as a software developer, is also a part of the community. Then there are the language creators (Rob Pike, Rob Griesemer, and Ken Thompson), all of which have had a long and successful career. In a world where people want to put developers on a management track, I have a much better understanding of where I’d like to actually be in my career down the road.
In The End
PHP was chosen for me. I needed a job, and I found one (well, two), and it payed the bills for a long time.
Ruby was there when I needed happiness. It and its community have been a beacon of hope and joy and terrible puns, and I love all of it. It also gave me people to look up to that I never had with PHP, to show me right from wrong, and to learn that it was ok to not know things.
Go is helping me understand the why and the how of the career developers before me, and that makes me realize that I will still have a place as a developer when I get further down the road. It’s also given me more people to look up to, and to strive to be better at what I do.