I’m pretty refreshed lately. A lot of discussions about how things are, and should be, organized. Going through whole software lifecycle from product ideas or early effort estimates on one end and to maintenance issues on another. Once again the old truth is supported: there’s no silver bullet.
One particular thing sticks with me through all these discussions – you don’t need rules for every single thing you do.
Of course ‘no rules’ is probably worse than ‘too many rules’ so I don’t advise to live in anarchy. However we often go way too far in formalizing things. It’s not limited to so-called heavy-weight techniques. Agile is highly formalized methodology too although it differs on specific activities people exercise. We set up constrains to the point when they start limiting us instead of bringing a helping hand.
That’s why I appreciate work environments where rules are set and followed wisely. Each time people think “would it help us or not?” Whenever two approaches clash people consider whether it would be better to compromise on how team is working at the moment or it’s better to make an exception from the rule. Every now and then someone thinks which technique is already dead or not relevant anymore and throws it away.
You don’t need rules for everything as far as they’re set and maintained by reasonable people. If rule-setters aren’t reasonable your work environment is sick and it’s pretty likely it’s time to leave.