OrderedList

Lessons Learned Bootstrapping Harmony

Over the course of the past year and a half, we have learned a lot through building and releasing Harmony. I thought it might be helpful to reflect on what we have learned thus far and share those lessons with you.

Deploy Early

The primary reason I work on the web is the feedback cycle. I quickly fell in love with the fact that, in a few minutes, I could put information up for the entire world to see.

The same is true of your application. You do not have to tell anyone about it, but deploy it so you can see it on the internet. When you add a new feature, deploy again. There is something magical about seeing your work “live” even if it is unusable. It inspires you to keep going and, trust me, you are going to need all the inspiration you can get if you are in it for the long haul.

Have a Partner

I was recently talking with a friend about being a lone wolf. We agreed that you have to be special, and that kind of special might not be the good kind. Inspiration and enthusiasm are two of the most important things when building a product. The key is that they work more like multiplication than addition.

There have been several days where I dreaded working on Harmony. Yes, I said it. And Steve has said it too. But when I fire up my text editor and browser and see that Steve has styled up some stuff I roughed in the day before I get fired up. The same thing happens to Steve when I rough some code in and he can just focus on design instead of building. Seeing progress without doing any work yourself is priceless in regards to motivation.

Users are Forgiving (with regards to bugs)

We waited and waited to release Harmony to people other than ourselves. When the day finally came we were both quite nervous as we sent out a few emails to friends. Take note that we invited friends. If anyone is going to be forgiving about a bug, a friend will be, yet we were a little on edge.

As the days of the friend only period went by, we were surprised that no one was really complaining about bugs. And let me tell you, there certainly were some. The first thing on everyone’s radar was features. When will it do this? Can it do that? They overlooked the inconsistences and worked around them, but they were really concerned with features, as they liked what they saw and wanted to do more.

This got me thinking and I quickly realized that I do the same thing. If something goes wrong, I refresh the browser. If it works the next time, I do not even think twice. This is definitely an interesting observation.

A Good User is Worth Their Weight in Gold

We have had a few people who we invited that just dove in. They started cranking out sites, requesting features, reporting bugs and twittering their love. Along the lines of having a partner, this kind of feedback is inspiring. Seeing someone else use your software and love it makes you want to make them love it even more.

Get people in as soon as you can and seek out those who would be a good fit. The feedback they will provide truly does help shape the product and will inspire you to keep going when the going gets tough.

Outsource That Which Does Not Delight

Billing

You will quickly notice the theme of this post is staying inspired and motivated. Another key to that is avoiding anything that you will dread. One of those things for us was billing. Do not get me wrong, we were looking forward to billing, we just did not want to have to write the code.

Thankfully (to the cloud among other things) several people have solved the problem of billing so you do not have to. We researched several services, such as Recurly, Chargify, Cheddar Getter, and finally settled on Spreedly. Spreedly was so easy to integrate with Harmony, we felt like we forgot something. It took about a day and a half to get the current implementation working.

Hosting

Another piece we have completely outsourced is hosting and management of hosting. Steve and I know that managing servers is not one of our strengths. The phrase “enough to be dangerous” comes to mind when describing our skills in this area.

Thankfully, we have partnered with RailsMachine and are getting stellar managed hosting support from them. This is also related to deploy early. The time between talking with Railsmachine to having a staging server up and running was freaky fast. These folks seriously have automation down.

Support System

The last piece of the puzzle that we outsourced was support. Not in the sense that our support is handled by someone else, but the system we use. All of Harmony’s support is handled through Tender, an incredible support system that makes support as easy as responding to an email. They even have a feature called multipass that allows Harmony customers to just submit support requests with no need for a tender account. Their Harmony details are automatically shared.

Tender’s support system has made support really easy and our customers have noticed. We often get comments wondering if we sleep. We’ll keep it a secret for now that we actually find support fun.

You Will Feel Overwhelmed

There are so many things we want to do with Harmony. We really feel like what we have accomplished thus far is just the tip of the iceberg. I know that sounds cliche, but it is true. If you are passionate about something, your head will always swim with ideas and this swimming tends to lead to feeling overwhelmed.

When this happens, make a list. Honestly, you do not even have to keep the list, you can just throw it away. For some reason, unbeknownst to me, lists help calm the brain. I think it is that keeping ideas in your head feels like herding cats. Putting them down on paper (yes, real paper) helps structure things and seeing everything structured helps you realize it is not so bad.

You Do Not Need Money

Last, but definitely not least. I am going to repeat that. You do not need money. Think about all the startups out there that had money and failed. Money will not be the reason you fail, lack of persistence will.

We have been tempted several times to look for money, but each time we practiced patience. Sure it took us quite a bit longer, but now we have a launched product and we owe no one. Our only debt, of any sort, incurred during this phase is our own time.

Hope this helps those of you out there thinking about or currently working on a product. Feel free to ask any other questions in the comments. We want to be very open about what we have been through.

Update: Rick Olson added another great point. Embrace Open Source.

13 Comments

  • Anthony Garand

    I listened to Steve earlier this morning talk about the most difficult part of designing something is the blank document. How did you start Harmony? Did you begin with documenting everything, did you start designing an interface, or did you get right down into code?

    Awesome work so far, it’s a breeze to use and I hope it keep’s its simplicity as features are added.

  • Faktura VAT

    Like Paul Graham said persistence is the key http://www.paulgraham.com/really.html I love startup bootstapped.

  • John Nunemaker

    @Anthony Garand: We started with code. Generated a rails app and some models. I actually hacked on code for quite a while before we had an interface to go with it.

  • Steve Smith

    @Anthony Garand: Also, Harmony is completely different now than what we did at first. The interface and workflow is totally different, and most — if not all — of the code has been rewritten. The key is to start somewhere. Then adapt, change, and improve.

  • Kyle Fox

    This sounds very similar to what the experience of building myfotojournal.com has been, particularly the part about users being forgiving. When we launched out beta, we were very self-conscious about the state of our product. To us, it felt buggy and unstable. However, after running the beta for several months, not one user has mentioned the “bugs” we were so ashamed of. Instead they praised the cool things that did work and, as you mentioned, asked “can it _____ ?”.

    As an aside, we’re also using Spreedly. It’s a really fantastic service.

  • Ryan Walker

    Great post John — thanks. And Steve thanks for sharing that you guys have rewritten just about every bit of code as part of the evolutionary process. Sometimes, when I find myself doing that, I question my skillz wondering if other people rewrite stuff so much :)

    I actually just launched a product this week that I’ve been sitting on for months, using myself, trying to get it closer to perfect (http://gapattack.com).

    I ended up picking 50 people from LinkedIn and sent the link and request for feedback out. Around 20 of them created accounts, and having real conversations with “friendlies” about it is really inspiring me to continue developing the product.

    So +1 on the “Get people in as soon as you can” suggestion.

  • Joel

    John I agree with most of what you’re saying – but find it difficult to think about the partner thing and not bristle. When one is passionate about an idea, or project, or even a half-way finished application – it’s not quite so easy to just say “get a partner”.

    Finding that person with complementary skills and vision, not to mention the enthusiasm, time, and NEED (not want) to work with you is so much easier said than done. My business partner(s) and I are all on the same wagon when we say we want to create products instead of client work, but life can get in the way of things pretty quickly.

    Where do I find my “Steve”? It’s not easy – shoot it’s REALLY hard.

  • Frederick Polk

    I would be interested in to knowing how Harmony came to be, even, what was the process for naming the app & what was the project’s workflow. Otherwise, AWESOME. Thanks for sharing. :-)

  • John Nunemaker

    @Joel: Yep, I did not say it was easy, just that it was important. I feel for those that have not found someone else to work with.

    @Frederick: As far as history, Steve and I both worked at the University of Notre Dame and created a multi-site CMS named Conductor. We saw how much it improved our efficiency so once we had both left, we started over on Harmony.

    Naming was mostly Steve I think. He suggested it and I liked it. Naming has never been that important to us. If you have a great product, the name does not matter.

    As far as workflow, I do the majority of the model/business logic work and Steve focuses on the usability/interface side of things. That said, we both cross over occasionally. Typically, I get things functioning, but rough. Steve makes it work and look great and then I do a final pass. Works great for us, but others tend to find it a bit too unstructured.

  • Jo Potts

    All very valid points indeed. Thanks for sharing. As Joel points out, having the right partner is probably one of the most important yet one of the most difficult to achieve. You’re fortunate.

    And referring to Rick’s reminder about embracing Open Source, one of the things that personally kept me checking back on Harmony was your post on evented single page applications:
    http://orderedlist.com/our-writing/blog/articles/building-evented-single-page-applications/

    It would be great to see the gist expanded into more of a robust framework as you suggested – once you get the time! :)

    Look forward to trying the app.

  • michael

    nice article

  • Byron Rode

    This is probably the most helpful, inspirational and motivational blog post I have read in ages. I worked with a startup, and it wasn’t easy. It pushed me to my limits, and made me question whether development really was what I wanted to do.

    Having it mapped out like this gives me hope that I can actually work on the things that I want to.

    Something that I could add, and that I learned along the way, that can either be bad or good for your product is hype.

    I’ve known about Harmony since you joined Ordered List John – that was the first time I had heard of it. I’ve heard of it once or twice since then, but nothing huge – this could also be because I live in a cave ;) – but from my experience, and from how the product looks now, this has been beneficial to you, because when you do release to the public, it will be rock-solid. I would wait another year for that.

    The startup I worked with made a huge hype about our upcoming product, and we ended up making made promises we couldn’t keep, whether it was features, or release dates, burning ourselves out, and putting far too much stress into our working environment. This put more pressure on the development, and caused more bugs, led to financial constraints, and silly mistakes.

    But it also helped pinpoint areas that needed attention.

    So hype can be good for any product, but the key is to ensure that you can deliver on that hype.

    Really looking forward to the public release.

  • Max Williams

    Some great points John, I agree with them all. We (at New Bamboo) seem to be doing most already. Pusher (http://pusherapp.com/) doesn’t really have a fully fledged business plan yet, we just thought we’d punt the idea out to people and change it based on their feedback ;)

    Releasing early cannot be underestimated in terms of project energy. The contrast between the anxiety before launch, and exhilaration afterwards is immense. There is nothing more inspiring than people saying they love what you’re doing to drive you forwards.

    Thanks for summarising so neatly.