Software-engineering Notes
Collection of software development notes related to software-engineering.
Code Quality Checks for LLM-Generated Code: The Missing Layer
Automated code quality tools need to evolve for the age of LLM code generation. Linters catch style and complexity, but the real quality gap is in module coupling, interface design, and dependency structure. Learn what existing tools miss and what a better approach looks like.
Domain-Driven Design: Defining and Enforcing Domain Invariants
A practical guide to making Domain-Driven Design work by defining domain invariants and enforcing them through code. Covers why most teams skip this step, how to design interfaces that prevent invalid states, and how to recognize when a codebase is truly following DDD.
Exceptions Should Be Exceptional: Error Handling Best Practices
Learn when to throw exceptions in Java and Kotlin and when to avoid them. Covers exceptions for unreliable code and unrecoverable cases, return-type-based error handling, and why business logic should never use exceptions for control flow.
Hexagonal Architecture for Testability: Imperative Shell, Functional Core
Stop fighting mock-heavy, brittle tests. Hexagonal Architecture separates business logic from databases and IO, and the Imperative Shell, Functional Core pattern makes that boundary explicit. Includes a concrete before-and-after example in Java.