I've been writing code for twenty years. But, recently, it dawned on me that I've been writing code for money for nearly twenty years. After a few months of getting my feet wet with HTML design in 1997, I started marketing myself for contract gigs. A few years later, I'd picked up enough skills to be hired as a programmer. And, ever since, coding has always coincided with earning a living.
I'm grateful for being able to do what I love and get paid for it. But, it comes with a trade-off. When you're coding for cash, you can't put your own whims in front of your clients or your customers. You can't spend hours on naming things, or trying out a few different techniques just for the joy of it all.
Recently, I decided to change that. The company I had co-founded a decade ago was undergoing a pretty significant transformation that included my own departure (I now work solely for one of the offshoot companies we created). This also gave me a rare chance to reset my work schedule. So, I decided to carve out time to work on my own pet projects again.
But, I gave myself a constraint. When working on my own pet project, my natural inclination is to try to build things that might one day sell. I've always tried to use my coding skillset to build another business because that's what I've been doing for 20 years.
This time, I decided to do the exact opposite. I wanted to build something solely for myself. I forebade myself from building something for an end goal of profit.
The product of this exercise is something I've released called ShiftList. It's a simple to-do list app made for the keyboard. And, obviously, it's completely free.
- I wrote it because it's something I wanted to use.
- I wrote it without doing a whole lot of research on the competition. (I just know there are a lot of to-do list apps out there).
- I probably ended up deleting more code than what ended up in the final product.
- I picked the features that were important to me (keyboard-friendly and it looks like paper!) and left out all the ones that weren't (mobile, calendar syncing, priorities, sharing, commenting, notifications, tagging, categories, reminders)
- I rewrote how the data persisted multiple times until it felt right to me.
- I spent an unspeakable amount of time tweaking the design.
- If this were on a budget, I blew it. I delivered late. I delivered with barely any features. And I had a blast building it. It was everything I was hoping it would be.
By all business measures, I likely failed. But, when I took business out of the equation just this once, I allowed myself the pleasure to just create something. I gave myself the time to think, re-write, and even just throw stuff out that didn't feel good after awhile. I measured success simply by enjoying the process and getting to the final result---features, timelines, and budgets be damned!
I imagine lots of the readers of this community, and particularly programmers that have been at this for years, have fallen into the trap of always equating building products to building businesses.
But, if you have the opportunity, give yourself the luxury of just creating something for the love of the craft. Be self-indulgent. I'm really glad I did.
It's social media for devs
Level up every day