So we’ve been doing some client work at Firmhouse and we love it. We love it because it’s a good learning school. You get involved in projects you normally wouldn’t be involved in. You experience how other companies work at a fairly close distance.
But today I want to write a bit how we, as a bootstrapping company, effectively are bootstrapping with client work. Our vision was to bootstrap with our own products, but as it turns out this is quite hard. So we’ve been actively searching for how we can effectively combine client work with our own projects. A way in which we can build and test our products without outside funding(s).
Our approach to client work is to be ‘product oriented’ instead of ‘project oriented’. When we first meet with a client we directly start scoping the product, not the project. We do this because they’re not asking us to build a solution for them, they’re asking you to build a solution for their customers or users.
Point your vision from delivering a client project to deliver value to their users. As a web company working for clients you’ll experience that a client never has a correct articulated end result. End results always evolve. It’s this change that’s ‘evil’ in most project management methods. That’s because the process isn’t created to accommodate it. When clients request changes, it probably is because they’re learning more about the end-user and how they can capture the value of the product. It’s just the people that pay your bills being concerned that their product is of value to their end-users.
And so you should be concerned too.
Let go of the illusion that you’ll ‘do’ a few clients for a couple of months and then start building your awesome product for a few months. Make your own products and client products work together. You’ll have periods in which you can observe how your product is being used. You’ll have times in which you need to regain focus and need to think outside the box to come up with creative solutions. So why not think in the box of someone else, it’s outside you’re box and you can make some money.
We do this by working in timeboxes. We plan all of our work in timeboxes of two or three weeks (changes over time). We tend not to look further than 1-2 timeboxes. This comes from experience, within those two timeboxes we can deliver two or more working software updates to a client. These updates always instantly create change in which we can accommodate by not planning to far ahead. What if a client requires us to give a fixed end result? We commit to deliver a working product for end users by a certain date.
My advice for starting web companies that want to bootstrap:
- Deliver on products, not projects. Dig into your clients questions and start scoping the product. Working products deliver user value (equals the happiness factor of the people paying you).
- Release early and often. There is no such thing as building off site for 4 months and perfectly deliver something that (fully) satisfies users. If your client doesn’t accept your product, there is no payday. Where there is no payday, there is no money for the months planned to build your product and your back to scratch again.
- Take your lessons learned while building your own products to your client products. Explain a customer the concept of ‘Continuous Deployment‘. We like to push quick updates to the live versions of our client products. Imagine a user asking for a real small and feature.After validating what the client and his users want, push it an hour later to their product. They’ll be blown away. I can assure that there aren’t that much big web companies out there that will do the same.
- Work for the love of products. You need a minimum cash-flow that barely keeps the lights on. This gives you advantages like not developing big spending patterns and being able to easily switch to living from your own products when they’re ‘ramen profitable‘.
I’m looking forward to hear from other startups bootstrapping this way. We’re developing a model for this kind of startups which I will blog about more often from now on.