Senior Software Engineer at Netflix, Jay Phelps, talks about his career and work at Netflix. They discuss seamless user experiences, tech migration challenges, GraphQL versatility, and balancing new tech adoption. The conversation also touches on personal piano playing anecdotes and Star Wars theories.
Read more
AI Summary
Highlights
AI Chapters
Episode notes
auto_awesome
Podcast summary created with Snipd AI
Quick takeaways
Managing new technology adoption is crucial for software development, emphasizing simplicity in tech stacks and balancing excitement with complexity.
Careful consideration of tech debt and system design balance current use cases with future scalability and redundancies for system resilience.
Back pressure in software applications mirrors fluid dynamics, requiring strategies like controlling producers and buffering to manage data flow effectively.
Deep dives
Jay Phelps' Work at Netflix
Jay Phelps works as a senior software engineer at Netflix on the shared client foundations team. This team focuses on foundational issues across various client platforms like mobile and TV. They handle multi-year migrations, such as transitioning from Falcor to GraphQL. Additionally, they work on server-driven UI implementations, quality of experience logging, and bridging the gap between server and client teams.
Jay Phelps' Journey into Programming
Jay Phelps started programming at a young age by creating a fireworks display program using Dark Basic. His early programming experiences include creating a point-of-sale system for a volunteer movie theater to solve money counting issues. He was initially drawn to programming to make games and later delved into hacking, facing and overcoming challenges such as security vulnerabilities.
Challenges and Lessons in Software Engineering
Jay Phelps emphasizes the importance of carefully managing the adoption of new technologies in software development. He advocates for having a 'new technology budget' to balance the excitement of using new tools with the complexity they introduce. He highlights the significance of maintaining simplicity in tech stacks to avoid overwhelming technical debt. Additionally, he stresses the value of server-driven UI for flexible content presentation and the need to carefully navigate the complexities of internal tools and systems at large companies like Netflix.
Dealing with Granularity and Tech Debt Decisions
When deciding on tech debt to take on versus future tech debt to avoid, the podcast discusses the importance of considering granularity and system design. The speaker emphasizes the need to balance between building systems tailored to current use cases and designing for future scalability. By choosing to build a segregated system, they can avoid impacting one area if issues arise in another, showcasing the benefits of redundancies in the system design.
Understanding Back Pressure in Programming
The podcast delves into the concept of back pressure, drawing parallels from fluid dynamics to explain data flow resistance in software applications. Back pressure manifests as constraints on data flow, often due to resource limitations like CPU, memory, or disk usage. The discussion explores strategies to address back pressure, such as controlling the producer, buffering, or sampling data to effectively manage data flow within applications.
Today, you can access Netflix on virtually any device. For a Netflix user, this seamless experience can be easy to take for granted, but it requires an enormous engineering effort.
Jay Phelps is a Senior Software Engineer at Netflix where he works on Shared Client Foundations. He joins the show to talk about the start of his career, his work at Netflix, and much more.
Josh Goldberg is an independent full time open source developer in the TypeScript ecosystem. He works on projects that help developers write better TypeScript more easily, most notably on typescript-eslint: the tooling that enables ESLint and Prettier to run on TypeScript code. Josh regularly contributes to open source projects in the ecosystem such as ESLint and TypeScript. Josh is a Microsoft MVP for developer technologies and the author of the acclaimed Learning TypeScript (O’Reilly), a cherished resource for any developer seeking to learn TypeScript without any prior experience outside of JavaScript. Josh regularly presents talks and workshops at bootcamps, conferences, and meetups to share knowledge on TypeScript, static analysis, open source, and general frontend and web development.