Building the Right Product with Hypothesis-Driven Development

In my previous post about Making Continuous Delivery work with Scrum and Sprints I wrote about how to shorten release cycles significantly by changing your process and adding in the obvious amount of test and release automation.

A comment challenged that by basically saying “Well, this might help you build your product right (and in shorter cycles), but building the right product is a whole different question. And maybe the more important one.” Hard to disagree.

I wanted to dig deeper. These days you can’t be wrong by starting in the vicinity of Lean Startup if you’re looking for how to build the right product efficiently. As an engineer I’m familiar with a lof X-driven development techniques but then I’ve came across one I haven’t about before: Hypothesis-Driven Development.

The basic idea is simple:

  • Instead of requirements, you formulate assumptions, or hypotheses
  • At the same time you define a measurable signal, that will tell you whether you were right or wrong in a reasonably short amount of time

This sounds like a great start to get to a structured approach to factor the question of the right product into your development.

But of course building the right product and building the product right aren’t mutually exclusive. Nor would I say one is more important over the other. They both are. Where hypothesis-driven development guides you to make sure you’re being intentional about your assumptions and the need to test them, good old fashioned engineering techniques like test-driven development and test automation make sure you’re implementing your hypotheses right. Without being able to successfully (bug-free and all) deliver an increment of your software that aims at testing an assumption, you’re not going to get the right answers either.

The article I stumbled upon was http://agile.dzone.com/articles/hypothesis-driven-development which also links to a great presentation about Replacing Requirements with Hypotheses.

Coffee shops and other tools for small software startup teams

In all my years back home I haven’t really noticed something that is very apparent in Vietnam: people working in coffee shops. Sure, you see students in cafe’s, people with laptops or people reading documents but here it’s a very common thing to do actual work in a coffee shop. No upfront investement in real estate, no contracts and it scales well whenever you need more space, or less, or just want to go somewhere else. Sounds a little bit like cloud computing.

While a decent office has some advantages on its own, coffee shops are definitely a way to go for small startup-like teams, at least here in Vietnam. In case you’re developing software you’re probably going to need a little more than just a chair, a table, a laptop and a Ca Phe Sua Da. If you want to keep your flexibility and make sure, your whole team has access to all they need where ever they are, it’s often best to chose hosted solutions. Let’s have a look at what you might need:

Version control repository plus bug tracking

unfuddle.com: the free plan comes with SVN/GIT repositories as well as tools for milestone planning, bug tracking and a calendar. One project and two developers are included, that’s often enough to set up a project and get going. For 9 USD / month 10 developers can work on a project and for 24$ a month it comes with SSL (if that’s necessary). It’s rather slow here in Vietnam but I never had any problems connecting to my repository. Your source code is definitely something that needs to be on the web, it just gives you so much freedom to work outside and collaborate with your colleagues who just happen to prefer a different coffee shop.

Some other repository providers worth checking out: BeanStalk, Assembla, or ProjectLocker.

Some bug trackers worth checking out: well, you tell me, I’ve got no experience with a) free b) web-based c) hosted bug trackers somehow. Or maybe I never produced bugs and that’s why.

Requirements management

pivotaltracker.com: requirements tool for agile projects, especially those closely following Scrum. Although everything could as well be packed into an Excel sheet, Pivotal Tracker comes with some nice features around iterations and velocity tracking that make it worth checking it out. It’s free to use and it there’s even an Android app so that you can access your user stories and product backlog wherever you are. Limited use cases for that one, I know, but I just loved to be able to add product ideas directly to my icebox whenever I happen to have those ideas.

Some others worth checking out: a Google Docs spreadsheet. It might sound like a joke, but hey, you’re just starting up, it takes 5 minutes to create the right document and then you get going and stop thinking about the right tool for the job, because you have it already.

Continuous integration

mikeci.com: An optional yet strongly recommended part in between developing something and running it in production is integration testing, or even better: continuous integration. There aren’t many providers out there who offer that as a service. One I’ve recently joined is MikeCI.com. If you use Maven, Ant or Rake (this one still in beta) and have it hosted in a SVN, GIT or a Mercurial repository, then setting up CI is as easy as pie. It also supports different polling cyles and email notification to make sure you don’t miss a failed build. MikeCI is not free but starts with a reasonable 10 USD / month. Two more plans with 49 and 99 USD / months make sure it scales with you. It’s very nice to have this service provided, although the power and extendability of Hudson make it a though choice whether you really outsource continuous integration. You might just end up doing CI on your laptop instead.

Some others worth checking out: as mentioned, do it on your laptop. Install a Tomcat, drop in Hudson, configure your project, activate polling to your repository and then let it run in the background. You will fall in love with it very soon.

Web hosting

Hosting. A lot is changing right for hosting of web applications, all towards something cloud-based. But hosting is still something worth to take the time and look into it. It might often not be the cheapest to go for a cloud provider and prices are probably something more important in early stages of startup projects. Or you choose to decide that your own time is more important than a few extra dollars a month and decide to go for a cloud provider to save time for administration, setup and operation of own servers. I am a big fan of CloudFoundry because it reduces all that to an absolute minimum. Java applications only here, but there might be others out there.

Google App Engine: Google’s platform-as-a-service offering comes with free setup and basically won’t cost any money until you’re really starting to get traffic to your website. This might sound tempting but App Engine’s absolute strengths are elsewhere, in creating web applications that will scale perfectly inside Google’s cloud infrastructure. But this requires some serious changes in the way we learned to develop web applications over the last years, so you should think about it twice. Especially if experience with app engine is limited and time-to-market is crucial, it’s probably a bad idea to go for it now.

Some others worth checking out: Amazon EC2 (plus 3rd-party tools on top, like CloudFoundry), all hosting provider with VPS offerings (no cloud, but often more power for a lot less money), vmforce.com (a promising choice for Java applications, coming in fall 2010)

Good old office documents, spreadsheets and presentations

Google Docs: Documents, spreadsheets and presentations are always needed, no matter what you’re about to create in particular. While MS Office is still the office suite of choice in business, Google Docs is perfect for distributed and collaborating teams. Shared document folders, concurrent editing of documents and nice little features like in-document chatting make it the perfect choice for your team. Another plus: Google is always fast, here in Vietnam and most likely everywhere else.

Alternatives: if you’re not into concurrent editing of documents and you don’t mind still sending documents around via email instead of just links to a common workspace, then you can as well stick to MS Office or Open Office.

Backups

dropbox.com: dropbox.com is popular, it’s easy to use and the usual freemium model offers a 2 GB plan for free. Millions of users somehow tell me they are reliable enough to use them (they use Amazon S3 as storage), only connection speed was rather slow from Vietnam.

While remote backups (both words are important) are something crucial, just take a look at what we talked about so far and think about how important it actually really is: your source code is by now in a safe remote repository, your documents are on Google, your requirements in Pivotal Tracker (or also on Google), what is really left on your laptop to back up and protect? Not much, isn’t it.

Communication and collaboration

Google Wave: Everyone knows Google Wave as one of Google Labs’ products that produced a lot of waves in the beginning and quickly ended up being forgotten. So, why the hell does it appear here? It’s a shame that it doesn’t work in practice as it has some nice approaches that might have just needed some fine-tuning here and there to make it really usable.

Another reason why it appears here is because I want you to complain and tell me what you’re using to collaborate. Of course there are the usual suspects that might not be worth mentioning anymore, such as Yahoo, Skype, emails and, wait for it, meeting in person (like for example working in the same coffee shop).

I’d be interested to hear who else is working in coffee shops and how your infrastructure looks like.

MobileDevCamp Saigon and a Foursquare rival “Made in Vietnam”

Yesterday I had the chance to attend MobileDevCamp Saigon for some hours in the morning. It was organized by Orance France Telecom, TechPropulsionLabs, and FaberNovel, and was held on Saturday and Sunday at the University of Technology on Ly Tryong Kiet street in Ho Chi Minh City. The 2-day event revolved around mobile applications, largest audience group were developers of mobile applications and those interested in it. From 80 participants in the last year the event jumped up to more than 230 pre-registrations in this year. Although the number of actual participants might be a little lower it shows the increasing interest in mobile applications and the eagerness of young Vietnamese developers to get things started in this booming field.

Saturday morning was organized in the style of a conference. On four concurrent tracks local developers, marketing specialists and foreign experts held 30-minutes presentations. Technical topics were covered (of course), as well as marketing of mobile applications or introductory talks about different areas. Main language was Vietnamese while slides and presentations given by foreigners were in English. In part two of the event, a 24-hours development contest started on Saturday afternoon that allowed groups of up to 4 developers to compete against each other.

One of the highlights of MobileDevCamp 2010 was the announcement of a new location-based service “Made in Vietnam”. The new start-up company “Skunkworks”, based in Ho Chi Minh City, has spent the last months developing a mobile service whose long-term vision is to compete on the international market, then most likely with Foursquare and GoWalla. Its main feature is the well-known “check in”. Many other features will complement this, e.g. inviting friends to locations, sharing opinions and tips around locations, and discover new locations nearby. Vietnam will be the first market Skunkworks concentrates on, but expansion will start soon, probably first into other Asian countries. Although announced on MobileDevCamp, the service is still under development. It is planned to launch a “beta” phase in around one month from now (let’s say the beginning of September, just to know when it’s time to get impatient). By then, at least the app for Android phones will be available for download, the iPhone version is also under development. A name for the service has not been revealed yet, nor more concrete information about the business model and long-term strategies. I am definitely curious to see where it goes.