It&#x27;s easier to expand than contract. When the same decision is faced multiple times, it will be made multiple ways, and it&#x27;s very difficult to remove one of those options once it&#x27;s in use. On the other hand, if you remove the decision by standardizing on one of the options, you can always allow the other option later.<p>Working in Perl, I run into this a lot. When &#x27;there is more than one way to do it&#x27; is a driving principle, it&#x27;s easy to be inconsistent in usage and design. There&#x27;s a tradeoff here -- it&#x27;s easier to write code, because you can pretty much write your solution however it pops into your head. However, it&#x27;s harder to read and maintain, because you have to recognize many many different patterns of usage. When code has been around for awhile, it starts to get an eclectic mix of patterns blended together, which can be frustrating to run into when you&#x27;re trying to fix that code.<p>How do other people deal with this? Part of it is language choice, I&#x27;m sure. Large companies tend to use languages with less stylistic freedom, which helps teams write code more consistently. But within a given language, how do you balance freedom and consistency, so that people can understand each others&#x27; code effectively without being overly burdened by restrictions about how they can write code?