Software Engineer at Shopify 🛍. I like building tools for developers and doing open source.
Mostly doing Ruby & Swift, and sometimes Javascript

T-shaped engineers

How often have you heard “I’m an iOS engineer”? Every time I hear it, I wonder if that means that the engineer is only able to code iOS apps, or that it’s their expertise area but are open to engineer for other platforms and with other programming languages.

I used to fall in the former group. Doing something other than iOS or Swift did not motivate me, and ended up procrastinating when the opportunity of doing something else came up. Hopefully that changed, and being honest and professionally speaking, it’s made a huge difference in my day to day job.

When I open the laptop every day, I do it without knowing whether that day I’ll be doing Ruby, Javascript, or Swift. I don’t know if I’ll build software for Android, iOS, or React Native. Every day is uncertain. I push myself out of my comfort zone and broaden my points of view and skills. I like it.

I’ve been in teams with experts in different domains, and when some work escaped the domain they considered themselves experts of, they refused to do the work. They’d rather ping the developer that works actively on the API, or open an issue for someone to fix it on that Ruby open source tool that saves them so much time. Aren’t we all engineers capable of leveraging out skills to solve engineering problems?

This continues to be a pattern in many projects and companies. Shopify follows a different approach here. It aims for hiring t-shaped engineers. Those are engineers that are really good at one thing, but capable and willing to learn and do so many other things. I believe that’s crucial for a company to move fast. The last thing that you want for your project is engineers that add roadblocks when they are asked to do something different.

As an example, I’ve seen my team at Shopify working on the following tasks:

  • Build a command line tool in Ruby
  • Develop an internal web app to coordinate releases to the store.
  • Automate the provisioning of CI hosts to run mobile builds.
  • Investigate and help speed up builds.

Unfortunately, this setup might not be possible in small companies. Constantly jumping into new domains is expensive because developers need to gather context and learn about every new domain they jump it. That requires time.

I’m glad that Shopify believes in this powerful idea and seeing it materialize in my team. I still consider myself mostly experienced in Swift, yet love to try and learn other programming languages and paradigms like Ruby, Javascript or React.

If you work on a large project, and having specialized engineers is a source of friction when shipping stuff, you’d better revisit your hiring process. T-shaped engineers are a wonderful asset.