Software Engineering Practices
Fundamental software engineering practices that produce maintainable, testable, and evolvable codebases over the long term.
SOLID Principles
Single responsibility, open/closed, Liskov substitution, interface segregation, dependency inversion.
Design Patterns
GoF creational, structural, and behavioral patterns with modern applicability.
Domain-Driven Design
Bounded contexts, aggregates, entities, value objects, and the ubiquitous language.
DDD Tactical Patterns
Repositories, factories, domain events, and anti-corruption layers.
Test-Driven Development
Red-green-refactor cycle, test pyramid, and TDD as a design technique.
TDD & BDD
Test-driven and behavior-driven development compared, with tooling examples.
Refactoring Patterns
Extract method, move field, replace conditional with polymorphism, and strangler fig.
Refactoring Strategy
Planning and executing large-scale refactoring safely in production codebases.
Evolutionary Architecture
Building systems that can change safely — fitness functions and architectural fitness.
Clean Architecture
Dependency rule, use cases, entities, and adapters — decoupling business logic from infrastructure.
Technical Debt Management
Identifying, quantifying, and systematically addressing technical debt.
Code Review Practices
Effective code review — what to check, how to give feedback, and automation.
Code Review Standards
Establishing team standards for code quality, review turnaround, and automation gates.
API-First Development
Designing APIs before implementation using OpenAPI and contract-first workflows.
Documentation Architecture
Docs as code, architecture decision records, and keeping documentation useful.
Test Pyramids
Unit, integration, and end-to-end test proportions for reliable, fast test suites.
Integration Testing
Testing component interactions in isolation — contract tests, consumer-driven contracts.
Contract Testing
Consumer-driven contract testing with Pact for microservice API compatibility.
Dependency Management
Version pinning, lock files, vulnerability scanning, and upgrade strategies.