In this episode of Ruby for All, Andrew and Julie chat about their recent experiences, including a ski trip with challenges due to a storm, and discuss burnout and returning to regular podcasting. Special guest, Ryan Caldwell, a software engineer at GitHub working on Copilot, joins the conversation to discuss his work, particularly on chat-related features of Copilot. Ryan shares insights on programming languages, leaning into his transitions between Ruby, Java, and Go, and navigating the differences between dynamically and statically typed languages. The conversation covers the benefits and challenges of implementing type checking in Ruby with Sorbet, especially in large projects like GitHub. Ryan advocates for learning Ruby on Rails, praises its efficiency for staring profitable projects, and provides tips for using Copilot Chat effectively. Press download now to hear more!
[00:00:23] Julie fills us in on a recent skiing trip to went on in California, the huge storm they encountered and leaving early to avoid being stranded, the broken chain on their car, and a scary moment on a slope with her kids. Andrew shares he experienced burnout but sees improvement.
[00:02:47] Ryan Caldwell introduces himself and tells us what he does.
[00:03:53] Andrew asks Ryan about the programming languages used for Copilot, leading to a discussion about using Go for its REST API, the manageability of the project, and Ryan’s transition from Codespaces to Copilot after paternity leave.
[00:04:49] Andrew wonders why Go was chosen, and Ryan explains the team’s familiarity with Go and the language’s simplicity.
[00:06:12] Ryan reflects his first programming language and journey through JavaScript, Python, Java, and Ruby, highlighting his appreciation for Ruby. He talks about learning Ruby on the job, and his fondness for Rails.
[00:08:02] Ryan discusses the challenges of picking up new languages and his approach to learning through project involvement.
[00:09:24] Andrew asks about the shift from dynamic to typed languages, and Ryan shares his experiences transitioning from Ruby to Go.
[00:11:53] We hear about Ryan’s work on type checking with Sorbet at GitHub, and he shares that Sorbet helped find edge cases and bugs, improving the code by requiring changes to the structure to prevent these issues.
[00:15:09] Ryan feels the biggest benefit of Sorbet is enforcing developers to consider boundaries and contracts between classes, which encourages thoughtful coding and design. A downside he mentions is the time and confusion involved in the migration process, particularly for team members unfamiliar with the new syntax.
[00:17:11] Julie inquires if Ryan would do anything differently regarding Sorbet implementation. He reflects on the challenge of estimating the time required for implementing Sorbet, dealing with complex code, and the difficulty of refactoring legacy code without comprehensive tests.
[00:18:44] Would Ryan go back to Ruby/Rails without Sorbet? He states that he would for personal projects for speed but appreciates Sorbet in team settings for defining clear code boundaries.
[00:19:31] Ryan suggests that small teams should consider Sorbet if it solves a specific problem, rather than adopting it without a clear purpose.
[00:21:40] Ryan discusses his pride in streamlining the authentication process across different clients in Copilot, leading to a simplified codebase for the team. A tip he shares is to provide as much context as possible when using Copilot Chat to get better responses.
[00:25:35] Andrew talks about custom instructions for ChatGPT, like ensuring all output is in bullet points, and wonders if such a feature exists for Copilot.
[00:28:46] Ryan advises newer developers to be intentional about what they chose to learn in software development, emphasizing the importance of investing learning time wisely. And yes, Ruby on Rails is still worth learning in 2024.
[00:31:03] Find out where you can follow Ryan on the interwebs.
Panelists:
Andrew Mason
Julie J.
Guest:
Ryan Caldwell
Sponsors:
Links:
Visual Studio Code-GitHub Copilot Series (YouTube)
- (00:00) - Ski Trip and Snow Adventures
- (02:47) - Ryan Caldwell's Intro
- (03:53) - Copilot’s Language Choice
- (06:12) - Journey Through Programming
- (09:24) - Dynamic to Typed Languages
- (11:53) - Sorbet’s Impact at GitHub
- (17:11) - Reflecting on Sorbet
- (21:40) - Copilot’s Authentication Success
- (25:35) - Customizing Copilot Chat
- (28:46) - Learning Paths in Software Dev
- (31:03) - Where to Follow Ryan