Justin Duke

Time is money, friend

Cushion, a SaaS for freelancers, has a transparent log of its running costs and expenses that recently got posted to HN and spun up a lot of positive discussion.

(This page has been around for at least a year, and I think it’s awesome – it’s what inspired me to similarly start tracking expenses for Village Blacksmith.)

One of the fairly common discussion points on the post was about how the accumulation of so many ‘small’ costs – in the $10-$50 a month range – can add up to such a substantial amount.

One commenter wrote:

This info is actually very useful for me as it confirms my (rational) fear of accumulating expenses. It’s way too easy to just spend $10-$50 here and there and before you know it you are spending $1000 a month, while the core service is still running on a single triad of web-server/worker-server/database-server combo with no redundancy.

To which another replied:

I literally use none of any such paid services. Zero. It’s really not that hard. Just automate what can be automated.

As someone who’s starting to accumulate these costs in the processing of spinning up ‘legitimate’ businesses, I don’t love this line of thinking.

It’s true that a lot of common paid services can be spun up by a developer rather than vended as a SaaS. I’m talking about things like:

  • email marketing like MailChimp
  • user analytics (and analytics analysis) like Segment and Google Analytics
  • logging and exception tracking like Sentry and BugSnag
  • support platforms like Intercom
  • basic surveys and customer insights like TypeForm
  • web hooks and automation like Zapier
  • revenue analytics like ChartMogul

None of these are particularly technically challenging, on the surface. They’re definitely not trivial to implement, but there are no prohibitively complex barriers that stops a developer from rolling their own solution to the problem.

So why shouldn’t you create your own solution to these problems?

Hell, I’ll take the simplest example I can think of: BriefMetrics, a simple (and lovely) service I use that sends me weekly digests of Google Analytics data. The data isn’t subject to any complex analysis or munging: it just saves me the effort of having to dive into the labyrinthine Google Analytics dashboard to grab the data I care about.

Two notes about the cost of this service:

  • This service saves me around five minutes a week.
  • This service costs me $10 a month, so over three years it’ll cost me $360.
  • This service – for my uses – is easily replaceable with, like, fifty lines of Python. A hundred, tops.

So why haven’t I written my own version of it, and lowered my expenses?

I know I could spend maybe two hours 1 writing a replacement for it and set it on an EC2 host and probably never worry about it again.

I value my time at $200 an hour. (In fact, I value my time a little more than this, but $200 is a nice round number and it’s roughly my consulting rate). That means the two hours I spend costs me $400 in labor.

This brings me to a straightforward decision, right? If I think I’m going to use this for more than three years I should just spin it up myself – the investment in time ($400) will pay for itself over the long haul end up being cheaper than me shelling out for the service each month ($360 for three years).

Except that’s not counting all of the other little pieces:

  • What happens if the API changes?
  • What happens if I run into a new edge case a year down the line?
  • Where does this new cron get deployed? What happens if that host goes down?
  • etc etc

If there’s one thing that I’ve learned as a developer, there’s no such thing as a true one-time-fee when it comes to development: everything carries technical debt, and you’re going to have to hit it sooner or later.

So I let BriefMetrics handle everything there. Maybe, at some point down the line, my needs will change or the price will increase and the calculus will work out differently.

But my engineering time is sacred – I want to spend it as smartly as possible, and if I can save a couple hours by coughing up a paltry monthly sum, I will. There are bigger fish to fry.

Truth be told, I feel like I’m the type of person who wants to roll my own dependencies most of the time. Building stuff is fun, and the endorphin rush of completing a component that saves me a monthly bill is great.

But it’s rarely the responsible thing to do with my time.

And I figure if I’m ever in a position where implementing away a $19/month expense is the best use of my time, then something’s wrong, you know what I mean?

  1. And, knowing Google’s APIs, this is a tremendously optimistic estimate. [return]
Liked this post? You should subscribe to my newsletter and follow me on Twitter.
© 2017 Justin Duke • All rights reserved • I hope you have a nice day.