For the past two weeks, I’ve been having some serious programming motivation issues. Despite the fact that I know what’s causing the motivation issues, I haven’t been able to propel myself out of this mini-slump like I normally do.
Last night I was chatting with a good friend and business partner about the issue, when my friend started discussing a new business he’s been working on. While I’m unable to quote his exact words here (due to lack of certain memory), at some point he said something along the lines of “What I really want to do is quickly build everything, get it to a workable state, then let it just run itself.”
Instantly, the motivation returned.
For as long as I can remember, I’ve had a very specific idea of perfection. Perfection in my mind is complete automation. When I build software, I do so with the intention that when I’m done working on it, it should be able to run and manage itself indefinitely, without any human intervention.
The real beauty of software, in my mind, is that it can last forever.
Imagine a world where every problem was solved by some sort of software or hardware solution. Now, imagine if each of these small, independent solutions were engineered in such a way that they required no human intervention, and could simply carry on working indefinitely.
How awesome would that be?
The very idea that something can be solved “forever” seems extremely seductive to me. What if I never had to do laundry again because there was a sustainable, everlasting solution to that issue? What if I never had to implement a user profile on a website because there was some global service which permanently solved the problem?
Regardless of how small (or large) a problem is, there should be one simple solution that solves it indefinitely.
Since I got off the phone with my friend, I’ve been absolutely consumed by the idea of fully automating some of the projects I’ve been working on. I find that over time as I work on things, I end up burying myself in the little details–and forget about the big picture and goals. It is so easy to get carried away with feature X, or ticket Y that you completely lose sight of your ambitions.
Next time I fall into a slump, I’m going to remember my overall goal of perfect automation, and get back to work.