Thursday, November 20, 2008

On Software Development Metrics

As software developers, we need to be careful with metrics. I think there is an understanding that it's possible to cause more harm than help with an ill-chosen approach to metrics. One of the concerns is metrics that are susceptible to gaming. To me, a concern at least as great as gaming is measuring the wrong things.

The primary opportunity for measuring the wrong thing is by measuring mechanisms instead of results. For example, measuring pairing is a measuring a mechanism. Measuring the degree of siloing is measuring a result. Measuring testing is measuring a mechanism. Measuring code quality, but better yet product quality is measuring a result. It's the results that we care about more than the mechanisms. The mechanisms are a means to an end, not the end in themselves.

It's critical to measure the result rather than the mechanism. The first reason for this is that it's less susceptible to gaming. Consider measuring the number of tests versus the number of support calls received. Certainly, both can be gamed. But it's far easier to artificially jack up the number of tests. The real desire is to produce a system of great quality, which is subjective. It's harder to measure these subjective things, but it's worth it.

The second reason is that if we measure mechanisms, we'll miss important components of producing a quality system. So, for example, tests are a mechanism that help us deliver quality systems, but not the only mechanism. What we really care about is the quality of the delivered product. What happens if we measure the desired results instead of the means to achieve that result? First, it's harder to measure, and the outcome is more subjective. But, by measuring that, we also indirectly measure all those little things that we do as developers to make sure we don't get those 2AM calls, such as perusing the code a bit before check-in, or being well-read on pitfalls and benefits of various patterns.

The third reason for measuring the result instead of the mechanism is that measuring mechanism creates a box to think in. To make a trivial example, if we take as a metric the number of JUnit tests, we'll never be free to consider alternatives. We'll always create JUnit tests, because that's what measured. When the next great thing comes along, we'll be slower to adopt it, since it's not what we're measuring. We're thinking in a box. If we're measuring results, we will be more inclined to adopt new techniques as they come along to the extent that they seem to provide a real contribution to product quality.

It's easier to measure mechanisms than results. The main reason for this is that mechanisms tend to be more quantifiable than subjective results. The ease of measuring mechanisms is why most companies do it this way, and remain mediocre. The rule of thumb is this: You'll get more of what you measure. If you want more of a certain technique, measure it, and you'll get more of it. If you want more product quality, measure that instead - whatever it takes - and you'll get more of that. When it comes down to brass tacks, you don't want more of certain mechanisms, you want better results.

Sunday, November 9, 2008

OT Middle Fork Trip Report - 11/1 to 11/2

This was my second hike on the OT, and my first solo hike of any length. I walked the Middle Fork section from the DD trailhead to Brushy Creek lodge, and it was beautiful weather. Surprised not to see more people out - you all missed a great weekend.

I left the DD trailhead at about 11 AM. Couldn't get down there earlier, unfortunately. Near the beginning of the walk I could hear an F15 overhead, and caught a few glimpses of it. He was doing some loops and rolls, as if he were training for a show or practicing evasive maneuvers. Not what I went in the woods to see, but pretty cool, nonetheless.

The trail is pleasant all the way, quite a few nice little creeks. Along this section it can be a ways between signs. There were a couple times where I might have wondered if I were still on the trail, except for how well-maintained it is. Most of the trail is shaded by woods, too, which is nice. There were a couple groups ahead of me, but never caught up to them enough to see them, just saw their shoe prints. Just before crossing the bridge at MF7, there was a little persimmon tree. A shake knocked a few off (if they drop from a shake, they're ripe), so I got to have a couple persimmons as a sweet treat on the trail. There were quite a few deer droppings along the trail, and they almost always had some persimmon seeds in them. Met Dan and Richard at the primitive camp there at MF7, and we chatted a bit. They saw a couple other groups on the trail.

I was planning to camp somewhere between MF8 and MF9, but there was about 2 hours of light left, so I pushed on, and ended up camping at the bottom of the hill by MF12. It was a little chilly down there, but I was warm enough to get some good sleep. This was my first night out after completing the net-tent part of my Ray-Way tarp. It's slippery sleeping on the net-tent floor, and I had just a slight incline, which meant a couple adjustments in the night.

Also new on this trip was my Cat Stove [url][/url], which worked pretty well. I had a simple menu. For each meal, I had some multi-grain pasta, some pre-cooked Bob Evans breakfast sausage, and some cheddar cheese. Fuel up the stove, pour in a cup of water (that's up to my first knuckle). Get the water boiling, then add the pasta, put the meat and cheese on top, cover and cook. Tasty and provides some good energy for the trail.

Second day I started out at first light, and headed up the hill at first light, warming up quickly. Continued to see tracks from people ahead of me on the trail, but the only other people I met was a group of four on horseback going the other way. They had seen someone out who was on his ninth day on the trail.

I like Middle Fork Section. I did a hike with a friend on the Highway 21 to Devil's Tollgate section in August, and that was pretty dry and rocky, with some pretty aggressive climbing. A nice hike, don't get me wrong, but a lot more work. :) By contrast, Middle Fork is gravelly but not rocky, has plenty of water, and gentle grades throughout. The last climb before descending to Brushy Creek takes you up about 300 feet, but it's gentle enough that it's not a killer. I cooked and ate lunch at the bottom after crossing the creek, and that gave me enough energy to complete the hike.

Remember not to drink the water at Strother Creek. Check the map and fill up with water before getting there. It's not a terribly long stretch without water, but just in case.

This was also my first hike after trading in my New Balance trail running shoes for my Chaco Redrock shoes. I definitely like the Chacos. They're heavier, but don't show any deterioration after 25 miles on the trail, like the NBs did.

The hike ended at 2PM at Brushy Creek, which looks like a nice place. Friendly folks, and all that. Rested there and waited for my ride to pick me up. All in all, a very, very nice hike. I highly recommend this section as a starter hike, too. You can start at DD, and there's a trailhead at 12 miles, 20 miles, and 25, so you can bug out early if you get in over your head. There are also numerous gravel road crossings, if it comes down to that.

Also note that cell phone coverage is very sparse out there, so it's a tenuous life-line, if that's what you're counting on.

if you're on Facebook, see the pictures here: