More Software Engineering Radio episodes

Milan Milanovic on the Laws of Software Engineering thumbnail

Milan Milanovic on the Laws of Software Engineering

Published 16 Sept 2026

Duration: 47:28

"Explores key software engineering principles (like Conway's Law, Brooks' Law) and their impact on systems, teams, and decision-making, emphasizing context-dependent trade-offs, AI's role, and practical applications like measuring technical debt."

Episode Description

Milan Milanovic, Microsoft MVP for Developer Technologies and author of the book, Laws of Software Engineering, joins host Giovanni Asproni for a conv...

Overview

The podcast discusses a collection of 56 core "laws" in software engineering - observed principles derived from experience and research - that reflect recurring patterns in systems, teams, and decision-making. These laws, such as Conway's Law, Brooks' Law, and the CAP Theorem, are not rigid rules but context-dependent guidelines that help diagnose problems and guide decisions. They originate from diverse fields like psychology, sociology, and distributed systems, highlighting the socio-technical nature of software development. The laws are organized into seven categories - such as architecture, team dynamics, time estimation, and cognitive biases - structured to reflect a logical chain of influence where early decisions constrain later outcomes.

A key focus is on applying these laws practically by identifying 3 to 5 relevant "forces" in a given situation and prioritizing them based on context, such as tight deadlines or team size. The podcast emphasizes that these laws often conflict - like the Ringelmann Effect (diminishing individual productivity in large teams) and the Bus Factor (needing redundancy) - requiring judgment to balance trade-offs. Despite advances in AI, the laws remain relevant because they address human behavior, coordination, and organizational structure rather than just technology. AI may increase coding speed but amplifies the risks of poor design and misaligned teams, making sound engineering principles and human oversight more critical than ever.

What If

  • What if you audited your current project for hidden complexity using Tesla's Law?

    • Move: Map all user-facing and internal components of your software, then identify where complexity is exposed vs. hidden. Re-architect one core module to shift complexity from the user interface into well-documented, maintainable backend logic.
    • Why Now?: AI accelerates development but amplifies poor design; catching complexity mismanagement early prevents technical debt that slows future AI-assisted iterations.
    • Expected Upside: Simpler UX increases user adoption, while contained internal complexity improves AI code generation accuracy and reduces bug density by up to 30% in targeted modules.
  • What if you measured technical debt weekly using Gilb's Law as a solo developer?

    • Move: Implement a lightweight tracking system (e.g., a spreadsheet or script) that logs code churn, test coverage drops, and documentation gaps each week. Prioritize fixing the top debt item every Friday.
    • Why Now?: Without measurement, debt accumulates invisibly - especially dangerous for solo operators who can't afford rework delays. Early quantification prevents burnout and project stall.
    • Expected Upside: Sustained code health enables faster feature delivery; reduces time spent debugging by 40%+ over 3 months and improves AI tool effectiveness on your codebase.
  • What if you applied Conway's Law to redesign your solo workflow with AI tools?

    • Move: Treat your AI assistant (e.g., Copilot, Cursor) as a "virtual team member" and restructure your code architecture to mirror this two-entity collaboration - modularize code into clear ownership zones (you own core logic, AI handles boilerplate).
    • Why Now?: AI changes communication patterns in development; aligning system structure with your actual workflow reduces integration friction and code rewrites.
    • Expected Upside: 25 - 50% increase in output quality and consistency, with fewer merge-style conflicts in logic and faster iteration cycles due to clearer separation of concerns.

Takeaway

  • Review and apply 3 - 5 relevant software engineering laws based on current project constraints (e.g., deadline, team size, quality) to guide decisions like scope reduction or architecture changes.
  • Measure technical debt using practical metrics such as code duplication, test coverage, and file touch frequency to prioritize refactoring and maintain long-term code health.
  • Design systems with intentional complexity distribution - shift complexity away from users when usability is critical, or expose it selectively for flexibility in APIs and developer tools.
  • Use the project management triangle (scope, time, quality) to explicitly negotiate trade-offs with stakeholders, especially under tight deadlines, rather than adding more people to a delayed project.
  • Leverage AI tools more effectively by maintaining modular, well-documented codebases and retaining human oversight to catch errors, ensure design coherence, and make final judgment calls.

Recent Episodes of Software Engineering Radio

9 Sept 2026 Owen McGirr on Software Accessibility

"Accessibility in software development must be prioritized from the start, integrating inclusive design practices like multiple input methods, proper labeling, and user testing to benefit all users, not just those with disabilities."

3 Sept 2026 Sahil Walia on Apache Iceberg

"Apache Iceberg is a scalable, interoperable data framework that unifies OLTP and OLAP workloads, separates storage and compute, and enables efficient metadata-driven operations, governance, and cost savings across industries."

26 Aug 2026 Vivek Yadav on Regression Testing Microservices

"Explores microservices testing strategies, behavioral consistency in migrations, payment system challenges, regression testing, historical data validation, testable architecture, Spark's role, and AI-driven code changes, emphasizing data privacy and business insights."

13 Aug 2026 SE Radio 733: Max Corbridge on Securing AI Agents

"Explores AI agent security risks, focusing on prompt injection vulnerabilities, non-deterministic threats, and the need for dynamic monitoring and proactive defenses against evolving AI-specific attacks."

More Software Engineering Radio episodes