Coding Chats

John Crickett

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.

  1. 6D AGO

    Should you ship code without feature flags?

    Coding Chats episode 58 - John Crickett and Melinda Fekete delve into the concept of feature ops, emphasizing the importance of managing code in production effectively. They discuss feature flags as a mechanism for safe testing and releasing of code, the challenges of managing feature flags, and the significance of user feedback in software development. The conversation also touches on deployment strategies like canary releases, learning from recent outages, and the benefits of testing in production. Additionally, they explore the role of feature flag providers and the trade-offs associated with adopting feature flags in software projects. Chapters 00:00 Introduction to Feature Ops 02:46 Managing Feature Flags Effectively 07:41 Deployment Strategies: Canary Releases and Gradual Rollouts 12:23 The Importance of Dogfooding and User Feedback 15:05 Learning from Recent Outages 19:13 Testing in Production and Its Benefits 21:51 Managing Feature Flags at Scale 27:01 Feature Flag Providers and Their Benefits 30:50 Involving Product Teams in Feature Flag Management 31:45 Trade-offs and Downsides of Feature Flags 39:35 Exploring Related Content Melinda's Links: A guide on working with feature flags in code: https://docs.getunleash.io/guides/manage-feature-flags-in-code Open-source repo: https://github.com/Unleash/unleash John's Links: John's LinkedIn: https://www.linkedin.com/in/johncrickett/ John’s YouTube: https://www.youtube.com/@johncrickett John's Twitter: https://x.com/johncrickett John's Bluesky: https://bsky.app/profile/johncrickett.bsky.social Check 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. Takeaways Feature ops focuses on managing code in production effectively. Feature flags allow for safe testing and releasing of code without redeployment. Managing the lifecycle of feature flags is crucial for maintenance. Canary releases and gradual rollouts help mitigate risks during deployment. User feedback is essential for improving software products. Recent outages highlight the need for better feature management practices. Testing in production can catch issues that staging environments may miss. Feature flag providers offer tools for managing flags at scale. Trade-offs exist when adopting feature flags, especially for smaller projects. Effective management of feature flags can empower teams and improve deployment speed.

    40 min
  2. DEC 11

    AI-assisted software engineering: challenges and opportunities

    Coding Chats episode 57 - Owain Lewis and John Crickett explore the role of AI in software engineering, discussing the integration of AI into production systems and the challenges faced by AI engineers. They delve into the nuances of AI application, from building scalable systems to the importance of human oversight in AI-driven workflows. Chapters 00:00 Defining the Role of AI Engineer 03:13 Exploring Large Language Models (LLMs) 06:15 Use Cases for LLMs in Business 09:22 The Non-Deterministic Nature of AI 12:12 AI in Software Engineering: The Future 15:11 The Role of AI in Code Review 17:53 The Bottleneck of Requirements Gathering 20:38 Leveraging AI Throughout the Software Lifecycle 29:53 Leveraging AI for Efficient Documentation 30:47 AI in API Design and Review 32:22 Spectrum Driven Development with AI 34:06 The Role of Requirements in Software Engineering 40:05 The Future of Programming Languages and AI 49:54 Understanding Context and Prompt Engineering 56:38 Exploring Related Content Owain's Links: Substack: https://newsletter.owainlewis.com/subscribe AI Engineer: https://skool.com/aiengineer John's Links: John's LinkedIn: https://www.linkedin.com/in/johncrickett/ John’s YouTube: https://www.youtube.com/@johncrickett John's Twitter: https://x.com/johncrickett John's Bluesky: https://bsky.app/profile/johncrickett.bsky.social Check 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. Takeaways AI engineering involves building software with AI, focusing on production systems. AI engineers bridge the gap between AI model builders and software developers. Understanding AI's unique paradigm is crucial for effective system architecture. AI should be used minimally and where it makes sense, not everywhere. Human oversight is essential in AI-driven workflows to ensure reliability. Large language models (LLMs) are a significant focus in current AI trends. AI can enhance business processes through automation and natural language interfaces. AI's role in software engineering includes improving code quality and efficiency. AI tools can amplify both good and bad engineering practices. Experimentation and building real projects are key to learning AI engineering.

    57 min
  3. DEC 4

    So you think you can lead a team of software engineers?

    Coding Chats episode 56 - Paul Grenyer discusses his journey to writing a book on team leadership, sharing insights on the differences between leadership and management, common mistakes new leaders make, the importance of delegation, and building trust within teams. He emphasizes the need for curiosity in understanding both technical and business domains, and reflects on the role of AI in software development. The discussion culminates in insights from his book, which aims to guide new leaders in navigating their roles effectively. Chapters 00:00 The Journey to Team Leadership 08:44 Leadership vs Management 10:33 Common Mistakes of New Leaders 15:58 The Importance of Delegation 19:46 Curiosity in Leadership 22:33 Insights from the Book 27:57 The Role of Technical Skills in Leadership 31:58 The Impact of AI on Software Engineering Paul's Links: Paul's website: https://paulgrenyer.com/ John's Links: John's LinkedIn: https://www.linkedin.com/in/johncrickett/ John’s YouTube: https://www.youtube.com/@johncrickett John's Twitter: https://x.com/johncrickett John's Bluesky: https://bsky.app/profile/johncrickett.bsky.social Check 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. Takeaways Letting go of doing the work is crucial for leaders. Listening to your team is essential for effective leadership. Delegation is often the hardest skill for new leaders to master. Building trust requires admitting mistakes and being approachable. Curiosity about team members' experiences can lead to better solutions. Technical knowledge helps leaders mediate and understand team dynamics. AI can enhance productivity but requires careful implementation. Leadership is about guiding a team towards a common goal. Understanding the business domain is vital for effective leadership. Encouraging a fun and open team culture fosters collaboration.

    37 min
  4. NOV 27

    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. Chapters 00:00 Introduction to Rust and Its Adoption 03:49 Performance Gains with Rust 06:37 Challenges of Over-the-Air Updates 09:36 Onboarding Developers to Rust 12:33 Team Collaboration and Trust 14:53 Testing Strategies for Rust Applications 17:38 Trade-offs and Considerations with Rust 20:13 Hiring and Team Building for Rust 23:02 Advice for Organizations Considering Rust 26:00 Managing Technical Debt in Rust 28:48 Conclusion and Final Thoughts 33:52 Exploring Related Content LINKS Emma's Links https://www.linkedin.com/in/emmanedelcu/ John's Links: John's LinkedIn: https://www.linkedin.com/in/johncrickett/ John’s YouTube: https://www.youtube.com/@johncrickett John's Twitter: https://x.com/johncrickett John's Bluesky: https://bsky.app/profile/johncrickett.bsky.social Check 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. Takeaways Rust 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 min
  5. NOV 20

    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. Chapters 00:00 The Importance of Soft Skills in Engineering 03:14 Bridging the Gap: Engineers and Customer Interaction 06:26 Nature vs. Nurture: The Art of Asking Questions 09:06 Effective Communication: How to Ask the Right Questions 12:06 Understanding Context: The Key to Effective Dialogue 14:53 Navigating Emotional Reactions in Communication 17:36 Feedback and Conflict Resolution: Building Better Relationships 20:57 The Efficiency of Communication in Engineering 23:32 The Role of Emotions in Engineering 26:38 Team Dynamics: The Myth of the 10x Developer 29:08 The Importance of Communication in Engineering 31:29 Empowering Teams to Reduce Meetings 34:40 Communicating with Impact 38:21 Building Trust with Non-Technical Stakeholders 42:11 Creating Meaningful Connections 48:53 Owning Your Confidence as an Engineer Nikki'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/@johncrickett John's Twitter: https://x.com/johncrickett John's Bluesky: https://bsky.app/profile/johncrickett.bsky.social Check 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. Takeaways Engineering 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 min
  6. NOV 13

    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. Chapters 00:00 Introduction to Recruitment Challenges 03:37 Common CV Mistakes in Job Applications 09:19 The Evolution of Job Market Dynamics 14:56 Leveraging AI in Job Hunting 18:34 The Role of Cover Letters in Modern Applications 23:13 Understanding Salary Expectations and Market Trends 24:28 Market Recovery and Hiring Trends 28:01 The Impact of AI on Employment 28:53 Leveraging LinkedIn for Job Seekers 38:14 Navigating Recruitment in a Changing Market 40:52 The Rise of Project-Based Work 46:34 Final Tips for Job Seekers LINKS Mary'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/@johncrickett John's Twitter: https://x.com/johncrickett John's Bluesky: https://bsky.app/profile/johncrickett.bsky.social Check 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. Takeaways One 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.

    48 min
  7. NOV 6

    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. Chapters 00:00 Introduction to Isograph 05:11 Understanding the Problem Isograph Solves 09:57 The Concept of Opinionated Frameworks 13:40 Exploring Network Waterfalls 16:43 Testing and CI/CD Integration 20:49 Scaling with Monorepos and Integration 27:57 Future Vision for Isograph 28:04 Understanding Isograph's Runtime and Compiler 29:40 The Influence of Rust in Compiler Development 32:04 The Challenges of Building a Compiler 35:53 Transitioning from Batch to Incremental Compilation 45:28 Leveraging Rust for Enhanced Developer Experience 52:55 Community Engagement and Future of Isograph 56:32 Exploring Related Content LINKS Robert'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/@johncrickett John's Twitter: https://x.com/johncrickett John's Bluesky: https://bsky.app/profile/johncrickett.bsky.social Check 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. Takeaways Isograph 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.

    57 min
  8. OCT 30

    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. Chapters 00:00 Shane Harger's Unique Career Journey 05:32 Transitioning from Firefighting to Tech 10:12 The Importance of Pair Programming 15:01 Lessons from Incident Management 20:02 DevOps and Platform Engineering Insights 27:44 The Dynamics of Code Review and Pair Programming 29:54 AI as a Partner in Programming 34:03 Key Learnings from AI Pair Programming Experiments 45:37 The Importance of Diverse Pairing in Development Teams Shane'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/@johncrickett John's Twitter: https://x.com/johncrickett John's Bluesky: https://bsky.app/profile/johncrickett.bsky.social Check 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. Takeaways Shane'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.

    52 min

About

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.