
Modular Code with Examples in C# - Ian Cooper - NDC London 2026
Keywords
Summary
181 words
Critical Evaluation
Value of the Information & Strength of the Argument
The talk provides valuable, actionable guidance on modularity, a topic often discussed abstractly. Cooper grounds his arguments in classic software engineering literature (Parnas, Myers, Ousterhout) and practical C# examples. He clearly explains concepts like information hiding, coupling, and deep vs. shallow modules, and demonstrates how to apply them in C# using assemblies and access modifiers. The argumentation is coherent and persuasive, though it relies on anecdotal experience rather than empirical evidence. The emphasis on testing the module’s public interface and avoiding coupling to implementation details is a strong, practical point. The discussion of modules vs. layers clarifies a common misconception. Overall, the talk offers substantial value for developers seeking to improve code maintainability.
Scientific Rigor, Source Quality, Title Accuracy
The talk references established sources: Glenford Myers (1978), David Parnas, and John Ousterhout’s ‘A Philosophy of Software Design’. These are credible and relevant. However, no specific URLs or citations are provided in the talk itself; the description only includes conference links. The title accurately reflects the content, focusing on modular code with C# examples. The talk is a practitioner’s perspective rather than a rigorous academic review, but it aligns with well-known principles. No comments were provided for analysis.
206 words
Title / Content Match
The title accurately reflects the content: the talk focuses on modular code with C# examples.
Quality & Reliability
8/10
The talk is based on established software engineering principles (Parnas, Myers, Ousterhout) and practical C# examples. The speaker is an experienced practitioner. However, it is an opinion/experience-based talk without formal citations or empirical data.
Key Moments
Markers derived by PSI from the transcript: the creator did not define chapters.
- Introduction and speaker background
- Why modularity matters: Myers quote and fundamental law
- Definition of modules and information hiding
- Deep vs shallow modules (Ousterhout)
- C# mechanisms: methods, classes, namespaces, assemblies
- Access modifiers and visibility control
- Testing and refactoring: test the public interface, not internals
- Modules vs layers: common misconceptions
- Slicing software into modules: Parnas principles
- Architectural styles: CQRS, ports & adapters, vertical slices
- Modular monoliths and macroservices
Cited Sources
- NDC Conferences — Conference organizer and talk source
- NDC London — Conference where the talk was recorded
Concurring Sources
- On the Criteria To Be Used in Decomposing Systems into Modules — Parnas's principles on modularity and information hiding
- A Philosophy of Software Design — Ousterhout's concepts of deep and shallow modules
Contribution & Novelties
The talk provides a practical, C#-specific approach to modularity, bridging classic principles with modern development practices. It offers concrete advice on using assemblies, access modifiers, and testing strategies to achieve information hiding and reduce coupling. The emphasis on testing the module’s public interface rather than internals is a valuable reminder for TDD practitioners. The talk also clarifies the distinction between modules and layers, a common source of confusion.
Pour aller plus loin :
- Information hiding — Core concept discussed in the talk.
- David Parnas’s paper ‘On the Criteria To Be Used in Decomposing Systems into Modules’ — Foundational work on modularity.
- A Philosophy of Software Design by John Ousterhout — Source for deep vs shallow modules.
- Assembly (computing) — Relevant to C# assemblies as modules.
125 words
Radar Profile
The radar profile shows high scores in information quantity, quality, and reliability, with a slightly lower technical level, indicating a talk that is informative and credible but not overly technical. The balance suggests a practical, experience-based presentation suitable for a broad developer audience.