I have challenged myself to build software every day for a whole year straight. Here are the reasons behind it, how it's going and my learnings so far.
2022 has been the year of challenges for me.
Next to a few other challenges, I have challenged myself in February to work on building software business or personal projects every single day for a whole year. Currently, I'm at day 253 out of 365.
Should you do this as well?
In this article I talk about my why behind it, what I have built and what I have learned.
I mainly had three reasons for doing this:
- Build and strengthen the habit of building software
- A boost in building experience, but also for the "experience"
- Build a portfolio of profitable SaaS businesses
I was partly inspired by Pieter Levels' 12 startups in 12 months challenge, but have also done challenges like this in the past. One of them was not eating meat for a year.
Anyway, Levels' approach didn't seem right for me, as I'm working full time.
I shifted the idea from X startups in Y time to continuous progress. I wanted to test my limits in terms of discipline and consistency, building startups or side projects every day, while also working 40 hours for someone else.
I may start a more outcome oriented challenge once I finish this one.
First off my rules for the challenge. There is only one:
At least one meaningful commit per day
That's it. Simple. "Meaningful" is obviously up for interpretation, but since I'm challenging myself I wanted to make sure I couldn't cheat with menial tasks. Meaningful generally means one of the projects I'm working on made progress in some area.
Maybe a button here, a lambda function there, you get the gist.
Here is what I have built so far:
- Shell Buddy Landing Page - The landing page and backend logic (lambdas + GPT-3) for Shell Buddy
- Shell Buddy Raycast Extension - The Raycast extension code for Shell Buddy
- Supatabs Landing Page - Landing Page and docs for Supatabs
- Supatabs Chrome Extension - A Chrome Extension to manage tabs
- Chrome Extension Template - A template to build Chrome extensions with React, TypeScript, TailwindCSS and Vite
- Send URL to Things3 - A Chrome extension to send the current browser page URL and website title to Things3 as a new task
- ChronoShift - A timezone converter, incl. geocoding and reverse geocoding (mainly bug fixes, as I have built this in October 2021)
- My Personal Website - My little corner of the internet
- My Personal Blog - Technically part of my personal website, but I keep the blog articles in git and spend quite a bit of time and effort writing them, so this counts 😊 (part of building my presence on the internet)
- Cynge - A service to create QR codes and collect customer reviews for Google and Facebook (discontinued)
- gist: TypeScript Chrome storage hooks - a byproduct of Supatabs
- gist: React & Tailwind glowing gradient border buttons - a byproduct of Shell Buddy
- An OG image generator for my blog (just functions now, but this used to be a deployment on Render with puppeteer taking screenshots etc.)
- Leadalytics - A backend application to scrape Shopify stores for specific data (tiny project for a friend)
- A chat popup - Playing around with iFrames as a start for a new project
That's it 🚀
It was quite taxing at the beginning to program every single day. Not only do I program at work, but now I'm also building after work. I'm not going to lie... It took a lot of getting over myself on some days.
Because it was hard at first, I focused on one task per day. This usually equaled 1 commit.
What helped a lot was planning my upcoming task the evening before. That way, I always new where to start and could plan smaller things for fuller days and bigger things for less busy days.
I slowly ramped up to more commits. You can kind of see this in my Github commit history. It's amazing how much quicker I can make connection or spin up anything.
Learnings so far:
- Programming every day makes you much quicker. I make connections way faster now, and it feels great to ride this wave of momentum
- It requires a lot of discipline on some days to keep going. You can find my tips on discipline here
- As I want to grow these products and businesses I also do some marketing tasks. This includes small product videos, Reddit posts, Reddit answers, Twitter outreach and forum posts. Marketing is a ton of work besides just the regular programming, which I definitely underestimated.
- If you want to get stuff done and not just learn new tech use a familiar stack. You can find a write-up on the stack I use here.
- It's amazing what you can do with momentum. Looking back on all the things I have built in just 254 days AFTER work is insane. I think keeping this momentum is vital.
- Tech: I obviously learned a lot in terms of tech, but I'm not going to list this here. The list would be too long
Should you challenge yourself to program every day for a year?
I'm not sure. It's pretty intense.
So far, I would say it has been worth it, but we will see how the last ≈100 days will go. I still need to make it through the Christmas holidays.
I would probably recommend a challenge with one day off per week, if you wanted to go a little easier on yourself 🙂
With that, happy hacking!
If you liked this article and know a friend who could benefit from it as well, please consider sharing it 🙏 If you want to get news and updates from me, subscribe to the newsletter below 👇 or follow me on Twitter.