On the Left Hand: How Feature Prioritization Happens
An old blog entry continues to get requests for us to allow users to move their scroll bars to the left side of the screen. I’ve forwarded the suggestions on to the appropriate people, but, since I’m not on that team, I don’t actually know what will happen with the feature. That said, I figured this would be a good example to use in describing a huge part of software development: Feature Prioritization.
Fun vs Reality
To most engineers, the fun part is making stuff. The reality of our situation, though, is that we’re more constrained by what we can’t do than by what we can. Outside of software engineering, this is inherently obvious. No, these civil engineers aren’t going to make a building that’s a million feet tall. No, these automotive engineers aren’t going to make a car that gets a thousand miles per gallon. Boeing’s customers don’t go to their blog and say, “Why don’t you make a passenger plane that can fly across the Atlantic in ten minutes?”
I’m sure that most engineers don’t spend too much time thinking about this. When the answer to the question is, “It’s impossible with current technology,” there usually isn’t much room for debate. And, even when new technology is invented, people have been trained to expect it to take time to become available. You see some new technology in a concept car at an auto show and you know that it’ll take five to ten years before you’re able to buy a car with that technology in it. You also rarely expect updates in the things that most engineers build. “This house I bought was made of wood. But now they’ve got better composite materials. The builder should upgrade my house for me.”
On its surface, software engineering seems like it’s different. It’s rare that we software engineers get to use the, “I canna change the laws of physics, Captain!” excuse that our peers in other engineering fields have. Is there anything that makes it impossible to put the scroll bar on the left side? Nope. And, we’ve trained consumers to expect changes to take months, not years. Releasing seven major versions of Windows Mobile in the last seven years is kind of a double edged sword for us. On one hand, we can say, “Look at how much we’ve done.” On the other, you can say, “So why haven’t you done what I want yet?” And we software guys have trained you to expect upgrades. “XP SP2 was free. Why isn’t this?”
Despite not being encumbered by many of the laws of physics, software engineering does have constraints. The trouble is, most of these constraints aren’t very obvious to most people. You all know that it’s hard to change a road, because you’ve witnessed it happening. You saw it take a lot of time. You saw a lot of people working on it. You probably swore under your breath at the traffic mess the work was causing. But even that congestion contributed to your understanding that it’s a big effort.
Making software that will be used by millions of people also takes a big effort. It’s just that few of you have seen this effort firsthand. And it’s not even apparent when seen after the fact. For example, in using one of our devices, it’s probably not obvious that any text you see needed to be translated into 24 languages. But that effort is part of the fun stuff. Making things is what we do. The real challenge isn’t in doing the features. The real challenge is in deciding which features to do.
Ironically, our largest constraint is a direct result of our being able to do just about anything. We can do anything, but we can’t do everything. Though the laws of space usually don’t apply to us, the laws of time do. And with only so much time, we can only do so much. Worse, unlike the automotive engineer who can just say, “Well, it’s impossible to make a car that can fly to the moon,” there’s little that naturally narrows down our list of possibilities.
With an infinite set of features possible and finite time to do them in, we have to spend a lot of effort deciding which features to do and which not to do. Lacking natural constraints, we’ve had to come up with some other way to make these decisions. In a nutshell, our solution is to come up with a priority for each potential feature and then go through the list in priority order. Nothing earth shattering there. But, literally, every feature we do is a tradeoff against hundreds of others we won’t have time for. So prioritizing them is the only possible way to ever ship anything.
Prioritization isn’t an exact science, and a lot of pieces go into it. For instance, the more people who will benefit from the feature, the higher its priority is. On the other side, the longer it will take to implement the feature, the lower its priority will be. Sometimes it’s better to do five small features than one large one. We also look at the ability for our partners to implement the feature, giving higher prioritization to things only we can do than to things an ISV or OEM could do. We also look at the existence of other ways to accomplish the same task, giving higher priority to things that can’t be done any other way.
On The Left Hand
Again, I’m not part of the team that would work on the “let the user move the scroll bar to the left side” feature. I’m not part of the decision on that feature (other than to make sure that they know it’s something people have asked for). But here are the kinds of things that will probably go into the feature prioritization for it.
First, the feature description. With the scroll bar on the right side of the screen, it’s very hard for left handed users to use a stylus to scroll. While doing so, their hand covers the screen, and they can’t see what they’re trying to scroll. The feature would provide a control panel that enables the user to say that the scroll bar should be on the left side instead of the right. The feature would also make most or all of our built in apps move the scroll bar when the user changed the setting. Ideally, it would also work with third party apps.
Things that increase the priority:
Now, I believe that left handed people are roughly 10% of the world’s population. (Don’t send hate mail if I’ve got the number wrong. The people who decide these things for real will make sure to get the correct number.) We’ve got over 10 million users, so that’s potentially a million of them. A feature that benefits a million people is pretty significant.
Aside from something really esoteric, there’s really no way for an OEM or ISV to implement this feature. If it’s going to get done, it needs to be done by us.
Things that decrease the priority:
Now, this feature only matters on a device with a touch screen. I won’t give actual numbers on how many of those we sell, but for the sake of discussion let’s pretend they’re half of our devices. That potentially cuts the number of users who would benefit from this in half.
You’ll have to take my word for this, but the task is fairly large given the current system design. This could only be considered in a major revision. But, if we were to do a major reworking of the system design anyway, the cost of adding this in as well would be lessened.
From a functionality standpoint, every one of our devices has at least a Dpad, and many have a scroll wheel. So, even if a user can’t use a stylus to scroll, it will still be possible to interact with the device.
All together, this adds up to left hand scroll bars being a fairly compelling feature. So it would get added to the list with more compelling ones above it and less compelling ones below it. At that point, whether or not the feature gets implemented would depend on how much time we have for the appropriate release, and how far down the list that time allows us to go.
The List is Unending
Most of the controversy I’ve read here has been a result of people disagreeing with our prioritization of various features. This is the general method we use for figuring out which features to do. Although not perfect, it’s the best scheme we’ve been able to come up with. If you’ve got a better one, I’d love to hear about it.
I don’t know if you’ll get your left handed scroll bars or not. And, if you don’t, I don’t expect this explanation to make you any happier about it. But I hope I’ve at least given you a better understanding of how we go about making our decisions.