January 9, 2011

Bug 578967 in Mozilla’s public issue tracker is an issue that’s caught my attention recently. It’s a controversial issue with over 160 comments and over 50 participants. So why so contentious?

The issue is a task to remove a RSS icon from the top-level navigation in the upcoming Firefox 4 release. What exactly are we talking about? I’m referring to this:

Why? To simplify the UI.

As I read through the issue, I found myself relating a lot of the discussion back to similar situations I’d experienced recently. So I thought I’d break down different parts of the conversation happening on issue and relate it to several things I’ve learnt over the last year in product management. For some background, you might want to read the first few comments on the issue.

1. Take yourself out of the discussion and think of the customer

“…I use the button myself as a convenient shortcut (just so you don’t think I’m
any kind of RSS hater, but it’s hard to justify the prominent placement it
currently has…” – Alexander Limi

This is a hard thing to do. You might often hear yourself or your colleagues say “I would use this!” – but the real question you need to ask yourself is – would most of your customers? When looking at making a product decision remove your opinion out of the discussion and put the customer hat on.

2. Achieving simplicity will mean you have to say no

“…You have a compelling argument, the problem is that while this move would
simplify the UI for the lowest common denominator (which is frequently a good
thing) it would drastically reduce discoverability for feeds support…” – David Garrett

This whole debate is a result of a request to simplify the user interface of Firefox. Less is more. Doing this isn’t easy, at all.

Every customer wants to take your product in a different direction. Every direction has a different experience and purpose. Design by committee doesn’t work. The only way you will be able to achieve the simplicity you desire is if you say no. How do you say no? Well, you can’t really say no with confidence unless you have a vision for the product.

3. There will always be a vocal group of users

“…Your usage metrics aren’t accurate.. I use the icon as a visual reference to rss feeds.. yet I don’t click on the icon.. I didn’t know it was a button. RSS technology is still unknown by most users.. removing the icon isn’t going to help people learn about it.. it will just kill it.. this was a very stupid
move. Please bring back the icon!!! Why go backwards? I know votes don’t mean much to you folks, but there are more votes to keep the button than to remove it.. check out the user comments on the Mozillazine forum and on the Firefox 4 Beta forum.. not one user wants to get rid of the icon, but all want to keep. Why don’t you listen to the users?…” – jcspence74

I applaud Mozilla for such a public issue tracker. At my current work we do the same thing – and it’s a hard thing to do. A big part of having such a large customer base is recognising that you will always have a vocal set of users. The difficult part of your job is working out if the feedback you are receiving from vocal users is valid and if it’s a true representation of the majority of your customers.

Using data to make decisions is a helpful way to go about doing this…(next point)

4. Data driven decisions

We’re moving a lot of new functionality to this area with the Stop/Reload/Go
combination, so we should get RSS out of the way. It’s one of the lowest-used button in our entire UI, even among our power users (beta users that supply the test pilot data), with only 3% of users *ever* clicking it even once during the test period: https://heatmap.mozillalabs.com – Alexander Limi

Mozilla are capturing comprehensive stats, with several studies conducted during the Firefox 4 beta. These stats are produced as a heatmap overlay a browser. One of the studies from earlier this year showed that a small percentage (~7%) of users actually clicked the icon. The latest study showed only 3% usage.

Where possible, use data to drive and validate decision making. However, the biggest challenge you have here is making sure you aren’t solely making decisions on user metrics. It’s equally important to consider how user experience can change behaviors rather than relying on existing patterns.

5. Focus on the majority
So here is the counter-argument to the previous point:

“…Even if we’re only talking 5-10% of the Firefox user-base caring about this button, that translates to tens of millions of people…” – David Garett

It’s very easy to say we should focus on the majority. It’s something else to do something about it.

“We simply have to design for mainstream users if we are going to survive in this increasingly competitive marketplace. Everyone seems extremely interested in their own personal usage, and being informed well enough in advance of a otherwise pretty minor modification so that they can riot and attempt to
prevent any type of change… We’re designing a product for 400 million people. This bug could contain a million comments calling us stupid and it still wouldn’t change our desire to create a product targeting mainstream users.” – Alex Faaborg

Well said.

6. Speed, speed, speed
You have a large customer base and you have lots of data. Most would think that should make it easier to make decisions… Right? Wrong! You can spend forever debating these things – make sure you don’t! An amusing comment on this issue:

“If we hurry we can still beat the release of Duke Nukem Forever as well!” – Alex Faaborg

It’s okay to disagree. In fact, it’s probably a good sign that you have people disagreeing – you have a good balance of people working on the project. However, you must make sure you don’t go on debating these issues for long periods of time. Before you know it, you’ll be behind the competition.

Figure out the implications of making a wrong decision – financial, technical costs, customer experience etc… From there, work out how much risk there is in making the wrong decision. Once you have done that you’ll be in a good position to understand how much time is too much time wasted on debating the issue.

In this specific example, getting the decision wrong isn’t the end of the World. RSS isn’t dead. This won’t kill RSS. It would be very easy to bring back the RSS icon if you got the decision wrong. So, work it out: Is 160 comments over a period of five months worth the debate? No, it isn’t.

Make a decision, move on.

7. No, not another setting

“…A different compromise might be to only show a feed icon as needed if a user
has at least once used the feed system beyond the default. After which point it would have it as an easily user configurable option of some kind. (though I’m apparently only coming up with this now, and it’ll be burred in the new deluge of panic)… I would prefer some kind of an in-GUI option or an about:config option for this
too, but it doesn’t look like we’re going that route right now…” – David Garrett

Please, don’t get me wrong. I’m all for settings – where settings are needed. This problem relates to a previous point I made. Generally speaking, software with lots of ‘optional settings’ is usually evidence that it isn’t catering for the majority of our customers. There is no clear direction and vision for the product. The end-result? Option and configuration bloat. Consoles with hundreds of check boxes and radio buttons. A poor user experience.

I once heard a quote that was along the lines of “For every 20 users I’ll make unhappy, I’ll make another 80 users happy” (couldn’t find where this quote was from).

8. Don’t be driven by your competition

> Those sites are going to have some issues with users on chrome and apparently
> IE9 as well.
Meh… If IE9 completely does away with this in the top-level GUI then I
reluctantly agree we may need to consider it too. (though I’d still rather not) – David Garrett

Don’t let decision making be driven by your competition. This is hard to do, because you can often play it safe by simply “seeing what the others are doing”. Whilst it may sometimes be a safe bet (assuming your competition has it right), it often is a great way to kill innovation and not produce anything of any differentiation.

Conclusion?
Removing features is incredibly hard. It’s extremely easy to add new functionality to your product – however, we don’t often stop and think of the (long term) implications of this. If removing features difficult to do, then, we should, equally, put as much effort into deciding what new functionality we want to add.

April 25, 2010

I’ve always been struggling in my head with the whole ‘release early, release often’ VS ‘release when the product is decent enough’ debate. There are advantages and disadvantages for both methods, but I never took a step back to really think of the the problem product owners or founders are trying to solve when considering this.

I recently came across a talk by Drew Houston, founder and CEO of Dropbox. In this talk, one of the points Houston brings up is this exact question. When do I release my product?

Release early, release often VS Release when it doesn’t suck

Houston suggests that maybe the wrong question is being asked here. We need to take a step back and understand why one would want to do this in the first place? Feedback – we want to do this to get feedback as quick as possible so that we can validate our product before over-investing in a particular direction.

So if our purpose is to listen, validate and adapt – then what we are trying to do here is to:

Learn early and learn often

If we are trying to build products which customers want we need to learn early and learn frequently from them. The question around when to ship becomes becomes a bit irrelevant if what you are trying to do is learn. What product owners or founders really need to be asking is when do I have something that is enough for me to learn about my target audience?

For Dropbox, the output of their Minimum Viable Product (MVP) wasn’t a prototype or a limited demo account. Their MVP was presented in a video. A simple screencast. This video provided enough information to get feedback from their target audience. It allowed them to learn early, and learn often. This screencast was posted on Hacker News and almost instantly, it began to receive inputs from the outside world feedback into the product. Dropbox didn’t actually ship until after the first 18 months – the screencast they had was sufficient enough to enable them to learn from their users.

If what you have is enough to enable you to learn, gather feedback and validate your ideas with users, why worry about when to release? Show someone! You’re ready to gather feedback!

February 13, 2010

I’ve been thinking about how important the retweet feature is for Twitter. I’ve concluded that ‘Retweet’ is as important to Twitter as Google’s PageRank algorithm is important to Google.

PageRank
The Google PageRank algorithm allows Google to efficiently order search engine results in order to provide the most relevant, accurate site for your search from a reliable source. A PageRank value is assigned to a webpage based on it’s relevance (through some form of content analysis) and it’s reliability. How does Google know the site is a reliable source? From what we know, it estimates this value through a wide variety of factors:

Who links to the site

How many people link to the site

How official is the site (eg is it a .gov? or have some sort of reputable status?)

How many people go to the site

.. and a whole bunch of other stuff

Factoring in all these elements and more, Google produces a PageRank value for each site. PageRank has become critical to Google’s business. It’s what differentiates Google from other search engines. It has become Google’s bread and butter on which they have built their business on top of.

So what’s this got to do with a retweet?
Here is the problem with Twitter: How do I know a tweet is accurate, reliable and is from who it says it’s from?

Twitter is still working through all those issues. For example, they have been trying to tackle fake accounts by introducing verified accounts. Spam continues on, and the security issues of Twitter aren’t helping either. So what’s the answer?

Crowd-source your problem
You see, Twitter can’t just use the total amount of followers as a way of identifying useful and reputable content on Twitter. Twitter’s retweet feature allows them to crowd-source their problem. In a sense, they are allowing everyone contribute in the quest of identifying quality and helpful information on Twitter. If you retweet something from someone you follow, you are acknowledging their validity. If one of your followers retweeted you, it would have the same effect. In ‘PageRank terms’ this could have the same effect as linking to your site.

A Twitter PageRank Algorithm?
If Twitter were to have an equivalent algorithm it could involve a mix of the following elements:

How many people retweet a user (a high weighting could be placed on this)

How many people send a user @Replies

How many people follow a user (a lower weighting)

How many lists a user appears on

How many people favorite (or ‘star’) a users Tweets

The consequences of Twitter’s efforts on the retweet feature and API are twofold:

Users are able to find reputable, quality and useful Tweets

Twitter begins to identify the influencers and trend-setters

The first point above ensures more and more users stay on Twitter’s microblogging platform – which is critical for Twitters success. Secondly, identifying influencers presents a huge monotization opportunity for Twitter… but that’s another blog-post!

September 21, 2009

Let’s briefly look at how you can integrate a Google Calendar with your next PHP application.

If you take a quick look at the Google Calendar API, there is quite a bit of code that you will need to write in order to get your application authenticating with Google services. Once you have authenticated, you then need to write some further code to pull data in and out of Google Calender.

The good news is the guys at Zend have already written a whole stash of wrapper classes called Zend_Gdata. These classes provide you with a PHP 5 client interface for all the Google Data APIs. To make it even nicer, its available as a component to download standalone and use within your application, instead of having to use the a full-stack framework.

August 26, 2009

I was wrong about FriendFeed A couple of weeks a go I was having a chat to a friend about FriendFeed. I’m a big fan of FriendFeed (see somepreviousposts) and think it does a good job at helping you solve a problem of being able to manage and follow multiple online social profiles at once. Not only that, but it’s semi-recent upgrade with direct messaging and real time search updates made it an even better Twitter alternative. It has all the ‘Microblogging’ features Twitter has to offer and a whole lot more. I would also argue its better written, with some great brains behind it. It doesn’t take a genius to work out that using a remote key (or better known as an API Key) for third-party apps accessing your account using an API. Still today I cringe at every single Twitter-based site/service I use that asks me for my Twitter username and password (Although, I must say Twitter’s recent implementation of OAuth has been great to see).

In saying all this, I wasn’t chatting to my friend about how good FriendFeed was, but rather how I thought that FriendFeed needed to re-invent itself.

When you look at the stuff Opera browser is coming out with, you sometimes wonder why it hasn’t got a bigger following.

Now I’m not going to pretend I’m an expert as to why FriendFeed couldn’t break past the early tech-adopters stage – because I don’t. I’ve read lots about people saying timing had a lot to do with it. There has been lots of suggestions saying FriendFeed’s time-to-market was much earlier then when it was actually needed. Others have said that its all because of the critical mass of Facebook and other social networks that FriendFeed never got a critical-mass following.

Well lets put all these thoughts aside – it doesn’t matter any more – Facebook just bought FriendFeed. I think that’s all that FriendFeed needed to get the critical mass.

Facebook to Twitter: “bring it”So if you can’t get a large community to come to you – why not go to them? I think this is what will will happen now that Facebook bought it. That’s all that FriendFeed needed. Facebook over the last few months has been opening up big, allowing users to share content form multiple sites and vairous online profiles into their personal activity stream. FriendFeed will only make this better for Facebook – because activity streams is it’s bread and butter. Not only does his acquisition benefit Faebook in terms rich features, but also talent. Facebook just got them selves a whole bunch of gun Engineers. Some say that maybe that’s all that Facebook wanted! Who knows.

Now remember Facebook tried to buy Twitter? Supposedly for 500 million – which to me sounds ridiculous! Either way – Facebook has now positioned itself to potentially kill Twitter. Facebook recently introduced the “share with everyone” button – allowing you to post status updates to the public. They are still yet to expose this feature via their API, but you would think the purchase of FriendFeed will only help them. Add to this the press we read about ‘Facebook Lite‘ – and it doesn’t take half a brain to work out the competition is on!

How can we forget Google?
Now just because Google’s Orkutisn’t as popular in Western countries doesn’t mean Google’s social efforts are going unnoticed! Some recent big announcements by Google clearly show they are still in the social space:

iGoogle: Gets Social. Opening up the whole of iGoogle to your Google Contacts and all the OpenSocial containers.

Google Wave: – With Google Wave, everything on the web becomes Social. I really think we can’t underestimate the power that Google Wave might have in the social space when it becomes available to the general public.

Spam
Twitter is fighting a constant battle with Spam. You read articles like this and wonder – how much of Twitter is actually Spam? To me – it feels like a lot. I would at least get anywhere from 3-5 followers a day that are spam. Now I don’t get any spam followers trying to follow me on Facebook – Why is that? Twitter has some work to do.

Noise
Twitter has a lot of noise. When you read articles like this that suggest 40% of all Tweets are ‘babble’ – you aren’t surprised. Compare this to FriendFeed or Facebook – and how they deal with noise. They let you group users, “like” posts and choose to have “more” or “less” posts from specific people. They seem to be dealing with the noise quite well.

There are some big positives for Twitter:

A lot of existing applications – It’s API learning curve is nothing compared to the Facebook API. Meaning the entry barrier is extremely low to get in and there is a large stack of existing Twitter applications.

Users. Twitters user base is big, and continues to grow. Not only so, but the Media in general love Twitter – because it’s instant

Where is it all headed?
At first I was glad that Twitter didn’t get bought by Facebook, but part of me know seems to think that Twitter missed the boat with Facebook. Twitter now has a steep hill to climb, especially given its recent security and spam issues. Facebook not only just bought itself a whole lot of talent – but a really well written application which will allow them to further extend their services – and become more “Twitter like”. Google – well, although they seem to be a bit quiet when you look at things like Google Wave you can be sure that there are some big things about to come in the social web.

The plugin is fully opensource – so you can do whatever you like with it! It’s hosted on Google Code so you can grab it from there. Installation and usage instructions can also be found there.

I haven’t done much testing on different wordpress versions so let me know if there are any issues. If you have any suggestions, bugs or enhancements you can report them on the PoliPress project issues page.

June 13, 2009

The purpose of the plugin is to allow a blogger to quote speeches from members of parliament from the OpenAustraliaAPI using their WordPress blog. The Task: A WordPress plugin.

Here is a sample of what has been done thus far:

1. Multiple Speeches within the same blog post
You will need to firstly grab the GID of the speech or speeches you want to link to. You can get the GID of a speech by copying it out of the “link to this” link on an OpenAustralia link:

Once you know the GID (Global ID) of an Open Australia Speech you can write this in WordPress:[polipress gid="2009-06-16.43.1 type="senate"]

2. Get a specific speech
We can have multiple debates quoted within the same blog-post, here is another of just a single speech:

[polipress gid="2009-03-19.174.2" type="representatives"]

3. Search Speeches
You can also return results of a search. For example, lets say I did a post on the NBN. I could display related topics about the NBN by writing the following:[polipress search="nbn" type="representatives"]

3. Search Speeches and limit results
By default, the plugin will only return the first five results. This is for performance reasons more than anything else. You can change this by adding the num attribute. For example:[polipress search="Community Affairs" type="representatives" num="6"]

Further Info
For more information about the OpenAustralia.org hackfest checkout the Google Open Source blog post.

April 25, 2009

I’m currently working in a rapid application development team. We essentially build web-based solutions for business users within our organisation. The work our team does is primarily development. In saying this, we often get a lot of requirements that are for problems where similar solutions may already exist.

There are many ways to solve a problem – but whats the most efficient and effective method?
As tempting as it is, you could build a custom application for almost anything – but we don’t. We try and avoid re-inventing the wheel where possible. How do we do this? Well, some of the solutions to our problems exist in the form of opensource software (Eg A blog – WordPress, or a Forum – PHPBB…). Additionally, there are cases where other types of problems can be solved by using an existing ‘wokflow’ type of tool. In some of these instances, we have been using Jira (by Atlassian).

Atlassian JiraJira is a bug and issue tracker, primarily intended for software development. We use Jira internally to track all engagements within our team, as well as track bugs and issues for the web apps we develop. Jira is a very customizable product. It has a built in field builder that essentially lets you choose what fields you want to capture for your project. You can configure Jira’s custom fields at a system-wide, project specific and/or issue type level. Jira’s reporting component (or ‘filters’) make it easy to extract the information you want out of the system in several formats. Finally, Jira’s workflow features make it easy to define screens based on business processes you might have.

Jira use cases
So how does Jira help us build our solutions? Well, we found if some of the problems our customers faced could be easily described into one of the use-cases listed below:

User enters data in a custom form, a custom workflow is kicked off

Users can ‘assign’ the item (issue/item/task) to other users

Users can watch for updates / comment on their issue/item/task that has been raised

Reporting – being able to view this data in a wide range of formats (eg Excel, CSV, XML/RSS)

The following post will look at some alternatives uses for Jira other than for software development. These use cases can be usually fulfilled in Jira.

1. Project Management
We had several requests for teams across the organisation that want to be able to track their larger projects as well as simple things – such as their internal initiatives. Some creative uses for Jira in a project-management context could be:

An “Issue” being a project, with all sub-tasks within the issue being milestones or tasks within the project. This would mean you can have one Jira Project (E.g For a team) and then track all the team’s projects by raising issues within that project.

A Jira “Component” being a project, allowing you to assign issues that relate to multiple projects.

Manage Risks & Issues for a project by creating standard sub-tasks within each Issue raised. You could have a standard sub-task for a risk and another for an issue. This would allow you to track for each piece of work within the project – what are the risks and issues

Use it with it’s out-of-the-box setup – Having a Jira project for every project you have, and then creating issues within each project to track tasks milestones

2. Engagement Forms
One of the challenges a large organisation faces is that each team can go going off and create their own processes and tools for various things. A classic example of this is a team’s engagement form. Each team has their own interests – and usually end up forking off another process for engagement. Engagement forms could be anything from an email to a dropbox, to a word or excel document, to an Access database sitting on someones desktop or even a custom web application built just for engaging a team within the organisation. Jira can help solve this problem as well as consolidate these satellite solutions into one.

In terms of how you would use Jira as an engagement form: A Jira Issue = A New Engagement, Issue Type = Engagement Type, Component = Engagement Classification or System/Product the engagement is for. You could then specify your component lead’s as your subject matter experts for that engagement type.

3. Task Management (GTD)
Jira is also a great tool to get things done! This can be applied for a team or an individual. For teams, using Jira for this means that you can easily track your KPI’s. Your engagement form can easily become your team’s work tracing tool. So from engagement to tracking the actual work – you could use Jira as an end-to-end productivity tool within your team.
Now, not all work your team will do would be project related – sometimes there are random jobs that need to be done. Jira can be great for tracking this. Personally, I use Jira to track all things I am working on and as a GTD tool.

If you are considering using Jira for this purpose, you will want to look at the enterprise version of Jira. The enterprise version brings you ‘Issue Level Security’. This essentially allows you to set up different security levels for each customer. This is similar to having different projects, but allows the support team to manage the issues in just one project.

To make reporting easier, you could setup a component for each one of the support ‘queues’. Or you could abstract it further, and have a project for each queue within your ticketing system.

Conclusion
I’m not suggesting that every form-based application is built in Jira. There are however good reasons where you might want to use Jira – these requirements generally fall under one of the use-cases defined above. Jiras flexible nature means that you can customise quite a bit. What happens if it isn’t right for you? Don’t worry – Jira has a powerful API, which means you can easily import or mashup your data with another system if need be – you haven’t locked yourself in!