Bitesize software building blocks
In this articles series, I’ll attempt to share coding patterns & work habits that would help produce high-quality software for mid-size projects.
Target audience
A young startup's requirements change very rapidly. This has a direct impact on code stability. We are willing to risk quality issues in order to complete a feature rapidly. However, As the business matures, we are no longer willing to make such sacrifices.
As developers, we need to produce code that would serve the business needs.
It is a balance of code velocity vs quality.
I believe the concepts described here would serve well teams that wish to minimize such quality sacrifices while keeping a codebase that is production-ready, testable, flexible, and maintainable as it scales.
For small projects or short-living POC, some concepts here would be too strict.
For big enterprise requirements, some might would be too loose.
Articles
Each article would concisely describe a single idea or concept.
- Codebase health checks automation
- Result - encapsulate errors & failures handling
- Helpers - Small, pure, modular code blocks
- Encapsulate functionality in Services
- Internal dependencies injection
- Code quality via static typing — part 1
- Code quality via static typing — part 2
- Safely crossing modules' boundaries
- Repos - Managing DB interactions
- Use-cases - Encapsulate subdomains behavior
- Managing project structure with file naming conventions
- Managing code complexity
- Writing useful logs
- Generating meaningful coverage reports