What building a shed teaches you about testing
For the last couple weekends I’ve been building a garden shed in the back corner of my yard to move ‘backyard things’ from the garage and into the backyard where they belong. (To make room for the yet to be purchased dirt bike :)) The hitch in the plan is that the corner where the shed is going is quite sloped so I’ve had to build a platform for it to sit on.
Building things that are attached to the group in places where the ground freezes involves one of two processes. The first is getting a hole digger and some concrete and putting it below the frost line. That works well if you have a hitch on your car and don’t have firewood stacked up in the walkway from the driveway to the yard. The other way is to use 4′ metal stakes which you bash into the ground. I chose the bashing route.
There are two styles of stake you can get. The first is a single piece, and the other is 2 pieces and allows the part that holds the 4 x 4 to pivot side-to-side and around 360 degrees. I chose the pivoting model because I didn’t trust my ability to bash them in perfect alignment. Seemed a reasonable choice at the time.
While this is all interesting, what does it do to testing?
Because I had an option between something that allowed a bit more configuration over something that did one specific thing in a specific way, I went for configuration. The problem is, that this extra bit of configuration weakened the structure of the stake and through the course of bashing it into the ground, the stake bent and flattened around the pivot bolt. This means that not only does it not pivot anymore, but it is stuck at whatever angle it ended up at. Oh, and I paid extra for this functionality.
Still not seeing where this is going?
If your application has extra configurability (sometimes called ‘advanced features’) which allow your users to shoot themselves in the foot or makes it less stable, you should question whether if it should actually be there. I would so so far as to say that extra functionality which makes something less usable, stable, valuable should be labeled as a bug and removed.