Software is a completive business. It’s not unlike a race. No runner who seriously wanted to win would enter a race with a 30 pound pack. In order to be a competitive athletes (or businesses) need to make sure they have as much gear as they need and no more. The ideal amount of equipment like running shoes and water bottles is something that comes with experience. Don’t make the mistake of tossing out things you really need, like your blood, in order to lighten the load.
Race to Win
In any competitive landscape it’s important to keep your eye on the prize. In software, that means having a strong customer focus. The problem comes when you get myopic about this focus. Just because the customer won’t directly touch, see or hear it doesn’t mean it’s not important or even vital. There are two things in software that are vital but still tempting to toss out. Just like the runner, they are really the life’s blood of the engineer effort and removing them will kill out chances of winning. The first is testing and the second is your automated infrastructure.
I have talked before about building your test automation on bedrock. You simply must have the things on that list up and running or you will be spending more time compensating than it would take to get them running in the first place.
Training and eating right
Athletes spend a lot of time training and focus on their diets. There is a cycle to the training as they approach a competition. Good software development teams also follow a cycle. They start with getting the engineering of their work process working well. All too often software teams think they can skip this stage. They think that the “getting in shape” phase of training isn’t needed. They should be able to jump in with both feet. Just like a marathon runner who decides the best way to train is to just start racing, they run out of steam early in the process. It’s not really possible to catch up. This is the point when teams start to try crazy things. Thinking they need to be lighter to catch up, they will do desperate things. Just like our runner friend who thinks letting out a couple quarts of blood with lighten them up, their efforts usually do more harm than good. Sometimes you have to start slow now to go fast later. Don’t enter a race with no training the night before.
Don’t be that team
You really want to be customer focused, so don’t stop with asking what the customer wants to touch, see and hear. Ask how well they want your product to run. Ask how deeply they expect it tested. Ask how smoothly they expect your process to run. Winning a race starts long before you wake up on race day. You don’t want to saddle yourself with needless bureaucracy. You don’t want to try and run a race without preparing or bringing vital equipment like your shoes. The worst teams end up entering the race with a 30 pound pack and no shoes. You don’t have to work hard to beat those guys. But if you want to run your best race and delight your customers, you have to find the balance and enter the race strong. Your strongest competitors already know this, you have to know it too.
The business bottom line
In order to run a strong race, you need to budget some effort to the “meta-work.” You have to accept the fact that 10% of your effort will be tithed to making your process powerful, lean and agile. Keeping all your best players and resources 100% focused on customer facing features is a recipe for disaster. Spending the time and money to make sure your tools are world class will go a long way towards making your product world class.