Tuesday, March 23, 2010

Keeping the knives sharp

For most of my life, my dad ran a successful small business doing hardwood floors. He usually had no more than 4 employees since he thought quality started to suffer beyond that point. Throughout the 25+ years he ran the business, he never did any advertising yet was often booked for months in advance. Word of mouth and repeat customers kept things going strong until he decided to sell the business to a longtime employee and retire.

I was talking to my parents this weekend, and told them I was starting one of these "weblog" things on the "internet". We were discussing the cement cutting board metaphor, and I realized that my dad's business was one of the only places I've ever noticed an absence of cement cutting boards. The way we did things there made sense and were setup to make us do a better job and be more productive.

Talking it over with them, I realized that the biggest factor to preventing the cement cutting boards was that the person making the decisions had hands on time and was a real expert on the tasks we were doing. I couldn't have imagined hearing something like "Go ahead and use that dull sandpaper for a few more days, the new shipment isn't in yet" since the boss knew first hand how unproductive that would have been. The knives (and sandpaper) where kept sharp at all times.

I really can't emphasize this enough: The person making the decisions must be an expert in the domain.

Now, let's apply this to the fun, evolving, and often counterintuitive world that is software development. ManyMost of the things we do don't make sense to people that haven't spent time in the trenches. Think of these things from their perspective:

Unit tests..? You don't even deliver those!
Pair programming..? Two people doing one person's job?!
Behind schedule..? Add more people and work longer hours!

Programmers can't even fully understand those things unless they have experienced them first hand.

Even if the executives or project managers don't have expertise developing software, I would hope the business as a whole has people who do. Use those people! Embrace tools that make sense to the people using them, and don't be afraid to invest in your company. In software, these things often have huge returns on your investment. If a tool that costs $100, even $1000, can prevent one bug from reaching production it will have paid for itself many times over. Keep your developers' knives sharp!

To put it simply, if you can't explain how a good mock framework can cut down on test complexity and increase productivity, should you really be the one to decide whether it should be used?

No comments:

Post a Comment