You’ll find never-ending advice on how to best build software. Books, articles, and talks provide infinite words of wisdom. Consider replacing their advice with one overriding mentality: Stop wasting the time of other developers.
- Inscrutable code and tests require other developers to expend ample additional time to analyze and understand.
- Poor system design demands more maintenance time to make changes.
- Insistence on working solo demands more time from other developers to come up to speed on your solution.
- Lack of tests forces others to spend considerable amounts of time learning what choices you made in the code.
- Inadequately tested code exudes countless defects. Defects waste the time of customers. The rework required to eliminate them shrinks your team’s available time to deliver new capabilities.
- Unnecessary dependencies of tests on slow code slows your tests down, requiring other developers to wait longer for an answer.
And so on. Each of these deficient approaches could be replaced with a better way of working that doesn’t waste everyone’s time. You can easily come up with more: What things do we do that cause our teammates, stakeholders, or users to grouse and grumble?
Code like you cared about other people. It’s easy to gauge whether or not you succeeded–just ask your teammates.