How to kill the golden goose
Posted on May 14th, 2009 by Shane Gill – 9 CommentsThis week we launch NEM-Watch 8.2, an upgrade to our much loved market watching software. This upgrade was started in early 2008 while I was living in the UK and needed some extra cash to fund my global exploits. Armed with a laptop and VB6, I began NEM-Watch’s transformation from ugly duckling to swan. The 15 months that followed would be a roller-coaster ride providing some valuable life lessons and highlighting many of the do’s and don’ts of software development. It’s hard to make duck-lovers take to a swan.
I started at global-roam straight out of university, bright-eyed and ambitious cold and naked. Paul took me in, sat me in front of a computer and said “code”! A few months later and out pops NEM-Review 5. Then deSide. Then ez2view Australia. At this stage of the company’s life we were scrambling: 3 developers on 5 products, working to get the next sale so we could keep our heads above water. Stuffed in a closet borrowed from our good mates at roam consulting, I often told myself not to let the glamour of software development get to me. “You’re a rock star now”, I thought, “but try to keep it real.” Then one day I decided it was time for my world tour.
Overseas you learn things. In some countries, 10 minutes without rain is a drought. In some countries, a toilet bowl is a suggestion that anywhere in the vicinity is a good spot to lay cable. In some countries, you are poor if you only have one Ferrari. I learned a lot when I left the warm, nurturing closet that was global-roam and made my way into the big bad world. But as I explored the far reaches of the galaxy I began to change. I began to realise that life without a computer does things to you. Your wrists don’t crack when you wave goodbye. Your back straightens and you start to stand tall and proud. You start talking to perfect strangers and stop saying things like “owned”, “woot” and “fanboy”. I began to realise that I was becoming….normal! So I e-mailed Paul and got started on NEM-Watch.
NEM-Watch is getting old. So old that it was built in Visual Basic 6. It has had a handful of people work on it at different stages in it’s life, tacking on bits and pieces. It was a collage of code, more like the collage you made in grade 2 than Mario. My challenge was to glue more pieces on to the collage while carefully removing some of the ugly pieces and having it all in tact and ready to roll before I took off for Spain in June. If you’re playing along at home, that’s a 5 month schedule for a project that took 15 months. A 300% schedule slip. So, Shane… uh…. what the hell happened?
Picture this if you will.
It was the middle of summer, I was in the UK, and it was raining (hard to believe, I know).  I thought to myself: “Self, this rain sucks. You need to go somewhere sunny.” I had about a month off so I went to a travel agent and they made me an itinerary that saw me experiencing all that Spain, France and Italy had to offer. I jumped on a plane to Malaga in the south of Spain. Sun, here I come! Image the shock when I discovered that Malaga was full of poms. I had just escaped from the cider-sculling, rugby-smitten albinos to find that they were occupying Spain! “Bugger this place”, I muttered as I scratched my next Spanish destinations off of the itinerary. Vive la France!
Bordeaux was great except I had arrived a week ahead of schedule, having skipped the rest of Spain, and didn’t have any accommodation. I ended up in a shady hostel: noisy, dirty, expensive, cheese for pillows. It wasn’t long before I got sick of the stench of Camembert. I wanted to check out the French Riviera but wondered if it also reeked of cheese. I was really excited about the idea of seeing Italy and I could always come back to France, right? I hopped on the next train to Pisa.
Italy was everything I had imagined and more. The Sistine Chapel, David, Pantheon, Pompeii, Coliseum, Marco Polo… Pizza everywhere! After two weeks of exploring I felt that there was still more to see but I only had a week of vacation left and my credit card had taken a beating - shopping in Milan was costly. I couldn’t afford to go back to France but my goal was to experience much more than just Italy. What to do…
Birdsong and the refreshing scent of pines pulled me out of bed as I camped on the Slovenian country side. Ah, the great outdoors. This was just what I needed: a final relaxing week well within my budget and a new country to add to the list. Everyone would be amazed at my globe-trotting feats. I would show them the photos and they would gasp in awe and wonderment. “He has seen so much in so little time”, they would exclaim, “he must have rocket-boots!”.
I returned to the land of faggots and mash, my head held high, memories of my awesome adventure playing back in my mind. I couldn’t wait to brag. “Come hither wenches!”, I shouted at the top of my lungs.  They emerged from the shadows, weathered travellers with bespectacled eyes and corporate credit cards. I began my tale of travel and showed them where I had been. Only moments into my story I was interrupted.
“Wait, what the hell happened to Spain? You were supposed to go to Spain. I’m expecting Madrid, Barcelona. Hang on a sec, I’ve got a call…”
Uncomfortable silence.
“So uh, where was I? Oh yeah, and France? Who goes to Bordeaux? What about Paris, Nice? I love Paris and you’ve got nothing about Paris here… What’s going on? I can’t live without Paris!”
“But… Slovenia!”, I gasped.
“You can blow Slovenia right out your…”
I slammed the door behind me as I rushed out into the rain, tears pouring down my cheeks. I thought I had the best vacation in the world. How could they be so cruel?  I think I even heard someone snicker about the “Windows Vista of traveling”.
No, that’s not how I travel. But that was how I developed NEM-Watch 8.1. When travelling, I ask people who have travelled before where I should go. I make an itinerary based on their recommendations that will give me the best return on time and cost. I follow the plan, adjusting my budget and timeline as I go so that I will have the best chance possible to see everything. Maybe if I took some travel metaphors and applied them to developing NEM-Watch 8.2… 5 months later… oh, it works! Here are some actionable learning experiences from NEM-Watch:
Batching is dead
I used to jump from job to job, doing pieces of related jobs at the same time. If Job A and Job B require changes to Class 1 and Class 2, my plan of attack would have been Job A -> Class 1, Job B -> Class 1, Job A -> Class 2, Job B -> Class 2. Task switching is expensive and prone to errors. When the phone rings, interrupting your work, how long does it take you to remember what you were doing and resume working?
Takeaway: Do the whole job and then go on to the next one.
Iteration is king
By finishing the whole job you can start to iterate. In NEM-Watch 8.1, I faked iteration by dividing and conquering but only delivering half-finished features at the end of each iteration. Usually there were not-quite-done features from previous iterations, the current iteration and even future iterations! The key is to break the project into manageable pieces (2 weeks per iteration works for me) and then do each job in each iteration from start to finish. No skipping jobs, no jumping into future iterations or moving jobs you don’t like into far-distant iterations. At the end of each iteration you should have a product that you are comfortable releasing to market.
Takeaway: Divide the project into iterations. Make each iteration deployable.
Seek feedback
After 10 months we released NEM-Watch 8.1 and the feedback poured in. When the feedback pours in, it usually mean you have done something very right or done something very wrong. I did the latter and felt like I had just spent 10 months destroying NEM-Watch’s good reputation. If I had feedback earlier on, we would have saved months in wasted development time spent putting back features that people wanted and redoing the features that people didn’t like. In order to get feedback, you must have something to show people… like a complete iteration.
Takeaway: Seek feedback. Get it early and get lots of it.
So, there you have it. The story of NEM-Watch’s journey from v7 to v8. We are still waiting on feedback from NEM-Watch 8.2 so watch this space for updates. I have learned alot since the first piece of NEM-Watch 8 code written on a laptop in a kitchen somewhere in the Chew Valley. Maybe you can learn from my experience or let me know how we can avoid these kinds of software disasters in the future.
ps. global-roam doesn’t operate from a closet anymore.
[...] some customers started letting us know they were unhappy with our upgrade process to version 8 – which Shane has already discussed.
[...] has already noted, in his own inimitable style, how we goofed in the process of developing NEM-Watch v8.
[...] Some posts you might like: Book review: Getting Real How to kill the golden goose [...]
[...] 2)
[...] I tried to institute monthly iterations for NEM-Watch v8, but this was implemented poorly, as Shane has noted. [...]
[...] Shane noted with respect to the development of NEM-Watch 8, we screwed up, and caused clients unneeded angst, and ourselves unnecessary [...]
[...] We were doing a number of things wrong (actually, too many to list them all here). 1)
[...] Shane has alluded to, such noteworthiness is a double-edged sword.
Thanks for writing about this. There’s a mass of good tech information on the internet. You’ve got a lot of that info here on your website. I’m impressed - I try to keep a couple blogs pretty up-to-date, but it’s a struggle sometimes. You’ve done a great job with this one. How do you do it?