Rust in production at planet scale : lessons learned deploying Rust code to millions of devices
Coding Chats episode 55 - Emma Nedelcu discusses her experience managing teams that transitioned to Rust at Amazon Prime Video. She highlights the reasons for choosing Rust, including its performance and safety features, and the challenges faced during the transition from JavaScript. Emma explains the importance of over-the-air updates, device constraints, and effective onboarding strategies for engineers. The conversation also covers testing strategies, managing technical debt, and hiring practices for Rust teams, emphasizing the need for a mindset focused on problem-solving and adaptability.Chapters00:00 Introduction to Rust and Its Adoption03:49 Performance Gains with Rust06:37 Challenges of Over-the-Air Updates09:36 Onboarding Developers to Rust12:33 Team Collaboration and Trust14:53 Testing Strategies for Rust Applications17:38 Trade-offs and Considerations with Rust20:13 Hiring and Team Building for Rust23:02 Advice for Organizations Considering Rust26:00 Managing Technical Debt in Rust28:48 Conclusion and Final Thoughts33:52 Exploring Related ContentLINKSEmma's Linkshttps://www.linkedin.com/in/emmanedelcu/John's Links:John's LinkedIn: https://www.linkedin.com/in/johncrickett/John’s YouTube: https://www.youtube.com/@johncrickettJohn's Twitter: https://x.com/johncrickettJohn's Bluesky: https://bsky.app/profile/johncrickett.bsky.socialCheck out John's software engineering related newsletters: Coding Challenges: https://codingchallenges.substack.com/ which shares real-world project ideas that you can use to level up your coding skills.Developing Skills: https://read.developingskills.fyi/ covering everything from system design to soft skills, helping them progress their career from junior to staff+ or for those that want onto a management track.TakeawaysRust was chosen for its performance and safety guarantees.Transitioning from JavaScript to Rust involves a steep learning curve.Over-the-air updates are crucial for device management.Device constraints significantly impact application performance.Onboarding to Rust can take about three months for JavaScript developers.Building trust within teams is essential for fast-paced development.Testing strategies must be robust to handle diverse devices.Rust's compile-time checks require strict runtime discipline.Compiling for WebAssembly requires careful optimization to manage bundle size.The Rust ecosystem is maturing but still evolving.Organizations should engage with the Rust community for better integration.Prototyping can effectively demonstrate Rust's potential to stakeholders.Managing technical debt in Rust involves understanding complexity depth.Hiring for mindset and adaptability is more important than experience.Ideal Rust engineers should have a deep understanding of low-level systems.Candidates should demonstrate initiative and impact in their projects.
--------
34:03
--------
34:03
The power of soft skills in software engineering
Coding Chats episode 54 - Nikki Maginn and John Crickett explore the critical role of soft skills in engineering, emphasizing the importance of communication, emotional intelligence, and collaboration. They discuss how engineers can bridge the gap between technical expertise and customer-facing roles, the art of asking questions, and the significance of building trust and meaningful connections. The dialogue also touches on the balance of confidence and humility in leadership, the power of storytelling, and the necessity of understanding context in communication. Ultimately, the conversation highlights that soft skills are essential for engineers to thrive in their careers and contribute effectively to their teams.Chapters00:00 The Importance of Soft Skills in Engineering03:14 Bridging the Gap: Engineers and Customer Interaction06:26 Nature vs. Nurture: The Art of Asking Questions09:06 Effective Communication: How to Ask the Right Questions12:06 Understanding Context: The Key to Effective Dialogue14:53 Navigating Emotional Reactions in Communication17:36 Feedback and Conflict Resolution: Building Better Relationships20:57 The Efficiency of Communication in Engineering23:32 The Role of Emotions in Engineering26:38 Team Dynamics: The Myth of the 10x Developer29:08 The Importance of Communication in Engineering31:29 Empowering Teams to Reduce Meetings34:40 Communicating with Impact38:21 Building Trust with Non-Technical Stakeholders42:11 Creating Meaningful Connections48:53 Owning Your Confidence as an EngineerNikki's Links:Website: www.insideoutengineering.com LinkedIn: https://www.linkedin.com/in/nikki-maginn/John's Links:John's LinkedIn: https://www.linkedin.com/in/johncrickett/John’s YouTube: https://www.youtube.com/@johncrickettJohn's Twitter: https://x.com/johncrickettJohn's Bluesky: https://bsky.app/profile/johncrickett.bsky.socialCheck out John's software engineering related newsletters: Coding Challenges: https://codingchallenges.substack.com/ which shares real-world project ideas that you can use to level up your coding skills.Developing Skills: https://read.developingskills.fyi/ covering everything from system design to soft skills, helping them progress their career from junior to staff+ or for those that want onto a management track.TakeawaysEngineering success relies on effective communication and collaboration.Engineers must learn to translate technical work for broader understanding.Emotional intelligence is crucial for engineers in customer-facing roles.Asking the right questions is a teachable skill.Building trust requires meaningful connections with colleagues.Navigating difficult conversations is essential for team dynamics.Context is key in understanding reactions and emotions in communication.Confidence should be balanced with humility in leadership roles.Storytelling can enhance the impact of technical communication.Investing in relationships leads to more efficient conversations.
--------
56:10
--------
56:10
Perfect your CV - a guide for software engineers
Coding Chats episode 53 - John Crickett and Mary Fidler discuss the evolving landscape of job applications, focusing on common CV mistakes, the importance of showcasing skills and achievements, and the role of AI in recruitment. They explore the relevance of cover letters, salary transparency, and the current state of the job market, including signs of recovery. Mary emphasizes the significance of LinkedIn for job seekers and shares insights on adapting to the changing recruitment landscape, particularly for contractors.Chapters00:00 Introduction to Recruitment Challenges03:37 Common CV Mistakes in Job Applications09:19 The Evolution of Job Market Dynamics14:56 Leveraging AI in Job Hunting18:34 The Role of Cover Letters in Modern Applications23:13 Understanding Salary Expectations and Market Trends24:28 Market Recovery and Hiring Trends28:01 The Impact of AI on Employment28:53 Leveraging LinkedIn for Job Seekers38:14 Navigating Recruitment in a Changing Market40:52 The Rise of Project-Based Work46:34 Final Tips for Job SeekersLINKSMary's LinkedIn - https://www.linkedin.com/in/mary-fidler/Mary's Career Page https://trusttechrecruitment.zohorecruit.eu/jobs/Careers John's Links:John's LinkedIn: https://www.linkedin.com/in/johncrickett/John’s YouTube: https://www.youtube.com/@johncrickettJohn's Twitter: https://x.com/johncrickettJohn's Bluesky: https://bsky.app/profile/johncrickett.bsky.socialCheck out John's software engineering related newsletters: Coding Challenges: https://codingchallenges.substack.com/ which shares real-world project ideas that you can use to level up your coding skills.Developing Skills: https://read.developingskills.fyi/ covering everything from system design to soft skills, helping them progress their career from junior to staff+ or for those that want onto a management track.TakeawaysOne page CVs are a common mistake.Highlight achievements over duties in CVs.AI tools are increasingly important for developers.Cover letters are often unnecessary if CVs are strong.Salary transparency can build trust between candidates and recruiters.The job market is showing signs of recovery.LinkedIn is essential for job seekers to stand out.Contractors can provide cost-effective solutions for companies.Personal branding on LinkedIn can lead to job opportunities.Networking and asking for impact details can enhance CVs.
--------
47:44
--------
47:44
Isograph: the future of data driven apps
Coding Chats episode 52 - Robert Balicki discusses Isograph, an opinionated framework designed to simplify the development of data-driven applications, particularly with GraphQL and React. He explains the challenges faced in web development, such as over-fetching data and network waterfalls, and how Isograph addresses these issues by allowing developers to focus on specific components and their data needs. The discussion also covers the technical foundation of Isograph, built using Rust, and the challenges of compiler development. Robert emphasizes the importance of testing, CI/CD integration, and the potential for Isograph to scale effectively in large projects. He invites developers to get involved in the project and contribute to its growth.Chapters00:00 Introduction to Isograph05:11 Understanding the Problem Isograph Solves09:57 The Concept of Opinionated Frameworks13:40 Exploring Network Waterfalls16:43 Testing and CI/CD Integration20:49 Scaling with Monorepos and Integration27:57 Future Vision for Isograph28:04 Understanding Isograph's Runtime and Compiler29:40 The Influence of Rust in Compiler Development32:04 The Challenges of Building a Compiler35:53 Transitioning from Batch to Incremental Compilation45:28 Leveraging Rust for Enhanced Developer Experience52:55 Community Engagement and Future of Isograph56:32 Exploring Related ContentLINKSRobert's Links:Isograph: http://isograph.dev/John's Links:John's LinkedIn: https://www.linkedin.com/in/johncrickett/John’s YouTube: https://www.youtube.com/@johncrickettJohn's Twitter: https://x.com/johncrickettJohn's Bluesky: https://bsky.app/profile/johncrickett.bsky.socialCheck out John's software engineering related newsletters: Coding Challenges: https://codingchallenges.substack.com/ which shares real-world project ideas that you can use to level up your coding skills.Developing Skills: https://read.developingskills.fyi/ covering everything from system design to soft skills, helping them progress their career from junior to staff+ or for those that want onto a management track.TakeawaysIsograph simplifies building data-driven applications.The framework is opinionated, promoting best practices.Network waterfalls can degrade user experience.Isograph allows for precise data fetching.Testing is a key focus in Isograph's development.Rust provides safety and performance benefits.The framework aims to support SQL backends in the future.Isograph encourages a full-stack development approach.Community involvement is welcomed through Discord.The developer experience with Isograph is superior to other frameworks.
--------
56:43
--------
56:43
From fire fighting to AI pair programming: Shane Harger's journey
Coding Chats episode 51 - Shane Harger shares her unique career journey from web development and graphic design to firefighting and back to tech, emphasizing the importance of pair programming, incident management lessons, and the evolving role of AI in software development. She discusses the significance of DevOps and platform engineering in enhancing team collaboration and efficiency, while also highlighting the value of junior developers in fostering a learning environment within teams.Chapters00:00 Shane Harger's Unique Career Journey05:32 Transitioning from Firefighting to Tech10:12 The Importance of Pair Programming15:01 Lessons from Incident Management20:02 DevOps and Platform Engineering Insights27:44 The Dynamics of Code Review and Pair Programming29:54 AI as a Partner in Programming34:03 Key Learnings from AI Pair Programming Experiments45:37 The Importance of Diverse Pairing in Development TeamsShane's links:https://www.linkedin.com/in/shaneharger/John's Links:John's LinkedIn: https://www.linkedin.com/in/johncrickett/John’s YouTube: https://www.youtube.com/@johncrickettJohn's Twitter: https://x.com/johncrickettJohn's Bluesky: https://bsky.app/profile/johncrickett.bsky.socialCheck out John's software engineering related newsletters: Coding Challenges: https://codingchallenges.substack.com/ which shares real-world project ideas that you can use to level up your coding skills.Developing Skills: https://read.developingskills.fyi/ covering everything from system design to soft skills, helping them progress their career from junior to staff+ or for those that want onto a management track.TakeawaysShane's career spans web development, firefighting, and consulting.Firefighting provided unexpected tech opportunities in incident management.Pair programming fosters camaraderie and knowledge sharing.DevOps emphasizes ownership and collaboration in software development.AI can assist in coding but lacks the human element of teamwork.Juniors bring fresh perspectives and questions that benefit teams.Effective incident management requires calmness and basic troubleshooting skills.Automation in DevOps enhances response times and reduces handovers.Product thinking is essential for infrastructure teams to meet customer needs.The transition from POC to production can be challenging without clear requirements.
On Coding Chats, John Crickett interviews software engineers of all levels from junior to CTO. He encourages the guests to share the stories of the challenges they have faced in their role and the strategies and tactics they have used to overcome those challenges providing actionable insights other software engineers can use to accelerate their careers.