In my first post about what constitutes “good code,” I claimed we were dealing with a complex question. This is why I distrust short answers.
So many competing concerns must be balanced to achieve goodness:
- Testability
- Maintainability
- Short-term revenue pressures
- Long-term strategic value
- Performance (many aspects)
- Scalability (up, down, across)
- Ease of use
- Supportability
- Conceptual integrity
- Alignment with the skills, temperament, interests, and tools of the team that owns it
- Cost vs. benefit (for some problems, quick and dirty is definitely “right”)
- Simplicity (separation of concerns)
More items undoubtedly belong on the list. Quite a balancing act!
Action Item
Pick a module, application, or subsystem that you know well, and grade its code according to how much its coders emphasize a few different dimensions (e.g., performance, testability, scalability, ease of use). Do you like the balance? Are any attributes being neglected?
