RubyConf Mini 2022

Ruby Office Hours with Shopify Engineering

Ruby Office Hours with Shopify Engineering

by Rose Wiegley and Ufuk Kayserilioglu

The video titled "Ruby Office Hours with Shopify Engineering" features a session held during RubyConf 2022 where Shopify engineers, Rose Wiegley and Ufuk Kayserilioglu, discuss their work related to Ruby and Ruby on Rails. The session aims to answer questions about Shopify's relationship with Ruby, the engineering projects undertaken, and insights into the engineering culture at Shopify.

Key points discussed in the session include:

  • Introductions: Rose Wiegley, a Senior Staff Software Engineer, explains her role in merchant services, particularly with the Shop Pay Installments feature, emphasizing her daily interaction with Ruby on Rails.
  • Ufuk Kayserilioglu, an Engineering Manager on the Ruby and Rails infrastructure team, provides an overview of his team's efforts to improve the Ruby language and Rails framework, focusing on performance enhancements and developer experience.
  • Community Contributions: Both speakers highlight the importance of contributing back to the Ruby language and framework, and how these contributions impact Shopify's product and internal developer capabilities.
  • Key Projects: Ufuk details significant projects such as:
    • The improvements in the C Ruby code base, particularly object shapes, which will be part of Ruby 3.2.
    • The YJIT (Yet Another Just-In-Time compiler) project, now using Rust for improved performance, also set for Ruby 3.2.
    • The team's focus on developer tools and gradual typing with Sorbet to enhance development efficiency.
  • Business Alignment: Ufuk discusses how the engineering team aligns infrastructure needs with business goals, illustrating how infrastructure projects can lead to performance improvements that ultimately benefit product effectiveness and conversion rates.
  • Update Practices: The team emphasizes the importance of keeping applications updated with current Ruby versions for stability and to leverage new features, mentioning their success in reducing the time taken to upgrade to new versions significantly.
  • Educational Culture: Both engineers stress Shopify's commitment to continuous professional development, mentioning onboarding training, developer summits, and specialized interest groups that enhance understanding and collaboration within the Ruby ecosystem.

In conclusion, the session highlights the integral role of Ruby in Shopify's operations, the commitment to community contributions, the alignment of engineering work with business objectives, and the emphasis on continuous learning and professional growth for developers at Shopify. Attendees are encouraged to continue engaging with Shopify engineers for further questions and support.

00:00:00.299 Hello, world!
00:00:11.160 Hi everyone. Thanks for coming to office hours! I'll do a quick run-through of how this is going to work.
00:00:17.220 We have a couple of amazing Shopify engineers here today, and a bunch in the audience as well. You'll get to know them better in a second.
00:00:29.280 What we're going to do is have Rose and Ufuk come up here to introduce themselves. They'll tell you a bit about what they do at Shopify, and then we'll open it up for questions. I’ll come around with a microphone, so just raise your hand if you have a question after they're done with their intro. We also have some other Shopify folks hiding in the audience who might be able to contribute to the answers.
00:00:46.140 So yeah, let's get started! Come on up, friends.
00:00:53.280 Hi everybody! I'm Rose Wigley, and I’m a senior staff software engineer at Shopify. I’m guessing most of the people in the audience think of Shopify from the point of view of what our amazing contributors to Ruby do.
00:01:01.899 I am not one of those people. Most of the engineers at Shopify are not actually working on Ruby or Ruby on Rails. We are very excited to have teams dedicated to that, but a lot of us are working on the Shopify product. So, we come to Ruby and Rails as users who have to use Ruby and Rails every day for an amazing programming experience in our jobs.
00:01:19.680 For me, I work in what we call merchant services, specifically in the money division. If you've ever gone to a Shopify store and checked out using any form of payment, most likely that transaction has gone through code from the Money Team. My specific area is Shop Pay Installments where we provide the glue layer so that for a merchant or a buyer checking out with Shop Pay, it looks like a completely smooth checkout experience.
00:01:41.880 The goal is to make it as easy and transparent as possible for both the merchant and the buyer. As part of this, I have to use Ruby on Rails basically every day, or at least my team does. As a senior staff software engineer, if you look at my GitHub contribution bar, you will notice it's a lot less green than it used to be. But I'm still very comfortable working with Ruby and Rails and really enjoy coding in it. So, I’m here to answer any questions you have from the perspective of someone using the language.
00:02:35.040 Hello, my name is Ufuk Kayserilioglu, and I'm an engineering manager on the Ruby and Rails infrastructure team. I lead the Ruby infrastructure part of the team. We work on the Rails framework and the Ruby language. Our team specifically works on the Ruby language to improve performance and to make it function better for Shopify and the entire community overall.
00:03:48.940 A few of the projects we are currently undertaking include making improvements inside the C Ruby code base—C Ruby being the Ruby interpreter that you use at work. There are alternative implementations of Ruby as well, such as Truffle Ruby, which our team works on at Shopify. Truffle Ruby is our long-term bet as we want to see where it can take us with its peak performance metrics. We are trying to get Truffle Ruby to run in production. Additionally, we're taking some ideas from Truffle Ruby because it's a great research platform. One such idea is object shapes, which is a well-known technique implemented in various languages, including Truffle Ruby.
00:05:00.790 We took that idea and incorporated it into the C Ruby code base. Object shapes have actually been merged and will be released with Ruby 3.2. Another project we work on is YJIT, which stands for 'Yet another just-in-time compiler' for the Ruby language. It was first released with Ruby 3.1 and has now been ported to Rust this year, bringing a lot of memory and performance improvements. Like the object shapes feature, it will also be released with Ruby 3.2. We focus on developer tooling as well because our team's customers are people like Rose who work with the Ruby language inside Shopify.
00:06:28.300 We want to provide solutions to those teams to help them work more effectively, which is why we look at developer experience and tooling. We adopt gradual typing using Sorbet and work on tools like Ruby LSP to enhance development experiences. This is a high-level overview of what my team does, and if you have any questions, I can pass it off to them for better answers, or I can try to answer them as best as I can.
00:07:53.340 Okay, so with that, I think we'll just go to questions. If you have a question, just raise your hand, and I will do my best to get to everybody in somewhat the order they raise their hand. If we run out of questions, we can also float through the audience and chat.
00:08:21.660 I'm going to grab the mic and mask up. Raise your hand if you have a question, and I'll come find you.
00:08:28.700 Hello! I'm wondering, as an engineering manager, how could you make the business case for contributing to Ruby and Truffle Ruby for performance? Can you provide insights into how that happened and how the product team aligned with it?
00:09:16.320 Thank you, that's an excellent question. The framing is a bit different. What we're doing isn't necessarily working on open source or a specific technology; our team is part of the developer acceleration team. The goal is to accelerate our internal developers' capabilities at the right layer of the stack. If you solve problems at the correct layer, you address them for a broader number of people. Sometimes, that means you need to solve issues within the Ruby language or framework.
00:10:04.260 The language and framework are the foundations of our product; if they crumble, our product will crumble as well. Thankfully, we have a CEO with a technical background who appreciates this point and understands the importance of contributing back to the tools we use and the impact it can have on Shopify.
00:11:08.040 In this sense, that's the main work we do—not research or open-source work, but solving problems at the right level of abstraction, much like how product teams solve problems at their own level.
00:12:32.160 Additionally, convincing leadership to support infrastructure projects relates to the broader context of product-facing work versus infrastructure work. We have to articulate those infrastructure needs in product language, illustrating how performance enhancements can lead to increased conversion rates. This alignment with business metrics is crucial in gaining buy-in for such projects.
00:14:14.760 I'm curious if you keep your applications updated with the current versions of Ruby. Yes, we have an aggressive release cycle. I took a look at how fast it took our core monolith to get onto the latest version of Ruby historically, which has improved significantly over time. For example, moving to Ruby 3.1 took us just 18 days from release rather than many months, as it used to take.
00:15:02.100 This improvement reflects a concerted effort on our Ruby infrastructure team to ensure that updates are stable and reliable, shaving down the transition time significantly. Moreover, other teams within Shopify are being encouraged to adopt similar practices, spreading the benefits across the codebases.
00:16:51.840 Even though we’re at a Ruby conference, I want to mention that our team has a slightly different emphasis since we also manage several monoliths. For example, we have automated PRs reminding teams to keep their Rails codebases updated, with polite and then increasingly assertive reminders to upgrade.
00:17:39.060 This structured approach helps to ensure that we stay on top of upgrades, preventing the kind of drag that leads to difficulties later down the line.
00:18:47.680 Additionally, staying updated helps all developers take advantage of new features and ensures our work to enhance performance does not go to waste. This also contributes back to the Ruby community by making Ruby more stable for others.
00:19:56.520 Regarding Truffle Ruby, while we're not utilizing it in production yet, we're exploring several options to integrate it. Since it is a new implementation, we are assessing how to regain compatibility while managing the complexities of the Ruby codebase and its unique characteristics.
00:20:32.500 Oracle manages the core compiler technology while we focus on ensuring our development aligns with practical business needs. There are existing implementations of JavaScript that are further along in production settings compared to Ruby, which informs our exploration, but Ruby is progressing steadily.
00:21:25.920 Efforts are also in place to make sure we address the distinct goals of organizations utilizing Ruby, which contrasts with traditional expectations set by Oracle.
00:22:32.340 As far as professional development goes, Shopify heavily emphasizes a culture of continuous education. From my own experience, my manager encouraged me to set aside time for personal education, not just for my current role but for my overall career.
00:23:05.240 During onboarding, new employees receive training on Ruby on Rails, and we host developer summits regularly that include various classes. We also provide resources for employees to pursue their own educational paths, empowering them to grow in their careers.
00:24:19.120 Additionally, we have special interest groups within Shopify, such as one specifically for Ruby, that hold regular meetings and presentations, fostering deeper understanding and collaboration.
00:25:15.920 Having this framework of support makes navigating Ruby upgrades much easier and ensures developers can ask any questions they have about the Ruby ecosystem, thus enhancing their efficiency.
00:26:32.250 In conclusion, Shopify creates an environment where developers feel supported and connected, ensuring continuous growth and improvement. Thank you all so much for attending our office hours!
00:27:48.000 If you have any further questions, feel free to approach anyone wearing a Shopify hoodie. We're here to help, and we hope you enjoy the rest of the conference!