Never go Back for Seconds
I come from a small, blisteringly cold corner of Canada called Regina, Saskatchewan(Regina’s the city, Saskatchewan is the easy-to-draw-hard-to-spell province). The population hovers somewhere around 200,000 people, and the temperature fluctuates between -40 C in the winter and +35 C in the summer. That, coupled with the fact that we’re the capital city and thus the political center of the province, makes for a fairly interesting year-round climate. I’ve lived here for 2 years.
The first winter I lived here I experienced something remarkably annoying, something that flustered me so much I absolutely dread having to face it when it occurs. This something could literally ruin my day. This something is how the city handles heavy snow fall… or, rather, how they mismanage heavy snowfall. Essentially here’s what happens.
Day 1: Mother nature unleashes a fury of ill tempered wind and snow. You get cold feet and a runny nose, and then dread having to shovel your walk.
Day 2: You think about shoveling your walk, but get lazy. Coincidentally, the city feels the same way about plowing the streets.
Day 3: You shovel your walk and, if you’re responsible, you throw down either some salt or some sand so that the mail man doesn’t kill himself when he’s delivering the latest issue of the Sears Canada Catalog. The city sends out the plows.
Day 4: Your car slides uncontrollably out of control into oncoming traffic but, calling on the evasive maneuvering powers of Mr. Zulu you avoid catastrophe and regain control of your vessel.
Day 5: You repeat day 4 and thus decide it’s best to just walk everywhere.
Day 6: The city decides to throw down some salt or some sand so that its fine citizens don’t kill themselves when delivering themselves and their families to their destinations.
It’s Day 3 that drives me absolutely batty. The city always plows the streets on these big snow days, but in doing so they leave huge stretches of sheer ice. The roads will often be far worse afterwards than if they had simply left the loose snow. It usually takes the city a good couple more days before they unleash their army of dump trucks and spread sand on all the roads so that our cars actually have some traction and stop at red lights. What bothers me about this isn’t the fact that it’s so hard to drive, it’s that the city didn’t finish the job when they should have, and it makes my “user experience” one of pain, anxiety, and in the worst case scenario, fiscally expensive.
Why the city doesn’t dump sand immediately after plowing the streets is a mystery to me. They must be able to foresee the road conditions they’re creating when they plow, so why not do something about it? Why wait so long afterwards? It’s obvious that the people using the roads will require traction, so why not give them traction instead of making them wait in pain for it?
The software industry is chalk full of similar examples. For instance, at my previous job our flagship product was a retail Point-of-Sale system. One of my projects was to integrate the services provided by Flipswap directly into our product so that our customers (wireless retail stores) could increase their revenue for doing practically nothing. Sounds great (and it is – free money!), however, for our first release we didn’t include any reporting or ways of reconciling these types of transactions. This is an odd thing to do considering our flagship product’s claim to fame is the ability to track and reconcile practically everything in the world.
So we created a fantastic new revenue boosting feature that was counterproductive to the main philosophical objectives of the product – the same philosophical objectives that our customers bought into - with the intention that we would introduce the missing functionality “in the future”. Of course, when it comes to software, the words “we’ll do it later” are 4 of the deadliest words you can utter, as “later” can be months or even years down the road, if ever. For us it was about 6 months later, and like any new feature there were bugs and it was far from perfect. However we spent the time to get things fixed up, and the reporting features are now reliable and stable… 14 months after the original feature set was released.
The need for reconciliation and revenue reporting for this new feature was easily foreseeable, but we frustrated our customers with a complete lack of it for 6 months, and then frustrated them more by unleashing a somewhat mediocre implementation. It’s just like the city waiting 2 days to plow my street, then waiting 2 more days before sanding those streets such that the things are actually usable. We - the people responsible for developing software (and I’m not talking about just developers) need to perform our due diligence and examine what problems our new features will introduce to the user, and then make the appropriate changes such that those problems will not exist. We want to enable and empower our customers, not hinder them. We want to make a natural extension of their business that allows them to do their jobs faster and better. We want to automate a process, not digitize a process. So when we address the buffet table of options, lets not just load up our plates and choke back what we have and then go back for seconds. Lets take a good hard look at what we want and need right off the bat and get it all in one serving.