When Michael Feathers talks it’s usually worth listening. Michael is thoughtful about software and software design, for example Michael is the person who invented the term SOLID as an approach to software design. Michael is also the author of a book that is on the “must read” list of nearly every real-world programmer “Working with Legacy Code”.
In this chat, Michael Feathers describes this book as "scare tactics for TDD" - When you know how hard it is to write tests for existing code, you’ll write tests from the beginning!
Michael and Dave talk broadly about automated testing, software architecture and design principles for quality code, and Michael claims that “OO, when it's done right, looks a lot like FP”.
The "Engineering Room” is a monthly series of long-form talks, with influential people from the world of software, published on the Continuous Delivery channel each month and hosted by Dave Farley.
___________________________________________________
🙏The Engineering Room series is SPONSORED BY EQUAL EXPERTS
Equal Experts is a product software development consultancy with a network of over 1,000 experienced technology consultants globally. They increase the pace of innovation by using modern software engineering practices that embrace Continuous Delivery, Security, and Operability from the outset ➡️ https://bit.ly/3ASy8n0
-------------------------------------------------------------------------------------
Also from Dave:
🎓 CD TRAINING COURSES
If you want to learn Continuous Delivery and DevOps skills, check out Dave Farley's courses
➡️ https://bit.ly/DFTraining
📧 Get a FREE guide "How to Organise Software Teams" by Dave Farley when you join our CD MAIL LIST 📧
The best way to keep in touch with the latest discussions, events and new training courses, get FREE guides and exclusive offers. ➡️ https://www.subscribepage.com/organise-teams-guide
-------------------------------------------------------------------------------------
🔗LINKS:
Millers Law ➡️ https://en.wikipedia.org/wiki/Miller's_law
+7 -2 ➡️ https://en.wikipedia.org/wiki/The_Magical_Number_Seven,_Plus_or_Minus_Two
Ian Cooper ➡️
https://youtu.be/EZ05e7EMOLM
Martin Thompson (TER Episode) ➡️
https://youtu.be/sIBrFuzR3cs
Simon Brown C4 Architecture ➡️ https://c4model.com
Michael Feathers’ twitter ➡️ @mfeathers
Link to Michael’s talk: “The Deep Synergy between testability and good design" ➡️
https://youtu.be/4cVZvoFGJTU
LMAX Disruptor ➡️ https://lmax-exchange.github.io/disruptor/
-------------------------------------------------------------------------------------
📚 BOOKS:
📖 Dave’s NEW BOOK "Modern Software Engineering" is now available here ➡️ https://amzn.to/3DwdwT3
📖 "Continuous Delivery Pipelines" by Dave Farley paperback ➡️
https://amzn.to/3gIULlA
ebook version ➡️ https://leanpub.com/cd-pipelines
📖 The award-winning "Continuous Delivery" book by Dave Farley and Jez Humble ➡️ https://amzn.to/2WxRYmx
📖 Working Effectively with Legacy Code, Michael Feathers ➡️
https://amzn.to/3hP0F4z
📖 Growing Object Oriented Software Guided by Tests, By Nat Price & Steve Freeman ➡️
https://amzn.to/2Lt3jho
📖 Team Topologies - Matthew Skelton & Manuel Pais ➡️
https://amzn.to/2Y0NdSO
📖 Extreme Programming Explained: Embrace Change, Kent Beck ➡️
https://amzn.to/2GpQRjE
NOTE: If you click on one of the Amazon Affiliate links and buy the book, Continuous Delivery Ltd. will get a small fee for the recommendation with NO increase in cost to you.
__________________________________________________
CHAPTERS
00:00 Welcome
00:40 Introducing Michael Feathers
02:26 Good Design in Code is an Artefact of the Way Our Minds Work
05:21 “Every Time you Encounter a Testability Problem, there’s an Underlying Design Problem”
07:45 A Test is a Program to Understand a Program
10:00 Painful Tests Teach you About Good Design
12:50 The One-More-Thing Problem
13:38 Test First is Coding at a Distance
18:45 Techniques to Tackle Difficult Parts of TDD
20:20 Glue System? Or Computational System?
21:30 Test Coverage is NOT the Goal
22:28 “OO when its done right looks a lot like FP”
27:30 Modularity, Unit Tests and Separation of Concerns
32:39 Quality Views and Key Responsibilities
38:00 Can you Explain Your System in 4 or 5 Objects?
40:50 CRC-Thinking and Cohesion
42:00 Cognitive Load, Microservices and Coupling
46:20 Platforms and Team Topologies
48:08 Scale is the Enemy
52:00 Engineering at Different Scales
54:40 Economics and Buy v Build Choices
58:20 Complex Systems - Physics Bound or People Bound?
1:01:00 Determinism and Concurrency
1:04:00 LMAX and Incremental Design
1:07:30 Constraints and Globals
1:10:40 Moving the Blue Frog
1:12:45 Dynamics of Software Systems and Social Systems
1:14:00 Wrap Up