The Demise of Wave

September 1st, 2010

I had written up a long, comprehensive and timely set of thoughts about what went wrong with Google Wave, but WordPress ate it so you’ll have to take my word that it was awesome and instead put up with this rather late and significantly shorter thought.

There are lots of opinions around about why Wave failed, and they show that it was a combination of a lot of factors from poor UI, inexplicable purpose, unreliability and simply combining too many technologies that didn’t always fit (e.g. people don’t always want what they type to be shared immediately but real time collaboration was forced on them). Certainly I experienced most of those downsides, but the thing that really drove me crazy about Wave was it’s primitive support for notifications.

The people I was trying to follow on Wave were mostly on the other side of the world, so most of the time I wasn’t collaborating with them in real time, I was trying to come along afterward and keep up with the changes. Initially that meant logging into Wave and trawling through every wave to see if anything was new and later email notification widgets came in then built-in email notifications. Even with the email notifications though, it would tell me that something changed, but it was way too difficult to find out what changed. I’d have to log back into Wave and try to rewind and replay the activity in the wave, which meant living through all the intermittent changes and most of the time it just didn’t work at all.

What I really needed was a clearly highlighted diff included right in the email notification (or via RSS/Atom). I didn’t care how many different individual edits had been made, I just wanted to know what was different between the last time I saw the wave and now.

It’s not the first service I’ve seen suffer from the lack of notification problem – it’s a surprisingly common oversight, but it’s crucially important to success. If you lack good notifications you’re depending on the user seeing enough value on their very first visit to start coming back regularly so they see the changes and keep interacting with the system. With good notifications, users have a much better chance of seeing the value proposition because the system keeps reaching out to them with useful, valuable information. Just sending lots of email doesn’t work – that diminishes the value, it has to really give them an idea of what’s been changing.

The two best examples I’ve seen of this are Dopplr which has a million different ways to continuously view what’s going on without actually going to the site and Facebook which sends very effective email notifications, although the default settings are overly noisy for my tastes they have good controls to limit it to precisely what is useful. Twitter is also very good.

Advertising driven sites may make their money by increasing page views, but ultimately allowing users to keep up with what’s happening without coming to the site itself is a far more effective way to get them hooked on the service and keep them using it.

Coping with Bugs

February 28th, 2009

A little while back Charles Nutter posted about his progress at getting the JRuby bug list under control:

Roughly around September, we crossed an important threshold: 500 open bugs. They dated as far back as 2006 (we moved to Codehaus in 2006), and across the entire release sequence of JRuby; there were even some bug reports against pre-1.0 versions. From September until about mid-January, we worked to keep the number of open bugs below 500. Sometimes it would peek above, but we were generally successful.

About mid-January, I figured it was time to really bite the bullet, and I started walking from the oldest bug forward. It has been a long slog, but I'm making great progress.

Finding the right balance between new features and bug fixes is always really hard. The more experience I get the more I think it’s important to keep the known bug count low. There’s a surprisingly large cost to having bugs sit around unfixed in a bug reporter tool. Even if no one else finds the bug and calls support, each time you try and sort through the bug list to find something, to prioritize bugs or work on stuff you also have to trawl past that bug. As the number of bugs increases it gets more and more likely that they’ll get in the way and the more time you waste because of it.

It gets worse though. Having a lot of known bugs leads to a culture of not fixing bugs because it’s just one more bug so add it to the list.  Getting the count down is always too big a job so it keeps getting put off and the probably just keeps getting worse. If your competitive advantage is based on making users more productive or being easy to use, that’s a pretty disastrous situation because even small bugs dramatically affect the usability and productivity of software.

The right balance between features and bugs is going to be different for each time and each product. I think the key to finding the right balance lies in keeping the number of known issues relatively constant. If the bug count is increasing on average you’re eventually going to get too many bugs to handle and have to go on a fixing spree. A decreasing bug count certainly isn’t a bad sign, but if features aren’t being added fast enough to meet client demands you do still have a problem.

There’s not really a lot of flexibility in trying to keep the bug count stable though. If you’re under pressure to add features faster – how do you manage that without ignoring bugs? Short term there isn’t much you can do. Longer term the key is to reduce the number of bugs you’re adding. After all, if you add fewer bugs you don’t have to spend as much time fixing them and you can focus on features.

What I’m finding useful is the charts plugin for JIRA. I’ve added a couple of simple graphs to my dashboard. One shows the total number of open bugs over time and the other shows the number of bugs opens vs the number closed each month. Together they give a pretty clear indication of the quality trends for the product. It’s not perfect because the levels of testing and deployment isn’t constant throughout the life of a product so the influx of bugs and the amount of time spent on fixing obviously varies but looking at the month long view gives a surprisingly consistent view.

The Secret to Improving Documentation

December 12th, 2008

Believe it or not, it’s been almost exactly 2 years since I kicked off LiveWorks! as essentially a skunk-works project to get some of our internal experiments out into the open so they proved useful. As it turns out the bigger success has been the weekly hints and tips that we started adding a few months later. Unless one of the migrations has messed up the dates, the first tip was a simple overview of how to integrate EditLive! that Rob wrote. I still regularly refer people to that article.  Since then we’ve posted a new article every single week without fail.

The net result is that we have a huge collection of knowledge that’s built up, from common tasks to quite specific ways to customize and extend EditLive! It’s actually quite rare for me to resolve a support case without linking to a LiveWorks! article at least once. With the recent addition of a few video demos as well I’m finding it more and more common to put together a customized package of LiveWorks! links for new prospects as well.

What’s particularly amazing about this is that I refer people to the LiveWorks! articles far more often than I point them at our official documentation. We’ve been talking about reworking our official documentation for at least as long as LiveWorks! has been around but it always seems like such a huge project so we never do it.  This leads me to the secret of improving documentation: set up a regular schedule for making improvements and stick to it.  Whether you write a new article a week, review an existing article a week or add 3 good “See also” links each week you’ll wind up improving your documentation faster than if you constantly try to find time to fix it all at once.

The draw back is that it’s very hard to improve the discoverability of information gradually like this. LiveWorks! really needs a knowledge management expert to come in and make it easier to find what you want – I happen to have a pretty good memory for what’s there and know what to look for, but most people would find it far less useful.

Support Sells

November 29th, 2008

Antonio Cangiano:

In theory I could have been disappointed. After all, my visit didn’t fix the problem at hand, my expensive laptop seemed to be good as a door stopper, and repairing this thing could potentially be less advantageous than just buying a newer unit. Yet, as I arrived home, I told my wife that my next laptop would definitely be an Apple.

The reason for this is that I saw a genuine effort to help me out, an unheard level of care for the customer and an willingness to do what’s right, even if it costs the company some money. The whole experience was very positive and I felt that the premium cost of Apple’s products is easily justified by this kind of support.

The way you support your clients is a key part of any products and services your company provides. No matter how much you focus on quality, things will go wrong sometimes and your clients will have problems. Ironically, that’s your biggest chance to make them a fan for live because while people expect products to work all the time, they don’t expect support experiences to be much good. If you provide a great support experience, it surprises them and makes them notice.

Two examples I’ve had recently really confirm that.  The first was with one of Ephox’s clients who were experiencing a lot of crashes. It had reached the point where the authors were unable to do any work and the content migration had pretty much completely stopped – their project timeline was dead in the water. Thankfully, they were extremely patient and friendly people so even in such a stressful time were really good to work with and I made sure I dropped everything and worked whatever hours were required to solve their problems. Most importantly though, I gave them copious status updates to make sure they knew exactly what was going on and give them the information that their bosses were going to ask for. We’ve solved the major issues and are still working to clean up some more minor issues, but they’ve already offered to give us a reference.

The second case was with a Freecom Tough Drive I bought. It’s meant to be powered off the USB bus, but PowerBook G4s don’t supply enough power that way so the one I bought for my wife has sat in the drawer for quite a while. Recently though our regular backup drive failed so I really needed to get it working. Turns out they’ll ship you a free power adapter if you need it, you just have to email them. I did, and got a response within about 30 minutes to say the adapter would be in the mail asap. Needless to say, I’m seriously impressed and will be sticking with Freecom for any portable hard drives I need in the future.

It’s easy to think of support as a cost centre for your business and something that should be outsourced, but the reality is that it’s one of the best opportunities for impressing your clients, building great word of mouth and perhaps most importantly, getting real world feedback on your products so you can make them better in the future.

Deciding If Software Is Good

December 14th, 2007

Michael Krigsman sticks it to Nick Carr and includes an interesting assertion: that how good software is can be decided by how much revenue it drives:

Nick, please let the market decide whether enterprise software is “good” or not. There’s a simple metric for measuring this: it’s called revenue. Just for kicks, compare the revenue of enterprise companies, such SAP or Oracle, to consumer-oriented firms such as Twitter (click to follow me).

Interesting point, but wrong. The amount of revenue software drives is determined by a number of factors (go ask an economist for the full list), some of the really key ones in the enterprise vs consumer questions include:

  • The ability to pay of the target market. It doesn't matter how good the software is, if the customer only has $10 that's all they can pay for it.
  • The size of the market it targets. Brilliant software for a niche market will generate less revenue that average software for a big market.
  • The amount of and quality of competition. This is the really big point that Michael misses – if you are the only solution to a big problem for people who can afford to pay a lot, you will make money hand over fist almost regardless of how bad the software is.

A much better way of judging how good software is for a mature market, would be how much room there is for a new competitor. If someone can enter the market and solve the problem better than you they'll take away your customers and make money instead. Unfortunately, this is a particularly complex metric because you also have to factor in how rapidly the entire market is growing etc.

This of course leads us to the question, is the enterprise software arena ripe for an upstart with a far more sexy, usable product to come in and take a lot of market share? To a degree yes, but only if they can also solve the existing problems that are well served by enterprise software – support, scalability etc. All the things that the enterprise sales process currently focuses on.