How To Create A Minimum Viable Product

Editor’s note: This is a guest post by Emre Sokullu, founder and chief architect of GROU.PS

There’s been a lot of talk on the concept of minimum viable product lately, but not much has been written on how to actually implement one. Having gone through the process of developing one of the earliest social software mashups (GROU.PS) in PHP six years ago, and LoveBucks, a node.js Javascript app that is the Facebook “Like” Button for online content monetization (both alone), I want to describe to you a little bit what has really changed in web application development in recent years and the beauty of minimum viable product.

1. Build it on Facebook Platform

Don’t build your membership stack from scratch, let Facebook Connect handle it. Not only will that provide a better and more straightforward experience for your users, but it will also save you a ton of time and messy product decisions. You no longer have to mess with sessions, logout scenarios, collecting information about users, and probably most importantly lost passwords and spam accounts. Unless your product  is focused on the Chinese market, I don’t see any reason for not using Facebook Connect (1/3rd of the world, including China, uses it obsessively every day). Those who don’t use Facebook would probably not be your target audience anyway; after all, non-Facebook users are late adopters and conservative in their selection of new web apps. And don’t forget, Facebook Connect now lets you capture the emails of people using your service.

2. Use bootstrap.js

If your product starts life as a web app, chances are you may not be able to create a mobile experience from day one. But if you were to build it on bootstrap.js, the user experience on both mobile and desktop would be so linear and seamless that you could get along well enough by just having your users bookmark your site on their mobile devices so that they can use it like a mobile app. Hence, I call bootstrap.js a good way to show some steam on mobile without really investing in it. It also saves you a ton of work in CSS through its pattern templates.

3. Use Cloud, Scale Out

Without a doubt, cloud is easy and cheap. git + heroku + a mongo/riak host would save you a ton of time and money because you pay only for what you use. Scaling becomes much, much, much easier. I remember going through the phases of replicating our mysql stack at GROU.PS, putting a memcache layer in front of it and eventually sharding it – which was the most cumbersome part of all. It was hard. Bringing an expert on board costs a lot too.
Note that as you scale out though, the benefits of cloud decrease and it becomes an expensive solution. It’s important for you to know when to stop scaling through cloud, buy your own hardware for bare traffic and keep the cloud in place for excess traffic only (like Zynga does). To put this in perspective, think about how much you’d pay if you were an Amazon S3 client and you had to push about 1 petabyte a month. The answer is $50K (been there, done that). That’s probably a just portion of what instagram is paying right now to Amazon. It also justifies Adam D’Angelo’s explanation on their use of new funding at Quora.
At LoveBucks, we use heroku. Not only is it easy, cheap and fast to get started, it’s also acceptably reliable for a consumer web project, being a part of Salesforce and built on top of Amazon S3.

4. Beauty of jQuery

Bootstrap.js depends on jQuery. But that’s not the only reason why you’d want to use jQuery. If you’re old enough, you should remember having to choose from prototype, jquery, moo and a bunch of other libraries in the early days of web 2.0 . Well, now the competition is over and the winner is jQuery. jQuery is cross-browser, easy, beautiful, extensible and has a huge community. “DHTML” tricks are now so easy, compared to early days of web 2.0

5. Focus on core functionalities

Perhaps the biggest mistake I’ve made at GROU.PS at its initial phase was to add way too many features onto it. Sure, it made a lot of headlines in the web 2.0 community, but frankly thinking back, what I should have focused on was collaborative blogging (with ability to fetch RSS from external blogs as well as a built-in blog engine), plus email list sync’d blogging. These two were both large opportunities and GROU.PS would still be a unique value proposition with just these two. Instead, I added links (which was delicious, reddit) wiki and so on. The result? An unstable product which was trying to do too much and poor user experiences due to an overwhelming set of functionalities. (Of course this was back in the day, I can assure you now that GROU.PS is a very stable platform). It always makes sense to start simple. Don’t forget both Dropbox and Google started out as very simple products and they haven’t changed a bit in their UI (note: consistency) for a very long time.

At LoveBucks, we had the option to give people a lot of options with the amount and distributions of their donations. But we didn’t. We focused on the distribution of rewarded cash from consumers to publishers instead.
Another thing you may try for features that you believe might attract a lot of attention, is to create non-functional links, and when someone clicks them, a page with a counter is shown where it says “the feature is currently under development and check back soon”. This way, you can see how many pageviews the feature gets, hence its potential popularity. From there, you can decide on whether to invest in it or not.

6. SaaS is your best friend

Best thing with SaaS is that there is no upfront commitment and you don’t have to deal with maintenance or anything like that. It saves you valuable resources. Some of the services that you’d definitely want to use are:

7. Use Scribd to host paperwork

This is perhaps a minor point, but for legal boilerplate that’s sent to you from your lawyer or fetched from somewhere, don’t lose time converting into a page on your web site. Just use Scribd, grab a widget with your doc embedded, and put it somewhere on your site. Again, this is a minor point but thinking along these lines gives you a good idea of what you should outsource and what you should focus your efforts on building.

8. A video is worth 1,000,000,000 words

Don’t use pages, tour sites, or heavy javascript demos to explain your product. Craft your message carefully and then create a video, that’s it. If you’re on budget, you can do it on your own but I strongly recommend you to work with a professional on this one. Some of the services are Grumo MediaEpipheo Studios, and wdysd, and the budget changes from $3,000 to $40,000. (for a full list of video production companies, see Quora)

9. Short on time and money? Drop Internet Explorer

OK this was already covered on Techcrunch, so I won’t go into too much details here. But if you feel that you’re short on cash and time, don’t waste your time with Internet Explorer, the most incompatible browser of all times. Don’t forget now Chrome has more traffic than any other browser + users of Internet Explorer are usually not early adopters, hence it’s very unlikely they’ll stick with your service anyways. You may gently warn them to switch to Chrome or Firefox to continue to your web site.

10. Spread it over time

Some features are not required from day one. Change plans? Cancel subscriptions? Add billing info? Those are things people would need as they use your service. So to get to your launch fast, don’t waste time building these, just link them to mailto:you@gmail.com and take care of those handful of outliers manually. As you see traction, you can build them.

Results:

The first version of GROU.PS took 1.5 months to develop and you can see the result in the image above (please evaluate it by the standards of the day).

As for LoveBucks, it was created in 2 weeks. Its database is already more than 1GB large, we grew to serving from 0 to more than 45,000 people daily with no hiccup. We were able to do this through cloud and the minimum viable product best practices I specified above.

A note on node.js

One thing you want to avoid; don’t always go for the hip, new technologies, especially for your infrastructure. At Lovebucks, I’ve used node.js for the backend due to its event-driven non-blocking nature (which is a must for a button product that aims to take over blogs, wikis and social networks) and the beauty of using the same language for both backend and frontend. But it turns out it’s too unstable – the multicore processor support was just added recently, API breaks frequently and worst of all libraries are even more unstable. Also consider the language that people around you (where you’ll develop your product in the next few years) know, because eventually you’ll need to hire. For GROU.PS, it was hard to scale the team for a while, because developers in Turkey (where most of our development is done) are usually only familiar with Microsoft technologies and Java, and not PHP, the language GROU.PS was developed in.

Latest Stories