Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
54 lines (30 sloc) 4.43 KB
title date banner bannerAttribution
Perspective of the Polyglot
2017-10-14
background.jpg

In 2015, I wrote about my next steps in Artsy's engineering career ladder. I laid out the steps that I would be focusing on, like multiplying effectiveness of cross-team work and having an obvious technical impact on the team's strategic trajectory. I've made progress on these points, to varying degrees, but that's not what I want to talk about.

Back then, after listing all the things I wanted to focus on, I casually mention some other items that I'd skipped.

There are other, more technical things like "own a large scale and impact service" ...

In hindsight, I maybe treated these "technical things" as though they were inevitable and would just happen on their own. But just like the community-oriented qualifications, technical skills are things that I need to consciously practice to improve at. To some extent, I might have neglected them.

I mean, don't get me wrong. I made occasional contributions (mostly in Ruby), I built new open source tools (mostly in Ruby), I even rewrote my website (in Ruby). I stayed in my comfort zone – heck, I didn't even learn Rails!

That changed about a year ago, when I talked to my manager about breaking outside of the iOS developer box. I told him that I wanted to contribute to mission-critical backend systems, to help build web frontends written in new languages, to experiment with unproven technologies and evaluate their applications at Artsy.

It's been a slow process. I haven't just been learning new things, I've also been helping other team members contribute to Artsy's iOS code. I can't just leave the iOS codebases – I have responsibilities. I was doing things like pairing on our Scala codebase, which was totally new to me, while also pairing on our iOS codebases, which I helped write.

My progress was stunted at times by setbacks in my depression treatment. Sometimes I would take one step forward and two steps back. That sucked. I made progress where I could and tried to accept that developing new skills takes time.

Contributions to non-iOS codebases were minor at first: arduous pull requests that changed some button's text or added some field to a model object. Simple stuff. I was making contributions, but each one was a challenge.

Recently, things have been different. I started making contributions to a few distinct projects a week. Then a few distinct projects a day. I sought out exposure to building new-to-me kinds of software, with new-to-me practices and new-to-me conventions. It was hard. It sucked. It ruled. I doubted myself a lot.

On the upside, learning language after framework after methodology helped develop my intuition and pattern-recognition. I can more quickly recognize the similarities and differences between different types of software. Now, I can jump into a new project and pretty quickly make meaningful contributions.

It. Feels. Amazing.

Take this week: I released a new version of Artsy's main iOS app, helped profile and limit GraphQL request complexity, tuned server logging, worked on a new feature in a Rails app, undertook a refactor in a Scala backend – all while keeping on top of my responsibilities in the open source community. Cool!

So what? Well.

There's perspective that comes with experience in different programming languages. Not just languages: systems, communities, and contexts. For example, when I step into another programming community, I have the opportunity to look back and see the iOS developer community from a distance. Sometimes I really like what I see. Sometimes I don't. I try to bring that perspective back with me and improve things. Perspective makes you do that.

The more I learn, the more I realize I have to learn. I make progress only to learn that the goal – my vision of an idealized developer – is even further away than I thought. Like Zeno, I'll never make it to a finish line. I don't think that feeling will ever change, but I'm learning to accept the fact that the finish line doesn't exist: the journey is the reward.

You can’t perform that action at this time.