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

Topics covered
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


SE Radio 627: Chuck Weindorf on Leaders and Software Engineers
Answers 383 questions

Episode 112: Roles in Software Engineering II
Answers 383 questions

SE Radio 637: Steve Smith on Software Quality
Answers 383 questions

SE-Radio Episode 262: Software Quality with Bill Curtis
Answers 383 questions

SE Radio 604: Karl Wiegers and Candase Hokanson on Software Requirements Essentials
Answers 383 questions

Episode 183: SE Radio becomes part of IEEE Software
Answers 383 questions

SE Radio 628: Hans Dockter on Developer Productivity
Answers 383 questions

seradio-episode130-codeVisualizationWithMicheleLanza.mp3
Answers 383 questionsEpisode 147: Software Development Manager
Answers 383 questions

SE-Radio Episode 357: Adam Barr on Code Quality
Answers 383 questions
SE Radio 609: Hyrum Wright on Software Engineering at Google
Answers 383 questions

Episode 110: Roles in Software Engineering I
Answers 383 questions

SE Radio 638: Nick Tune and Jean-Georges Perrin on Architecture Modernization
Answers 383 questions













