Published Mar 3, 2020

Episode 401: Jeremy Miller on Waterfall Versus Agile

Jeremy Miller delves into the limitations of the Waterfall methodology and the transformative benefits of Agile practices, emphasizing the importance of adaptability, feedback loops, and multidisciplinarity in modern software development.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Feedback Loops

    Feedback loops are crucial in software development, as they enable teams to quickly identify and correct errors or validate theories. emphasizes the importance of having efficient feedback cycles, which allow developers to adapt swiftly and ensure they are on the right track 1. He argues that prioritizing feedback and automated testing over early abstractions can prevent developers from making premature decisions that complicate the code unnecessarily 2.

    The most important thing is to have really good feedback cycles to let you know I'm on the right track or I'm not on the right track, and I need to adapt.

    ---

    Miller also highlights how advancements in technology, such as Docker, have made integration testing more accessible and reliable, further supporting the feedback loop process 3.

       

    Testability Design

    Designing for testability is essential for maintaining flexibility and safety in software development. stresses the importance of understanding build and test tools, as well as the roles of team members, to enhance testability 4. He explains that investing in test-driven development and continuous integration allows for safer code changes and reduces technical debt 5.

    You needed to make it both easy and safe to change your code later.

    ---

    Miller also notes that unlike traditional engineering, software development often involves unknown materials, making it crucial to build and test iteratively 6.

       

    Multidisciplinary Teams

    Multidisciplinary teams play a vital role in modern software development, fostering collaboration and reducing dependencies. highlights the importance of having self-contained teams with diverse skill sets to enhance productivity and minimize external dependencies 7. He introduces the concept of technical empathy, which involves understanding the work of others to improve communication and collaboration 8.

    The very best teams are self-contained teams with multidisciplinary people that have every skill set needed to deliver their project.

    ---

    Pair programming is also discussed as a method to promote collective code ownership and prevent bottlenecks caused by specialized knowledge 9.

Related Episodes