Programming Debt Paid

I’ve been working tirelessly the first half of 2019 because I saw a major goal in sight: for the first time since we launched the Detailed Image shopping cart in 2007, I could be caught up on all of my programming projects. Early in the year I set a goal to accomplish this by Memorial Day, giving me the summer to dial back and relax a bit. This morning I pushed out the code for my last project and hit my goal 10 days early!

With Detailed Image there were several factors that led to a gigantic backlog of important projects. First and foremost, as a business owner, the objective was to increase revenue and reach a point of sustained profitability. That took us many years, and it’s only been in the last few that I think we feel comfortable and satisfied with the business financials. Prior to that, we almost always made the conscious decision to prioritize revenue generating projects, and within those projects to only build the bare minimum to launch, start seeing a return, and move on to the next project.

This meant that we almost always skipped back-end administrative functionality for our team. In theory, this meant that I would occasionally need to adjust something in the code or in the database. Someone would email me, it would take me 10 minutes, I’d email them back, and we’d get on with our day. In practice, over the course of hundreds of features combined with our fast growth, this ended up bogging down hours of my time and slowing down our team by needing to wait for me to change/fix something before they could proceed.

It became clear that this programming “debt” needed to be paid off for us to continue to grow smoothly. And for me personally, it has weighed on me that there was this backlog of unfinished projects. It made it harder for me to feel comfortable taking time off knowing that there were certain situations that the team wasn’t well equipped to handle on their own.

So last year, with sales doing well, I decided to finally pay off the debt. In a lot of ways it was painful: building a ton of reports, email alerts/notifications, and back-end admin functionality is not exactly enjoyable. However, with each completed project I was freeing up time for someone on our team, as well as for myself, making it easier to complete the next project. And as this year started, with an end in sight, I decided to double down and really attack the list.

Now that I’m finished, I feel like the Detailed Image shopping cart project is finally at a “mature” stage, where it doesn’t necessarily need to have a programmer working on it full time to continue to be successful. It’s important as a business owner to realize this, and not to force new projects for the sake of new projects. We have a lot of opportunities to grow and improve with our product selection, marketing, operations, etc, and our collective resources are better focused there. It’s quite possible that new projects done for the wrong reason could negatively impact sales and waste a ton of time and resources. Or, as Basecamp founders Jason Fried and David Heinemeier Hansson put it in their new book It Doesn’t Have to Be Crazy at Work:

“Doing nothing isn’t an option.” Oh, yes, it is. And it’s often the best one. “Nothing” should always be on the table. Change makes things worse all the time. It’s easier to fuck up something that’s working well than it is to genuinely improve it. But we commonly delude ourselves into thinking that more time, more investment, more attention is always going to win.

The goal, after all, is a successful business. And while I don’t regret our decisions, I plan to be more mindful of the consequences and long-term tradeoffs of such decisions in the future now that I’ve got myself back to a neutral position.

For the very immediate future (i.e. the summer), I’m going to scale back my hours a bit and try to find a little more balance in life. I suspect that with all of the rapid launches I’ll have some minor bugs to fix, so I won’t be completely away from programming. And I’ll probably tinker a bit to teach myself some new skills I’ve been wanting to learn. After that, we’ll be free to pursue whatever we want, whether it’s to support further growth for Detailed Image, or an entirely new project or business. Regardless of what the future holds, it sure feels good to have that debt paid off!

2 comments on Programming Debt Paid

  1. Peter says:

    Good to see you back! Was wondering where you have been? Now that you have paid back your programming debt, it’s time for you to pay back your blog debt, lol!

    • Adam McFarland says:

      Haha this is true Peter! I’m going to try to get on a more regular posting schedule…

Comments are closed for this post.