[Imported from Tumblr]
Not Maintained: This blog post is here for historical purposes and is no longer maintained.

Why is it we can’t just agree on a pattern to use when programming and get everything done already?

The fact is that while language level stylistic differences are very easy to agree on, the patterns in which you use the tools provided by the language emerge proportional to the size of the system.

So you can come to a new pattern, agree on it, come to the next, agree on it, etc… but there will always be more patterns.

Okay well, we can’t agree on patterns, at least we can agree on philosophies for coming up with new patterns?

The problem here is like my nuggets of wisdom philosophies for creating new patterns conflict with each other and have tradeoffs.

Sometimes you end up writing code to do something your code base already does elsewhere in a different way. Because we are giving names to structures we can’t see or touch, it can be difficult to be sure code is doing what you think.

In contrast, sometimes you have a hammer and everything looks like a nail. You use the same pattern to implement something in another place and then realize you jammed a square peg in a round hole.