Coding Blocks
by Allen Underwood, Michael Outlaw, Joe Zack · Various
Podcast (2013–2024) in which three working software engineers discuss design patterns, software architecture, object-oriented design, databases, performance and classic programming books in long conversational episodes. Listeners gain practical vocabulary and judgement for structuring maintainable code in any mainstream object-oriented language.
More resources on Software Engineering
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems
A rigorous, language-agnostic framework for troubleshooting complex system failures across both hardware and software.
Design Patterns: Elements of Reusable Object-Oriented Software
The catalogue that named the field: 23 patterns in creational, structural and behavioural groups, each with intent, applicability, structure, consequences and C++/Smalltalk sample code. After it you can recognise recurring object-oriented designs and discuss them in shared vocabulary.
highscalability.com
High Scalability is a tech blog offering in-depth articles and real-world case studies on building scalable distributed systems, with content on architecture patterns, performance tuning, scalability challenges, and deployment strategies.
refactoring.guru
Refactoring.guru is a comprehensive learning hub for software engineers focused on design patterns and refactoring, offering clear explanations, code examples in multiple languages, and visual diagrams. It covers the Gang of Four design patterns, refactoring techniques, and practical guidance for writing clean, maintainable code.
Software Engineering at Google
A free online book by Google engineers examining software engineering as programming sustained over time and by teams, covering culture, testing, code review, version control, and large-scale system design practices.
Clean Code Explained
Robert C. Martin's recorded lecture on Clean Code principles, using live coding examples to explain naming, functions, and structure choices that keep software readable and maintainable as it grows.