Software Craft
Most code is read far more often than it is written. A function you write in ten minutes will be read by teammates, reviewers, on-call engineers, and your future self for years. Software craft is the set of habits that make that reading cheap: clear names, small units, honest abstractions, and a steady practice of improving code rather than letting it rot.
None of this is tied to a language or framework. The same principles apply to a Python script, a React component, and a Go service — which is why they get their own hub instead of being scattered across language pages.
TL;DR
- Optimize for the reader. Names, structure, and comments exist to make intent obvious.
- Keep units small and focused. One reason to change per function, class, or module.
- Use principles and patterns as vocabulary, not law. SOLID and design patterns help you talk about design; applying them everywhere creates ceremony.
- Review every change. Code review catches defects, spreads knowledge, and keeps standards consistent.
- Refactor continuously, in small safe steps, backed by tests.
- Track technical debt deliberately. Some debt is a good trade; unmanaged debt compounds.
How the Pieces Fit
Clean-code habits govern individual lines and functions. Design principles and patterns govern how units relate. Review is the checkpoint where a second person tests both. Refactoring and debt management are how a codebase keeps getting better after the first version ships.
Featured Topics
Writing Readable Code
- Clean Code & Best Practices — Naming, small functions, useful comments, and error handling that reads well
- Refactoring — Changing structure without changing behavior, safely and incrementally
Design Principles
- SOLID Principles — Five heuristics for object-oriented design and when to bend them
- Design Patterns — Creational, structural, and behavioral patterns as a shared vocabulary
Keeping Quality Over Time
- Code Review — What to look for, how to give feedback, and keeping reviews fast
- Technical Debt — Classifying debt, pricing it for the business, and paying it down
Which Practice Solves Which Problem
Common Mistakes
🚫 Pattern-first design — Reaching for a Factory or Strategy before there are two cases to abstract over. Wait for the second or third instance.
🚫 Big-bang rewrites — Replacing a working system wholesale instead of refactoring it in slices. Rewrites routinely take longer than planned and reintroduce fixed bugs.
🚫 Review as gatekeeping — Nitpicking style that a formatter should enforce, while missing logic and design problems. Automate style with linting and formatting.
🚫 Comments that restate the code — i++ // increment i adds noise. Comment why, not what.
🚫 Treating all debt as bad — Shipping a deliberate shortcut to hit a deadline can be the right call, as long as it's recorded and scheduled.
Learning Path
Beginner
Learn naming, function size, and formatting from Clean Code. Set up a formatter and linter so style is never a review topic. Read a few well-regarded open-source codebases.
Intermediate
Study SOLID and the most common design patterns. Practice small refactorings under test. Start reviewing teammates' code with a checklist.
Advanced
Lead review culture on your team, define what "done" means for quality, and build a technical debt register that product leadership actually reads.
Related Topics
- Testing — The safety net that makes refactoring possible
- Architecture — Design at the level of services and systems
- Developer Tools — Linters, formatters, and debuggers that enforce craft automatically
- Engineering Leadership — Building team habits around quality