SE Radio 574: Chad Michel on Software as an Engineering Discipline
Chad Michel, Senior Software Architect at Don't Panic Labs and co-author of Lean Software Systems Engineering for Developers, joins host Jeff Doolittle for a conversation about treating software development as an engineering discipline. They begin by discussing the need for engineering rigor in the software industry. Chad points out that many developers lack awareness of good engineering practice and are often unaware of resources such as the Software Engineering Body of Knowledge (SWEBOK). Among the many topics explored in this episode are design methodologies such as volatility-based decomposition and the work of David Parnas, as well as important topics such as quality, how to address complexity, designing for change, and the role of the chief engineer. This episode is sponsored by ClickSend. SE Radio listeners can get a $50 credit by following the link.
Chad Michel, Senior Software Architect at Don’t Panic Labs and co-author of Lean Software Systems Engineering for Developers, joins host Jeff Doolittle for a conversation about treating software development as an engineering discipline. They begin by discussing the need for engineering rigor in the software industry. Chad points out that many developers lack awareness of good engineering practice and are often unaware of resources such as the Software Engineering Body of Knowledge (SWEBOK). Among the many topics explored in this episode are design methodologies such as volatility-based decomposition and the work of David Parnas, as well as important topics such as quality, how to address complexity, designing for change, and the role of the chief engineer.
This episode is sponsored by ClickSend.
SE Radio listeners can get a $50 credit by following the link below.
Show Notes
From the Show
- Guest twitter: @chadmichel
- Righting Software by Juval Löwy
- Code Complete by Steve McConnell
- On the Criteria to Be Used in Decomposing Systems Into Modules by David Parnas
- Volatility Based Decomposition by Juval Löwy (video)
- Exploring Requirements by Gerald Weinberg
- Andon Cord) (wikipedia)
- W. Edwards Deming (wikipedia)
- Conway’s Law (wikipedia)
- Information Hiding (wikipedia)
From IEEE Computer Society
From SE Radio
- Episode 520: John Ousterhout on A Philosophy of Software Design
- Episode 518: Karl Wiegers on Software Engineering Lessons
- Episode 470: L. Peter Deutsch on the Fallacies of Distributed Computing
- Episode 407: Juval Löwy on Righting Software
- Episode 359: Engineering Maturity with Jean-Denis Greze
- Episode 331: Kevin Goldsmith on Architecture and Organizational Design
- Episode 132: Top 10 Architecture Mistakes with Eoin Woods
Transcript
Transcript brought to you by IEEE Software magazine.
This transcript was automatically generated. To suggest improvements in the text, please contact [email protected] and include the episode number and URL.
Jeff Doolittle 00:00:47 Welcome to Software Engineering Radio. I’m your host, Jeff Doolittle. I’m excited to invite Chad Michel as our guest on the show today for a discussion about systems engineering for software developers. In 2000, Chad graduated with a degree in computer engineering. He then graduated from the University of Nebraska, Lincoln, in 2003 with a Master’s in Computer Science. After college he worked for multiple software companies before ending up at Don’t Panic Labs. Chad is a lifelong Nebraskan. He grew up in rural Nebraska and now lives in Lincoln. Chad and his wife have a son and a daughter, and Chad is the co-author of Lean Software Systems Engineering for Developers . The book that we’ll be talking about on the show today. Chad, welcome to the show.
Chad Michel 00:01:26 Hi, how’s it going?
Jeff Doolittle 00:01:27 It’s going great. Glad you’re here.
Chad Michel 00:01:29 Thank you.
Jeff Doolittle 00:01:30 Well let’s dive right in. The book starts out with a distinction between software engineering and software development. So, give us your perspective on what distinguishes those two concepts.
Chad Michel 00:01:42 Probably one of the big things is just the rigor around it. I think software development, it’s pretty easy and probably one of the great things about software that got us into it is how easy it is to get going. You can really quickly fire up your favorite editor, probably a lot of people it’s VS code today and start throwing some JavaScript together and have a webpage. But did you actually satisfy any of the actual requirements? Is this system going to actually handle scale? Is it actually able to support what the real users wanted out of this system? Do we actually have much confidence is actually going to work? There’s a lot more rigor around software development than just kind of throwing something together. I think back, you mentioned my education has kind of got me thinking there. A lot of what we learned in college have that computer science background was more around software development.
[...]