blog home

Realising what really matters

April 7th 2009

comments

My least favourite part of making web apps is usually dealing with billing. I can't excited about it. I usually put it off as long as possible not the least because I loathe payment gateway APIs as a whole. I'm coming to the end of a product release and I was running out of excuses to put that part off any longer.

I started off planning the different states or circumstances a user would be likely to find themselves in.

 

All pretty simple stuff. Then I started to think about an edge case. The application gives new users a free trial and at the end of the trial period turns off their access until they provide their credit card details. Or of course, allows them to close their account without charging them. But then I thought "what's stopping them from having a free trial, closing the account and then opening a second account, having another free trial and so on". Crikey, I can't have that! So I went through a few scenarios where I track who's had a free trial and look out for that at signup. If they match someone who's already had a free trial I show them a different sign up page where I tell them that they're welcome to signup again, but they get no free trial and they have to hand over the moola right now.

So like I said, I hate coding billing logic anyway but I was getting really stressed working on this because i) I didn't want to and ii) I figured it was nearly impossible to stop a particularly dedicated douche from signing up for multiple free trials under different aliases etc. I got really bummed out and it sapped my creativity for the rest of the day. I tried working on something else but it was nagging me all day.

After a long and wasted day I sat down away from the code to think about what I was going to do. But then I started to ask myself if it was really worth it? No matter what I do, there'll be some way around it (I hadn't got as far as requiring retinal scans, but I wasn't far off). I started to think that the type of people who would do this wouldn't be the type of people who'd use the app. It's there in the terms of service, it stinks of dishonesty, that should be enough to discourage most people. Was all this extra complexity in the code going to be worth it?

I had such a crappy day working on the app that I couldn't bear to even talk about the app, never mind pour any more of my heart into it. Then I had a light-bulb moment. I should be focusing my time and energy on persuading people to love this app and want to pay for it, not trying to lay traps and webs of gotcha code. If anyone is dishonest enough to want to use the app but not want to pay a few dollars a month for it, then I’m never going to win them, no matter how smart I make the signup process. They’re a waste of my time.

So I let it go and got back into thinking about what I could do to make my users happy and to build the best darn app I could. That is what matters most, that is what merits my attention and sweat. As far as anything else is concerned: what will be, will be.

blog comments powered by Disqus