The Specification is Dead; Long Live the Specification

In the olden days, most people followed a waterfall method. It involved writing “complete” specifications on exactly what had to be built, how it would be built, how it would work, look, etc. You’d have the “complete” package of documentation up-front and then you’d start coding. Seems like eons ago…

Then we were introduced to agile development, which encouraged us to throw away big specifications and go with user stories, or to eliminate documentation entirely and just start coding, building things iteratively.

I’m greatly simplifying the evolution of software development into a couple paragraphs, but you know the drill — specifications went from being necessities to being outlawed. To draw a quick parallel, the same has happened (to a large extent) with business plans. They started out as big ass documents you’d write before doing anything practical / hands-on with your business. People then decided they weren’t necessary whatsoever. We’ve now found a middle ground (which is constantly shifting and evolving based on practice and results vs. whim) with things like the Lean Canvas, which provides us with a focused and simplified means of designing a business.

I’d say the same holds true for specifications. And I’ll admit it, I like them, and I haven’t gotten rid of them. But I’ve definitely changed how I write them.

I like to write. I find it’s a great way of recording structured and unstructured thought. Documents are useful for organizing and re-organizing thoughts as well. So I tend to start any new product requirement work with a specification. It’s not an ultra-lengthy and detailed description of how every feature will work or look, but a generalized description of the requirements (from the client’s perspective – which is more like user stories). These early specifications (call them “product briefs” or anything else you’d like) often include brainstorms and rough ideas too, as a way of capturing that information for later use or integration into the product.

My specifications often include descriptions of things we may (or will likely) build in the future. Not to overwhelm developers with detail, but to eliminate as much future risk as possible. When starting iteratively with something small, it’s often easy to forget (or ignore) stuff that’s going to come down the road, and so it’s not well-planned for. Inasmuch as I’m a fan of building small, iteratively, and releasing often, I don’t like the prospect of getting caught with my pants down later because we didn’t have even a bit of foresight. And occasionally these forward-looking notes become priorities sooner rather than later; having them described – even briefly – in the specification, helps move them into place and adjust development plans.

I don’t see specifications as ultra-descriptive product roadmaps. I see them as four things:

  1. A high-level, but “all-encompassing” brain dump;
  2. A customer-centric description of the value we’re trying to provide, describing the functionality to be built short-term (often including ideas, brainstorms, differing options);
  3. A future-looking description of things to be considered, and potentially planned for; and,
  4. A launchpad for discussion, debate, validation (or invalidation) with customers … a “working document.”

Specifications aren’t writ in stone. Quite the opposite. They include text, mockups, wireframes, diagrams, scribbled notes, etc. Throw it all into the mix and organize it in such a way that it makes sense for you and your team. As quick as we want to release, as iteratively as we want to develop, there’s still merit in planning before doing.


Piggyback and Steal: Startups Need to be More Parasitic (In a Good Way!)

parasite

In a recent NextMontreal tech podcast (which I participate in on a weekly basis), I used the phrase, “piggyback and steal.” I thought it was reasonably catchy, so I jotted it down for this blog post. Without context it makes no sense, so let me add some. During the podcast I was talking to Frederic Guarino about how often startups build their products atop one single platform (such as Facebook or Twitter). The results can sometimes be very painful. The platform is in complete control. They can change their UI or feature set and significantly impact a startup’s ability to build traction. They can build the startup’s functionality themselves and in almost an instant put the startup out of business. Instead of innovating, a startup that relies exclusively on a single platform often finds itself reacting to the platform’s changes, fixing code that stops working, changing tactics, etc. Being dependent on someone else’s platform is tough.

Where a lot of startups really fail is when they have an expectation that the platform they’re building on will acquire them. How many Twitter clients did Twitter buy? How many URL shorteners? Banking on an acquisition by the single platform you’re leveraging is insanely risky. When the big guy doesn’t buy the little guy, and the little guy has put all his eggs in the big guy’s basket … bye bye little guy.

Having said that, when building a Minimum Viable Product, it’s often easiest to build within an existing platform to leverage a large user base. If the fastest way to build a product, learn and iterate is by piggybacking on a big platform, it makes sense to do so.

So go ahead and piggyback, but make sure you’re ready to steal too.

As the plucky startup you can’t be overly cautious about how you handle the big platform. You don’t necessarily want to compete outright, but often you can’t avoid some form of competition. I say, embrace it. If you’re too cautious, you’ll never get the traction and scale you need, and you’ll be stuck piggybacking until you’re squashed. And the way to compete is by stealing — stealing users, stealing brand, and stealing buzz.

Before Foursquare, people used Twitter to share their location. Foursquare leveraged Twitter, encouraging people to tweet every time they checked in. Foursquare identified a use case on Twitter that wasn’t being served as well as it could. They piggybacked on Twitter and then stole the check-in activity from them. Stocktwits was very similar. It started by using Twitter as a way of aggregating discussions about the stock market. Now Stocktwits is a community onto itself.

It’s possible to identify use cases that exist on giant platforms like Facebook and Twitter and do a better job at them. It might be a “feature play” but a lot of startups do start as features and scale from there. And there’s already some amount of validation built in from the fact that the use case you’re tackling is being attempted in other places.

Piggyback and steal.

You don’t want to bet your fortunes on having a symbiotic relationship with the giant platform forever. Startups have to be much more parasitic. Even Zynga, which has had insane success with Facebook games, is putting a lot of attention in other places, such as mobile games on the iPhone. Startups are risky. Don’t be too cautious or too slow when it comes to making the move from piggybacking to stealing.

Photo courtesy of Shutterstock.


Interrupt Users to Increase their Adoption and Engagement

You want someone to use your product, then get in their face and force them to. I’ve made this argument before. One of the biggest challenges for any startup is engagement – acquiring users is hard, keeping them is usually much harder. And even when users say they love your product or think it adds value, it doesn’t always translate into significant usage and engagement. Why is that?

Generally people are enthusiastic and interested in trying new things, but they’re also lazy, comfortable, scared of change, and unmotivated. You can increase motivation by charging people – generally people will stay more engaged (at least for a bit longer) when they’ve increased their level of commitment. But for a lot of web startups charging out of the gate is unlikely.

Try interrupting users.

It’s something we’ve been talking about a lot at Year One Labs with our startups. How do you interrupt the daily activities of users in such a way that you become useful (and grow into a necessity) right at the very moment when the users actually need you?

Put another way: Your web application is going to require either a change of behavior or the creation of an entirely new behavior. Both are hard to do, and it’s foolhardy to assume people will change their behaviors easily. That kills a lot of startups. So how can you interrupt a user during a chain of behaviors they’re comfortable executing to slot yourself into that chain at the right place and right time?

There are some feedback loops that are effective. Social pressure is one. The more I see people using a certain product and/or talking about a certain product (this includes media, close friends, acquaintances, and others) the more likely I’ll try something a few more times at least. Email is another potential way of trying to increase engagement. But if you go deeper than that and inject yourself right into what people are already doing and interrupt them … it won’t really feel like an interruption, and it won’t feel like a bother … it will feel like you’re creating value at the exact moment when they need it, and you’re embedding yourself into users’ existing behaviors. Suddenly the change required, the leap of faith a person has to make in order to get value and stay engaged is greatly reduced.

Drill down into the use cases you think are right for your application. Write those down. Understand (or at least hypothesize) who is the right user who fits the use cases you’ve defined. Think: personas. Then figure out what those people are doing right now in and around the use cases you’ve defined. How are they solving or semi-solving the problems you’ve identified? What are they doing immediately before and after your relevant use cases? As you explore these ideas you may find opportunities to integrate with other applications and piggyback on their traction. You may find “sneaky” tactics for injecting yourself into people’s routines, which can greatly clarify your value proposition and minimize the demands you’re making on users.


Ben Yoskovitz
I'm VP Product at GoInstant.

I'm also a Founding Partner at Year One Labs, an early stage accelerator in Montreal. Previously I founded Standout Jobs (and sold it). MY BIO >>

Follow this blog via email

Advertisement
Startup Resources
A collection of posts I've written over time on key subjects:

Find Stuff
My Photos