It Takes a Community to Raise Great Software July 2, 2007Posted by Ian Clatworthy in Bazaar, Usability.
Last week, I outlined the criteria I felt were most important in Version Control software and focused on Adaptability. This week, I want to focus on #3 on that list – Usability. What aspects of usability really matter? How can we maximize the chances of building great software that users will love to use? These are important questions relevant to most software teams in my opinion.
Many teams makes the mistake of thinking that usability is primarily about ease of use. Other teams make fast performance their main focus and make compromises accordingly that hurt overall usability. Both ease of use and fast performance are important but the real key to usability is task efficiency.
In the end, users simply want to get things done. Ease of use is important because it lowers the time required to learn software. Easy to use software also assists users complete infrequent tasks (which can be most tasks for casual users). Performance is important because time is a precious commodity in our busy lives and every few minutes – even seconds – count, particularly for power users. However, focusing on these and forgetting task efficiency is a massive mistake, one so large that it almost cost the IT industry its credibility in the business world …
That might sound a bit melodramatic but it’s not too far from the truth. Personal computers took off in mid 80s because WordPerfect, Lotus 1-2-3 and dBase III let users do things far more efficiently than previous technology allowed. 10 years later though, the IT industry was looking like a crowd of charlatans and I was frankly ashamed to be part of it. Why? Because the IT marketing crowd had conned the world into spending mega billions of dollars on faster performance and ease of use. Yes, the computers were vastly better and Windows, Word, Excel and Access were easier to use than the applications they replaced, but the Return On Investment simply wasn’t there – it still took users just as long to churn out the same documents as before, albeit with more fonts than before. :-) It took the arrival of the Internet and the Wide Wide Web in particular to put the focus back where it needs to be: technology empowering people to get things done more efficiently. (If there was justice in the world, Tim Berners-Lee would be the richest man on the planet instead of Bill Gates.)
So what does all that have to do with version control tools? Quite a lot as it turns out. It means that investigating and selecting any one of the new breed of tools – Arch, Bazaar, darcs, Git, Mercurial, Monotone and SVK – is smart thinking because these tools can empower your team to work more efficiently. It also helps explain why I think choosing Bazaar in particular is a wise choice: its primary usability focus is task efficiency. I’m very pleased to be working hard right now on improving Bazaar performance because I want it to be faster than it is. I’m even happier though when I hear core team members stress that performance will not be improved at the expense of doing the right thing.
Make no mistake about it, good usability is hard. The most important rule is ensuring you have a rich domain model at the core – beauty is never skin deep. In this respect, I think Bazaar has got it right. For example, by correctly tracking renames and merges, I know Bazaar will help me get my work done faster. It simply doesn’t matter if it takes a few seconds longer to do a merge (say) than the competition, because every and now and then other tools might well cost me hours or days cleaning up problems caused by lack of proper semantic modeling. In the same spirit, every single message to the user matters because an unclear explanation about something can cost new users hours in lost time. In this regard, I feel Bazaar is below where I want it to be. Enter the Bazaar community: many of the patches submitted for Bazaar are improving this aspect of the product in every release. And that’s a common pattern with many software products because the core team are often too close to see ease of use issues clearly.
Returning to a broader context, there is a law of software every team should have on their wall …
For any piece of software, the secret to greatness is a great community.
This is well understood in the open source world but it applies equally to commercial software where a critical mass of users takes time. There is a wisdom in crowds that small teams simply cannot match. A good community ensures that ease of use, performance and task efficiency all get attention, with task efficiency ultimately getting the focus it deserves. In a very real sense, raising software is a lot like raising kids. It takes a community to raise great kids, even if they have the best parents on the planet. Project leaders, like parents, need to be loving, set direction and ground rules but it takes much more than that: it takes an extended family, neighbours, schools, etc., all providing different viewpoints and growth opportunities.
When I look to the future, I like what I see in the Version Control software world. Bazaar has great parents who got it right with respect to task efficiency and a rich domain model. But even more importantly, it has a great community behind it that is rapidly helping it mature in all the right ways. Other popular DVCS tools like Git and Mercurial are equally blessed, and all of these communities are learning from each other. If you’re looking for empowering technology to get software built faster, give DVCS a go. You’ll never go back to CVS or Subversion again and, with an adaptive approach, you’ll never need to to!