Performance vs. Features — Which is More Important?

It’s fairly well understood at this point that performance is a critical aspect of building for the web. Better performance typically means better results (for whatever you’re trying to get people to do.) E-commerce transactions go up. Sign-up conversions go up. And so on.

The same holds true with B2B / enterprise software. People will overlook all kinds of product and feature limitations if performance is amazing. Part of the reason is that they’re able to more quickly create & discover workarounds that they’re willing to live with, in exchange for top notch performance. I’m more willing to change my behaviour, adjust how I work, or lower my product expectations if performance is fantastic. When performance is bad, every workaround or product limitation is magnified many times over.

Recently I was involved in a product purchasing decision. I won’t name names (it doesn’t matter.) One product had limited features for what I was looking to do (in part because it’s a “generalist” product and not a “specialized” product — perhaps a debate for another time), while the other was specialized for my needs (vertically-focused). We first went to the specialized product, but then moved to the generalist product (because the product breadth was wider.) As we used the generalist product, we talked through and experimented with different workarounds to address the product’s limitations. It wasn’t a big deal initially, every product has limitations and fitting them into your existing processes and workflow requires some massaging. But after a couple days, we went back to the specialized product.

Why?

Performance.

The specialized product provides more functionality as well – which is handy – but more importantly, it’s fast. Working within the product is a joy vs. frustration, and it makes it easier for me to encourage use of the product amongst other team members as well. At one point someone suggested using Google Spreadsheets. Why? It’s fast. We knew Google Spreadsheets wouldn’t scale, and we didn’t really want to use it, but it’s easy, convenient and fast.

It’s also important to note that the specialized product is more expensive than the one we abandoned (~5x more expensive). Cost was never part of our decision-making process, except initially when we thought we could use the generalized product for more things (instead of going vertical.) And we would have, if performance had been there.

The importance of performance for B2B software and enterprise applications is only going to increase.

With a bigger move to mobile devices (especially in the enterprise), people want all the power and functionality in the palm of their hand. Performance has a huge impact on uptake (which is always challenging in the enterprise) and long-term adoption. People will “suffer” a lack of features if they can still get things done quickly.


Always Be Pitching

Build, measure, learn.

That’s the Lean Startup mantra. It sounds simple, but it’s surprisingly tough to do well. And while it’s designed to eliminate waste and provide a speedier path through product development and validation, it can still lead to silos in how we think about startup progress. It’s so easy to spend an inordinate amount of time in the build phase, ignoring everything else, even if we know we’re really supposed to focus on “measure & learn.”

The solution is to always be pitching.

Never stop pitching your solution to prospects. Even when you’re in build mode, you can still be pitching, doing demos, showing off your solution (even in its half-baked, prototype stage). Think about two cycles through “build-measure-learn” – one is focused on the product and what you will deliver to customers; the second is focused on the pitch, and how you’ll sell to customers. Ultimately they’re both about understanding what problem you’re solving (and how painful it is) and whether or not your solution solves the problem well enough. But they’re different too. There’s a lot of learning to be done in the second cycle. The cycles aren’t completely in synch, but they definitely overlap – you’re building product while you’re pitching product and learning.

build - measure - learn

Always be pitching breaks you out of build mode faster. It keeps you in touch with customers, keeps your pitch fresh, and allows you to learn much more – on a constant basis – about what resonates with people. You can experiment with how you pitch, how you demo, what value propositions you emphasize, etc. This process isn’t about collecting feedback for development in order to tell them what to build. It’s about understanding your customers, learning about their pain, crafting the pitch and getting comfortable interfacing with the outside world. You can’t run a business in a vacuum. You have to get out there and pitch.

I’m making a point not to say “always be closing” or even “always be selling”, although this is definitely close to selling. But the goal isn’t revenue at this point, the goal is to learn what works and what doesn’t. Pitching is a more appropriate way of thinking about it.

Failed pitches are as good as successful ones. You want to be extremely selective about your beta customers; you’re not looking to open the floodgates. But practicing and refining your pitch will be extremely valuable when you put your product in customers’ hands in order to get to the measure and learn phase of the process.


Small Features

We often measure the “size” of a feature based on how hard it is to build (development time) and how hard it is to use (for end users.)

So a “small feature” is one that’s easy to code and easy to use. But are small features really that easy to build? Coding a feature may be easy, but there’s a lot more that goes into feature and product development than the physical act of coding. And prioritizing features solely on development time is risky; it’s a slippery slope to feature bloat (or “death by a thousand paper cuts”).

Small features are not necessarily easily to build. Don’t underestimate the effort that will be required in terms of UI, UX, usability, deployment, customer understanding, and most importantly ROI. Small features sometimes end up being useless to customers, and sometimes make a huge difference in the overall value of your product. Suddenly a “small feature” that took very little development time is a “big feature” in terms of value.

At GoInstant we just launched our first new “small” features: Presenter Mode and Session Lock. Neither took long to develop, but the amount of thought and effort that went on behind the scenes was amazing. I don’t say that to be egotistical, or to claim that we nailed it perfectly (we don’t know yet!), but because the complexity of what we’re trying to do is significant, even though the end result is two tiny features.

To illustrate the smallness of the features, here’s a screenshot of a GoInstant session:

goinstant screenshot

  1. Presenter Mode is in the top right-hand corner. It’s a button – you turn it on or off – and when it’s turned on, only the session owner can interact with the web page. Guests can’t click or type (although they can move their mouse pointers), and the session owner can go through what they want. Turn it off and everyone can fully interact together.
  2. Session Lock is below the list of participants. It’s an icon of a lock (unlocked or locked) and a link for locking or unlocking the session. When a session is locked, no one else can join in. This provides security and privacy for the participants. When unlocked, others can join the session.

Small features. Easy to code. But we went through many iterations and discussions around the UI/UX and usability of the features. And even as we tested the features and new UI elements, we discovered potential issues. For example, guests can’t see the “Lock / Unlock” link, because it’s only something a session owner can do. But guests see the lock icon, because we feel it’s important for them to know what’s going on. So when a session owner locks a session with guests in it, she’s clicking into an empty space. That may be a weird experience for guests to see. And if it means the session owner has to interrupt her presentation in order to explain what she’s doing, GoInstant has gotten in the way. Our mission is to stay out of the way and bring you and your customers as close together as possible.

Session Lock = Small feature. Easy to code. Easy to use. But potentially confusing?

Designing the UI for Presenter Mode was even more difficult. We tried a number of options and discussed how prominent the indicator should be. We think people will understand the concept of Presenter Mode (based on customer interviews, feedback, terminology people used with us) but what happens if a guest is brought into a session, told it’s completely interactive, and then starts clicking … only to find that “nothing works”? Again, GoInstant’s goal is stay out of the way and facilitate awesome communication and interaction, so if session owners or guests start stumbling around the concept of Presenter Mode, we’ve done something wrong.

Presenter Mode = Small feature. Easy to code. Easy to use. But potentially confusing?

The Dreaded “Appendage” Functionality

When building new features they often come with “appendage” functionality. Appendage functionality is the stuff that’s put into a feature that’s not related to its core functionality, but plays a supportive role. Configuration settings/options are a great example. You build a feature and then decide to make it configurable (On/Off) or add settings to it so customers can customize how it works. This happens a lot – but if you can avoid it, you should.

With Presenter Mode we talked about “appendage” functionality a lot. For example: Should Presenter Mode be automatically on when you start a session? Or should session owners have to turn it on each time? The first instinct is to build a configuration option to let people decide how they want it to work. That’s more code, more complexity, more risk and potential points of failure. It also means more UI has to be designed, and once you go down that road it’s hard to pull back. Suddenly, every feature needs configuration options.

You have to be extremely cognizant of “appendage” functionality, and avoid it at all costs – especially at the beginning when you’re designing the minimally viable version of your feature. Instead of building configuration options, test the feature’s use and make decisions from there.

Usability Testing

GoInstant is a tricky product to do usability testing on because it requires two or more people to use it at the same time. So using a service like UserTesting.com (remote user testing) is tough. And having people come in and test the product is also difficult (although not impossible.)

At this point we’re deploying quickly to live customers and testing directly and actively with them. That’s a big part of our usability testing; but if your product can be more easily tested beforehand, do it. And be prepared for unexpected feedback. The Localmind team (I’m an investor through Year One Labs) recently went through a ton of very early, paper prototype usability testing and got some great feedback. That feedback gave Localmind the opportunity to step back, re-think, and tackle things differently. The results are guaranteed to be more successful than they would have been without putting in that legwork up front. It takes guts to do that kind of testing – especially before coding anything – but it can make a huge difference.

Thinking about the Future

GoInstant takes up as little space as possible. You can see from the screenshot that it’s a small bar across the top and right of the browser window. There’s not a lot of space to play with. And we plan on adding additional features as well. So a great deal of our discussions and iterations were around planning those future features. Some we know we want to build, some we’re still debating and collecting information on. We didn’t want to implement Presenter Mode and Session Lock only to have to change the UI later on, when new features are released. It may happen, but if we can avoid it, we’d like to. That’s a big part of product management – designing and building for today, planning and setting expectations for tomorrow. You can’t think of any one feature as independent of everything else.

Measuring the Value of New Features

Testing usability is important. Making sure things work the way you intended is also important. Squash the bugs. But at the end of the day, all that matters is whether new features are providing significant value or not.

To assess “significant value” you first need to define it.

If a new feature is used once per week, is that good? Bad? So-so? You won’t know unless you think about and write out your assumptions. Value is based on whether a feature is used or not, how it’s used, how often, if it’s being used as you intended (or maybe in other, better ways!) You need to know if features are providing value, but also what kind of value and how much.

Speak to customers and collect qualitative feedback. That’s essential. You want to collect as much feedback as possible. But every feature deserves its own quantitative analytics as well. Think about what you want to measure and how that would validate (or invalidate) the value of the feature for your customers/users. Bake those analytics in and see what happens. The combination of qualitative and quantitative data will be critical in deciding what to do next: keep the feature as is, change it (a little or a lot), or kill it. And yes, killing a new feature should be on the table.

Small is the New Big

On the surface, a “small feature” can seem so easy to build. And the easier it is to build, the more inclined we are to make it a high priority. How many times have you said, “Let’s just throw that feature in there, I’m sure customers will love it. Plus it’s so easy … we can bang it out in a couple hours, and promote it too.” Alarm bells should go off at this point. I’ve fallen into this trap a lot, but my warning bells have gotten a lot better over the years.

Don’t underestimate the complexity or impact of new features, including small ones…


About Ben Yoskovitz
I recently joined GoInstant as VP Product. GoInstant changes how we use the web, making it shareable like never before.

I'm also a Founding Partner at Year One Labs, an early stage accelerator in Montreal. Previously I founded Standout Jobs (and sold it). I'm a hands-on startup guy, helping companies grow successfully from the idea forward. You can reach me at byosko at gmail dot com.

Follow Ben on TwitterFollow this blog via email
Startup Tools
Find Stuff
Please Check Out:
NextMontreal.com I Spy Montreal
Disclaimer
The opinions and commentary on this site are mine and mine alone. They do not necessarily reflect the opinions or positions of my employer, GoInstant.