Sure, these practices can help build a healthy engineering culture, and I agree with them all, especially collective manual testing.
How do you keep people from doing TDD though? How do you even know they are doing it?
How do you keep people from doing TDD though? How do you even know they are doing it?
I would say that the most successful teams i have been a part of focus not on automated testing but instead on other collective practices: informal code reviews, diff analysis of every commit, group discussion of database changes and collective manual testing of other's code. Many people point to the refactoring (or initial code organization) as a benefit of TDD. I find these other practices tend to inspire a more collective ownership of the system. Additionally, and more importantly, they spur a lot of conversation around how and why to organize code certain ways. These learning opportunities are probably the most valuable among young and growing teams.