Code & Optimism
All Episodes

40. Forget Correctness & Code Quality, Be Verifiable and Agile
26:17||Season 1, Ep. 40Why ‘Correctness’ and ‘Code Quality’ Are Misleading: Embrace Verifiability and AgilityIn this episode of Code and Optimism, I argue for replacing the subjective terms ‘correctness’ and ‘code quality’ with ‘verifiability’ and ‘agility’ in software development. I explain how these alternatives provide objective measures and practical benefits, driving impactful and adaptable projects. I outline the importance of solving meaningful problems, setting good requirements, and managing code effectively for agility while verifying impact through automation. Discover how pursuing correctness and code quality has been leading your team astray, and rediscover what truly matters for maximizing your impact on the world.00:00 Forget Correctness and Code Quality01:53 Start with Solving a Real World Problem05:05 Good Requirements07:21 Correctness vs Verifiability12:12 Quality vs Agility14:37 Lint Rant17:26 Agility and Code Debt22:15 Verifiability AND Agility25:51 OutroRelated:Forget “Code Quality” and “Correctness” — Verifiability and Agility are the True First Principles of Software Engineering Blog PostOrganic Modular Design Blog Post C&O Episode #39Embracing Software Agility Blog PostModular Testing - C&O Episode #38
39. Organic Modular Design
28:49||Season 1, Ep. 39Most software teams are drowning in complexity—but with your help, we can change that story.In my latest episode of Code and Optimism, I share a little-known secret: modular design, when done right, isn’t just for architects or the early stages of a project. It’s something every developer should be doing every day. I call it Organic Modular Design—a real-world approach where modules grow naturally as the code evolves.Here’s the kicker: if we’re not constantly maximizing modularity—from the project’s inception through the very last code edit—our project’s complexity will spiral out of control. But it doesn’t have to be this way. With a few key principles, we can stop the chaos and keep our codebase healthy and scalable.The payoff? Logarithmic complexity scaling instead of the quadratic-scaling mess that kills most projects. Curious? This episode might just change the way you code forever.As always, I don't claim to have all the answers. Anyone who says they do is either a fool or is selling something. For my part, I'm always trying to learn how to solve problems faster with software, and I'd love to learn with you. Send some feedback my way. Let's talk!Timestamps00:00 Introduction to Modular Design00:55 Organic Modular Design (OMD)02:12 The Modular Life Cycle02:49 DRY Principle and Function Modules04:43 File and Folder Modules07:46 Encapsulation and Interface17:07 Packaging Modules23:58 Conclusion and Key TakeawaysTool RecommendationsMonorepo tooling: @art-suite/monorepoRelated EpisodesE12: Complexity Fighting Super Powers https://youtu.be/cj81OhXpQCUE13: The 5 Essential Elements of Modular Software Design https://youtu.be/V_mOC8I86icRelated Blog post:The 5 Essential Elements of Modular Software Design https://medium.com/@shanebdavis/the-5-essential-elements-of-modular-software-design-6b333918e543
38. Modular Testing
26:35||Season 1, Ep. 38Why You Should Stop Doing Unit and Integration Testing - Embrace Modular Testing Instead!In this episode, I challenge conventional testing methods and present a new approach—modular testing. I argue against traditional unit, integration, and system end-to-end testing, highlighting their inefficiencies and complexities. Instead, I introduce modular testing, where the focus is on testing only the external API of a module. This method aligns with good modular design principles and significantly reduces test maintenance effort. By testing just the API, the process becomes simpler, more agile, and scalable. I provide insights into the five essential elements of modular design and discuss how modular testing can enhance overall software quality while keeping testing efforts manageable.00:00 Introduction to Automated Testing01:03 Standard Testing - A Review01:43 Unit Testing03:06 Integration Testing04:57 System Testing06:59 Modular Testing08:25 Modular Design Recap12:11 Benefits of Modular Testing16:30 Modular Testing IS Unit Testing, but better...18:40 Modular Testing IS Integration Testing, but better...22:46 System Testing? It's Modules All the Way Down...24:23 Conclusion and Final Thoughts25:48 OutroRelated C&O Episodes:E12 - Get Complexity-Fighting Super Powers with Modules https://youtu.be/cj81OhXpQCUE13 - The 5 Essential Elements of Modular Software Design https://youtu.be/V_mOC8I86ic
37. The Guiding Principle of Automated Testing
07:45||Season 1, Ep. 37Before we can get into the nuts and bolts about how to do automated testing well, we have to understand what it means to do testing well. And for that, we need a guiding principle. Automated testing, like so many aspects of solving problems with software, is a path of mastery. You can forever get better and better at it, and the magnitude of potential benefits are unbounded. However, it will be difficult to impossible to continually make progress without some guiding light showing us what way to go. A well constructed guiding principle can do exactly that for us. It provides a semi-objective way to assess progress and help make choices along the way.In this episode I synthesize the benefits we explored in the last episode with some observations about the essential nature of automated testing. From that I propose a guiding principle that should help us all agree on what is and is not good automated testing.Timestamps0:44 - definition1:17 - as proof2:23 - metacode3:00 - recap of benefits3:56 - The Guiding Principle5:28 - summary6:40 - next time7:08 - outroRelated C&O Episodes:E036 - Surprising Benefits of Automated Testing - https://youtu.be/pBNzAB45_Hc
36. 3 Surprising Benefits of Automated Testing
07:20||Season 1, Ep. 36I have a confession to make. I love automated testing. When done well, automated tests can help write better code, provide the best possible documentation, and most of all, automated testing can help write code faster:Code + Tests SOLVES PROBLEMS FASTERthan just CodeSeriously. And, when done well, writing and maintaining automated tests suites can actually be a lot of fun. After all, it’s a chance to get paid to play with your code…Timestamps0:19 - #1 Write better code1:43 - #2 Best form of Doc3:32 - #3 Accelerate your Code4:41 - Imikimi story - an cautionary tail6:00 - Recap6:13 - Why I Love writing tests…7:02 - OutroRelated C&O Episodes:E12 - Get Complexity-Fighting Super Powers with Modules https://youtu.be/cj81OhXpQCUE13 - The 5 Essential Elements of Modular Software Design https://youtu.be/V_mOC8I86ic
loading...