Sometimes being a pro is all you've got

It’s Monday morning. I check my email. I see we’ve had a major systems issue overnight while trying to return from our secondary data center to our primary.

This move was planned in advance. It was communicated to our customers. It was run on schedule. And it still went wrong. The best part? The retreat to our secondary data created another major issue wherein we duplicated some credit card transactions, so a handful of our customers were charged twice.

You can read all the gory details here…but honestly, it doesn’t get much worse than this.

FreshBooks has been at this for 7 years. In the process we have created the category we now lead: online invoicing – it didn’t exist before we breathed life into it. Now we’re managing data on behalf of millions of people. We take this responsibility seriously. We’ve built a team of extraordinarily dedicated professionals to ensure our success and that of our customers. And yet, still, mistakes, errors and issues happen…and it hurts like hell when they do.

Right now I am watching the faces of our most talented people. They are moving swiftly to action, measuring every step, taking the whole load on their shoulders and methodically doing what needs to get done. They are heros in my books – I’ll tell them when the dust settles. Why? Because, as I watch them make their moves from within the war room, I know in my heart it could not be done better than they are doing it.

Still, we are here. We’re a little guy, though I don’t accept that as any kind of excuse. It’s no comfort that even the big guys have trouble. I just wonder openly: why, despite the best efforts of hugely talented people does it have to be so hard?

The world is a better place because FreshBooks helps businesses get paid so they can focus on what they love to do. The issues that have occurred this morning are not due to carelessness, more than anything they feel as though they are rooted in growing pains, and that despite our best efforts, things still go wrong.

So I’m reminded that it’s not how you handle things when times are good that matters, it’s how you handle them when they go pear shaped. I’m also reminded how good it is to have real pros working on your problems…and that sometimes being a pro is all you’ve got.

Start begging for forgiveness

We’re at an interesting point at FreshBooks. We’ve grown out of my parents basement, into our third office where we’re expanding our footprint. From Joe and I in 2003 we’ve grown to 40+ people cranking away. Along the way we’ve blown through many stages, and now we’ve come to another one.

While we don’t have a strict top down culture, one of the things I’m finding is we have more of a top down than I ever imagined or ever intended. The solution? My new mantra: “beg for forgiveness, don’t ask for permission”. I don’t want people asking me, “here’s what we are going to do, what do you think?” I want to shift the conversations to “here’s what we did”, so I can ask, “what did you learn?”.

Obviously judgement is needed as there are some things the CEO should be notified in advance, and the truth is I still wear a couple hats. That said, I trust my team to make those calls.

So…we’ll see how it goes. But if you are building a business and find yourself here, ask your team stop asking for permission; ask them to beg for forgiveness.

5 tips for choosing a co-founder

Re-posted from FreshThinking:  5 tips for choosing a co-founder

They say choosing your partner is the most important decision you will make in life. I’d say choosing your co-founder(s) is the most important decision you will make in building your company. Here are five tips to help you choose wisely:

Demand Passion
Starting a company is lonely, thankless and costly. It will test the deepest fibers of your being. The only thing that melts these obstacles away, leaves you raring for more, is passion. You can’t fake passion. It lights up your eyes and charges your voice when you talk about what you love. If you have a great idea, and you want to bring it to life, find someone who is passionate about your vision.

You either have it or you don’t. When the dark clouds come – and they will – you find out really quickly if you trust someone. When your mortgage is on the line, you better have trust. Mistrust is a cancer in relationships; it breeds sleepless nights and suspicion. The good news is you can avoid it by choosing a founder you trust, then work to foster deeper trust in your relationship over time. Keep in mind that it’s a never ending process.

More than Money
There’s more to life than money, and chances are money is a long way off if you are building a company. So again, find someone with passion as they are sure to be in it for more than the money.

Choose your Compliment
Like a partner, a co-founder should be strong in areas you are not. A great compliment to your skills is someone who loves to do things you hate, someone who makes the sum of your parts greater than the whole.

Give them Equity
This may seem like a no-brainer when founding a company, but I meet people who expect others to care as much as them about the business when they don’t own any of it. If you believe they will if they don’t own a piece of the business you are seriously deluded.

Canadian banks are out of control

Just went to a CIBC deposit $400 USD in travellers cheques to give some funds to Sunir as he heads off to BarCampOrlando. Somehow my $400 USD turned into ~$382 USD. Unconscionable.

There are really only five banks in Canada. Oligopolies are bad.
On a somewhat related note for anyone out there building web applications. A similar kind of levy may be exacted if you are collecting dollars in your non-native currency. If that’s you, you may want to have a look at this post I wrote about service to currency exchange and web services. Bit of a plug for a service provider we use, but also a smart way to save some money.

Yahoo's decline aides Open ID

This is a little cynical, but I’m thinking that Yahoo would not have started the Open ID drive had they not been having difficulties.  Being in trouble encourages you to mix it up a little, and I’m (cynical) thinking that grasping at straws brought on this move.  Any way you slice it it’s good for the web.  I was ragging on Microsoft’s Phil Holden over a year back to do something similar…great to see the 800 pound gorillas getting on this thing.

Search and web apps and conversion funnels

The truth about Google Analytics is that it’s not half as helpful as people make it out to be if you are running a subscription based web app. Why? You can’t correlate things like search terms with conversions to paying subscribers. I know you can with trials using their little code snippets, but seriously who cares?! Paying subscribers are what matter.

I wrote an article a while back about tracking conversions for your web app and optimizing your conversion funnel. The following is a technical follow on to that article and describes how we at FreshBooks know which sites – and which search terms – turn traffic into, not just trials, but paying subscribers.

Take it away Jeffrey:

We use cookies set in PHP to track entry pages, referring domains and referring URLs. Cookies are used because their value is stored even if the user leaves the FreshBooks website or if the user closes their browser window.

We set two cookies, the referring URL and the URL used to access the FreshBooks website (entry page). We also set the cookie to expire in 90 days so if they come back at a later date we still have data from the first time they visit us. The code below shows how to do this. It is place at the top of every page on the FreshBooks website

setcookie(“referrer”, $_SERVER[‘HTTP_REFERER’], time() + 3600 * 24 * 90);
setcookie(“entrypage”, $_SERVER[‘REQUEST_URI’], time() + 3600 * 24 * 90);

Because this code is run on every page we have to make sure it does not set a new cookie every time a visitor clicks on a different FreshBooks page and we also make sure we don’t overwrite the users cookies if they are visit us before and came back.

if(!$_COOKIE[‘referrer’] and !$_COOKIE[‘entrypage’] and eregi(“”, $_SERVER[‘HTTP_REFERER’]) == false) {
setcookie(“referrer”, $_SERVER[‘HTTP_REFERER’], time() + 3600 * 24 * 90);
setcookie(“entrypage”, $_SERVER[‘REQUEST_URI’], time() + 3600 * 24 * 90);

Now when a user subscribes it’s as simple as storing these values in a database which can be used for reporting purposes. First we check if the user has cookies set then we use a simple mysql statement to insert these values into the database:

if($_COOKIE[‘referrer’] or $_COOKIE[‘entrypage’]) {
$referring_url = $_COOKIE[‘referrer’];
$entry_page = $_COOKIE[‘entrypage’];
$pieces = explode(“/”, $referring_url);
$referring_domain = $pieces[2];

$query = “insert into tracking (referring_url, entry_page, referring_domain) value (‘$referring_url’, ‘$entry_page’, ‘$referring_domain’);”
$result = mysql_query($query, $connect);

So there you have it folks. This is all based on predefined PHP variables – standard stuff really. Anyone and everyone building web apps should be taking advantage of them. End of story.

On Service: No one expects you to be perfect

Last week my mom got some flowers as a thank you gift. She was delighted by the gesture and when she went to open the flowers (which were delivered by a third party) she saw that a tulip was frozen, a rose was burnt brown by the cold and the water the flowers were in was practically freezing. Now my mom is a pretty nice lady and she is not the sort to make noise over little things, but in this case she decided the store ought to know that their flowers were arriving in this state.

When my mom called, the store listened, and perhaps more importantly, my mom felt listened too. They also took the next step and sent my mom a very nice arrangement of tulips, and that’s the most powerful part of this story. No one expects you to be perfect. I know my mom didn’t. She called and did not kick up a fuss, it was just an “FYI” as she knows these things happen. The store sent the second arrangement because it was the right thing to do, and that was an unexpected gesture on their part, and pretty much perfect.

On Mentors and Advisors: How to Find Them

Rob just left me a comment over:

Hi Mike. I read somewhere that being an entrepreneur can be the loneliest job in the world. I didn’t understand until I started my business. I think it’s great that you recognize the value of good advice. Do you currently mentor up and coming entrepreneurs?

I have long been convinced that mentors provide great value, and I because I am outspoken on the topic, I frequently get asked by other entrepreneurs if I know any mentors that could help them, or if I can help them myself. I don’t and I’m not able to presently, but here’s what makes a good mentor and how to discover a mentor for yourself.

Step 1 – Admit you don’t know everything and you need help. No mentor is interested in a know-it-all who is closed to the advice they bring. While this may sound obvious, many entrepreneurs are not open to mentors or their advice – it’s a shame.

Step 2 – Consider your personal network of family and friends- consider it long and hard. I’m willing to bet you already know someone with great business and management experience, or someone in your network who does. I recommend appealing retired business people and/or people who are a few years ahead of you in the same industry. If your network comes up dry, create one. Go to a conference, talk to the local chamber of commerce, reach out to your accountant, your lawyer, the local coffee shop owner – entrepreneurs know other entrepreneurs, and so do the professionals entrepreneurs rely on.

Step 3 – Reach out to your prospective mentor and ask if you can buy them a coffee, a donut, 15 minutes of their time. Do not make it a pain to spend time with you; fit yourself into their schedule (i.e. this is why lunch is a great option – everyone has to eat, and it’s during the workday so it does not cut into family time). Travel if you need to, a good mentor is worth the commute. Since it helps to establish a personal connection with a prospective mentor, don’t send an email asking if someone wants to be your mentor. Instead make a phone call, visit their office or send an email and say you are wondering if you could take them out to lunch and “bounce some questions” off of them because you are wrestling with some things as you grow your business. This will appeal to their vanity (they are human after all!) and it gives you the chance to “try before you buy” which is *always* a good idea. If they are not interested in meeting with you after you make this ask, then they may not be the right fit for you anyway. If you are sure they are, be persistent and follow up after a suitable period (measured in months).

Step 4 (key ingredient) – When you do finally meet, lay yourself bare. Wise people are drawn to less experienced people who are open about their areas of weakness and concern. Tell your mentor (or prospective mentor) your true state of affairs. Sugar coat nothing. This will foster trust and stir genuine desire to help in a prospective mention – it’s the un-written rule: mentors need to be needed.

I hope this helps.