In April I walked many kilometers in Paris. After quite a few days of walking, sipping coffee and practicing my terrible French, I read a fascinating article on the problems we cause ourselves by wearing shoes with padding in the heels (I'm oversimplifying; feel free to read the article
yourself). The padding insulates us from our repeated impacts, and we can't feel
how we're walking. The article claims that this slowly damages our joints, doing the most harm to knees and hips.
So I bought a pair of Vibram Five Fingers
'shoes' (and I use the term loosely). They have changed my gait dramatically, because it hurts
to slam my heel into the ground with no padding. I've had to learn how to walk smoothly, to pay attention to my gait, to be a more functional animal. Changing the way I walk has changed the way I stand; My sister-in-law flew in today, and she said that she thinks I've lost weight. Unfortunately, I have evidence that my weight hasn't changed since I saw her last; I believe it's the improvement in my posture that gives the illusion of fitness.
What does this have to do with tech stuff? I'm glad you asked.
I'm starting to lay the groundwork for an updated version of a Rails-based site I built to incorporate some critical features like support for multiple companies, background process instead of spinners that make the user wait too long, and an 'a la carte' feature selection system. About 75% of the old code is probably good enough to keep, with the necessary modifications. How can I improve my app's posture so it can go longer without hip replacement surgery? So that it appears to have lost weight while still supporting the new features?
I think my app's biggest weakness is that I don't have nearly enough tests. This gives the illusion of solid, bug-free code by insulating me from the areas where the code doesn't exactly match my original intention, while providing many points of potential failure (if it hasn't been tested, it is a potential failure point). So I'm trying RSpec
. For now, I'm being disciplined (retentive?) about writing specs, and looking into using stories for the the first layer of user level tests.
Is it working? I can't say, yet. But it sure feels better!
Does this analogy hold up? What is 'good posture' for code, or for a coder? I'm still working on it...