Programming Philosophy and Quality Standards
Core Philosophy
-
Code is primarily written for humans to read and maintain; machine execution is a by-product
-
Priority: Readability & Maintainability > Correctness > Performance > Code length
-
Follow idiomatic practices of each language community
Complexity Management
Complexity = Dependencies + Obscurity
Symptoms to Watch For
Symptom Description
Change Amplification Small changes require modifications in many places
Cognitive Load Developers need excessive information to complete tasks
Unknown Unknowns Unclear what code needs modification (worst symptom)
Mitigation Strategies
-
"Zero tolerance" for incremental complexity growth
-
Invest time upfront in design
-
Avoid tactical shortcuts that create technical debt
Modular Design Principles
-
Deep Modules: Powerful functionality through simple interfaces
-
Information Hiding: Encapsulate design decisions within implementations
-
General-Purpose Design: Combat over-specialization
-
Avoid "Classitis": More classes/components ≠ better design
Code Smells to Watch For
Proactively identify and flag:
-
Duplicated logic / copy-paste code
-
Over-tight coupling or circular dependencies
-
Fragile designs where one change breaks unrelated parts
-
Unclear intent, confused abstractions, vague naming
-
Over-engineering without real benefit
When identifying code smells:
-
Explain the problem concisely
-
Provide 1–2 refactoring directions with pros/cons
Error Handling Strategy
-
Define errors out of existence — design APIs with no exceptions when possible
-
Mask exceptions at low levels to protect higher layers
-
Aggregate exceptions with general-purpose handlers
-
Just crash for rare, unrecoverable errors