A couple of weeks ago, during a code retreat, I was pairing up to start a new coding session. As I wanted to write the first test, my partner said that I should avoid the word ‘should’ in my test names. I kindly nodded my head but the first thought that crossed my mind was: here we go again. As it appears, the word ‘should’ implies that my test might do something without any certainty that it will do something… Granted, it’s not wrong what I was told, still I was wondering: how much time and sometimes even money are developers wasting participating in these kind of über developer sensei discussions?
Don’t get me wrong, I find discussions about code intriguing and I love learning from my fellow developers. But… aren’t we sometimes pushing these kind of discussions into the ridicules? An industry as infantile as ours (not necessarily by age) should be worrying about larger problems.
It seems kind of trivial that this gets me going, but just think about how many times developers are wasting time and are overengineering their code because of silly discussions like these.
For example, take the one assert per test rule. How many evangelistic developers have I seen taking this rule to the extreme. Testing a simple 1 on 1 mapper property by property. And for what reason? Because there is a golden rule that tells you that you must do this or you're not writing clean code? Why not be more pragmatic? In many cases you have a beautiful set of testing tools! Use them to send messages to your test runner. Extend your tools to make life easier.
Extremism can be a good thing to! Take Robert C. Martin, he’s one of my favorite speakers and is my favorite writer. Yet, he is the Osama Bin Laden of clean code. I can’t imagine anyone taking it more to the extreme than him. In his case, good! We need magnets like these pulling developers away from the dark side of procedural spaghetti code. Just as long as these developers still have a mind of their own, and know that the only golden rule is that there isn’t a golden rule.
Strive for Perfection, Settle for Excellence.