When trying to improve, measure, or change something, nothing is more important than a reliable feedback loop. Being able to measure your progress, improvement, or whatever is a key part of knowing if your actions ultimately lead to the results that you want.
One bit of advice that I regularly stumble upon is to set measurable, small goals and milestones. When put into the context of feedback loops, it makes tremendous sense: small goals can be more easily attained, which in turn could provide positive reinforcement in achieving grander and grander goals.
“When you can measure what you are speaking about, and express it in numbers, you know something about it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarely, in your thoughts advanced to the stage of science.”Lord Kelvin
Besides the value in measuring change when trying to improve oneself, they’re equally important in programming. I’ve realized how important strong feedback loops are while doing some late-night debugging. One of my colleagues swears by logging everything in this application we’ve recently been developing so that we can easily re-trace the execution paths. While some parts of the logging system are (in my opinion) overly noisy, many of the metrics that we were able to track has led us to identifying differences from new changes with relative ease. The abundance of information allows us to set base lines for performance, and measure the impact of our changes in a meaningful way.
I tend to dismiss the small goals as real goals. Sometimes they don’t feel like they matter; as though even upon reaching it, nothing has really changed. Maybe it’s just a psychological trick in order to feel some sort of satisfaction in what we’ve done; a self-reassurance that what we’re doing is meaningful and will ultimately lead us towards the results that we want to see. I guess it’s something that’s easy to underestimate.