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

Topics covered
Popular Clips
Episode Highlights
Engineering Rigor
Chad Michel highlights the critical need for engineering rigor in software development, drawing parallels between software engineering and traditional engineering disciplines. He notes that many developers lack awareness of structured methods and frameworks like the Software Engineering Body of Knowledge (SWEBOK), which are essential for building reliable software systems 1. Michel acknowledges resistance to rigorous engineering principles, often due to misconceptions about agility and the desire to start coding immediately 2. He emphasizes the importance of planning and documentation before coding to ensure predictable outcomes 2.
The number of people that have heard of SWEBOK and actually know what that means in the software industry probably isn't that many.
---
Jeff Doolittle, the host, supports this view by distinguishing between software engineering and software development, emphasizing the need for rigor in the former 3.
Quality Assurance
Quality assurance is a cornerstone of engineering discipline, yet often misunderstood in software development. Chad Michel differentiates between quality assurance and quality control, advocating for institutionalized quality where everyone in the organization is responsible for maintaining high standards 4. He draws inspiration from Toyota's Andon cord system, where any team member can halt production to address quality issues, emphasizing the importance of a collective quality mindset 5. Michel stresses that achieving high-quality software requires a collaborative effort across all roles, from developers to UX designers 6.
We want quality to be kind of something that everybody buys into super essential for everybody's role.
---
Jeff Doolittle adds that empowering individuals to address quality issues can lead to significant improvements, as demonstrated by Toyota's success in the 1950s 6.
Designing for Change
Designing software with change in mind is crucial for long-term adaptability and system integrity. Chad Michel discusses the principle of designing for change, emphasizing the need to anticipate future modifications and ensure systems can evolve without degrading 7. He highlights the role of a chief engineer in maintaining consistency and communication within teams, ensuring new team members are effectively onboarded 8. Michel also underscores the importance of modular design, which allows for flexibility and adaptability in software systems, drawing parallels to modular hardware designs like the framework laptop 9.
We want to design our solutions where we assume it's going to change.
---
Jeff Doolittle concurs, noting that engineering is about managing constraints and ensuring systems can adapt to changing requirements 7.
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













