Rules to Better Architecture and Code Review
- Do you evaluate the processes?
- Do you know how to choose the best software architecture for your system?
- Project setup - Do you know the importance of the initial developer experience?
- Do you review the Solution and Project names?
- Do you conduct an architecture review every few Sprints?
- Do you make awesome documentation?
- Do you have an awesome README?
- Do you use README templates?
- Do you have an Architecture Diagram?
- Do you document the technologies, design patterns and ALM processes?
- Do you know when to use the term SPIKE (Agile) or PoC (proof of concept)?”
- Do you look at the architecture of JavaScript projects?
- Do you generate dependency graphs?
- Do you know how to laser in on the smelliest code?
- Do you know the common Design Principles? (Part 1)
- Do you know the common Design Principles? (Part 2 - Example)
- Do you use unique DTOs per use case?
- Do you know the common Design Patterns?
- Do you use the Dependency Injection design pattern?
- Do you code against interfaces?
- Do you look for GRASP Patterns?
- Code - Can you read code down across?
- Do you start reading code?
- Do you use a ‘Precision Mocker’ like NSubstitute instead of a ‘Monster Mocker’ like Microsoft Fakes?
- Do you have opportunities to convert use Linq to entities?
- Do you look for opportunities to use Linq?
- Do you use the repository pattern for data access?
- Do you look for large strings in code?
- Do you decide on the level of the verboseness? E.g. ternary operators
- Do you review the code comments?
- Do you use the best Code Analysis tools?
- Do you use the best trace logging library?
- Do you look for Code Coverage?
- Do you use the Kent Beck philosophy?
- Do you know what a container is?
- Do you know the best dependency injection container?
- Do you know what to do about ASP.NET Core default dependency injection?
- Do you use subdomains instead of virtual directories?
- Do you use the best middle tier .NET libraries?
- Do you use the best Web UI libraries?
- Do you use your IOC container to Inject Dependencies – and not as a singleton container
- Do you know the importance of paying back Technical Debt?
- Do you practice the "Just Enough Refactoring" when adding new features?
- Do you use the Well-Architected Framework?
- Do you know to replace reflection with MEF?
- MEF: Do you know not to go overboard with dynamic dependencies?
- Do you know the different ways to modernize your application?
- Microservices - Do you break down your apps?
- Tech Debt - Do you avoid 'clever' code?
- Do you use Co-Creation Patterns?
- Do you use Co-Authored Commits?
- Project setup - Do you containerize your dev environment?
- Git - Do you know how to avoid large PRs?
- Pull Request - Do you do over the shoulder reviews?
- Do you use Architectural Decision Records (ADRs)?
- Do you use prefixes to improve code review communication?
- Do you use MassTransit to build reliable distributed applications?
- Do you know how to choose the right multi-tenancy model?