The Right Way.

Lately I find myself fighting the battle people often associated with Eastern/Western religions or philosophical ideologies: finding The Right Way. Easy as it is to suck oneself into the theory and philosophy of the varied belief structures surrounding The Right Way, that's not what I'm talking about here.

No, for me The Right Way creeps into everyday life. Over and over and over. Every day, in fact. (This is where I wink at you.) It becomes a bit of a concern, as one hopes to gain insight into a discipline and shower that insight over fellow craftspeople once The Right Way reveals itself. The problem with this scenario is the inevitable failure of our ability to assess when The Right Way has truly made itself known.

We are smart, though. We know! We can feel it. Can't we? What is this feeling I get when test-driving my code first feels right? How could I ever disregard the advice of senior developers I respect and admire? I must continue this way. It is the only way that has ever felt true and good.

Until there is another way, of course. And then, in an instant that same feeling of overwhelming joy washes over me as I discover something new or something I previously thought impossible. It's there! It's real! And now I know... THIS must be it. Whatever it was before was good. But this is better. TDD? No, BDD! But what's that, up ahead? It's glowing orange and it's beautiful and mysterious and intriguing. I must touch it.

And, just like that, a new door is opened. And although the doors I've walked through still seem attractive, I suddenly have a new path that cannot possibly be wrong. One true gospel. One true leader on the other side of the door. NDD will always guide me; I shall not waver.

Do I mock? Do I stub? State? Behavior? Filesystem? Database? Network? UI? How many layers? How thick? How complicated? Which dependencies? How hard is too hard? When have I found God? Do I test more or less vigorously as I grow older and more experienced? How do I test in Haskel? How do I test in C? Do I really need these tests? If I'm writing the tests because my code is fallible and my code is fallible because I am fallible, are my tests not fallible? Who am I?

Testivus has the answers you seek.

Next week it will be something else. Worry not, gentle friend. Nothing is static here. Every year you shall look back onto the last and wonder how you could have been so naive, so sloppy. You are God's perfect robot, a learning machine. You will always grow and always find something new. Unless. Unless! Unless the only thing static is change! Yes, that must be it. Whew. Let us thank our new God, for we are saved.

No comments: