Published Jul 27, 2023

SE Radio 574: Chad Michel on Software as an Engineering Discipline

Chad Michel sheds light on viewing software as an engineering discipline, stressing the importance of managing complexity, maintaining a design focus, and fostering leadership to ensure quality and adaptability in software development. He offers insights into juggling evolving requirements, team dynamics, and the need for engineering rigor to meet customer needs effectively.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Modular Design

    Modular design in software systems is crucial for maintainability and adaptability. and discuss how modularity allows software to be changed by developers, ensuring that systems can evolve over time. They compare this to hardware design, noting that while some components like memory and hard drives are customizable, others are not, reflecting design decisions that prioritize certain aspects of modularity 1. Michel emphasizes that achieving true modularity in software requires intentional design efforts, as it cannot be achieved by accident 2.

    If you really want modularity, you never get there by just oopsing your way into it. It requires design.

    ---

    This approach ensures that software can be adapted by different teams, whether they continue to work with the original developers or take over the project independently.

       

    Iterative Design

    Iterative design processes play a vital role in refining software systems through continuous feedback. explains that design is not a one-time effort but a continuous cycle of improvement, where feedback loops help identify potential issues early 3. This approach minimizes costly rework by addressing problems before they affect end-users 4. Michel highlights the importance of involving multiple perspectives in the design process to uncover hidden challenges and ensure robust solutions.

    Engineering really is a team sport.

    ---

    By iterating on designs, teams can adapt to changing requirements and improve system performance over time.

       

    Design Stamina

    The Design Stamina Hypothesis, introduced by Martin Fowler, emphasizes maintaining a 'good design line' to avoid costly rework. discusses how staying on this line allows for sustainable feature development without frequent refactoring 5. He notes that many defects originate from flawed requirements and design, leading to significant rework later in the project lifecycle 6. Michel stresses the importance of addressing these issues early to prevent future challenges.

    Requirements in design are implicated in a large percentage of bugs.

    ---

    By focusing on robust initial designs, teams can reduce the need for extensive changes and maintain project momentum.

Related Episodes