I’ve worked on several long term developer teams by now and I am noticing a specific pattern that stunts progress and slows development.
Call this phenomenon what you want, but here are some ideas:
- Unwritten rules
- Team norms
- Implicit agreements
- Developer culture / experience
These agreements often pertain to things that aren’t directly related to the functional requirements of your product. Sometimes it’s code style. Or even more elusive and amorphous ‘code quality’. A lot of them are about development practices that are not formally documented but are widely understood and followed within the team.
Until they aren’t.
how I think we should be tackling it
The common problems that end up eating time and efforts of teams of engineers are always centered on multitude of opinions, differences of priorities between people and teams, and most often are very arbitrary and personal.
I found that implementing a few mechanical checks - that is, programmatic - like formalized code standards, using custom cli wrappers for deployments and other tooling (see my example of a simple PR push script here) help tremendously. These practices reduce likelihood of misunderstandings, speed up development, and enhance the overall process. Happy devs, happy PMs, happy PMs, happy VPs, happy capitalism.