DEV Community

STACKFOLO
STACKFOLO

Posted on

How I Built a Daily Coding Habit (And Stopped Abandoning Side Projects)

How I Built a Daily Coding Habit (And Stopped Abandoning Side Projects)

I have started and abandoned more side projects than I can count. The pattern was always the same: a burst of motivation on a weekend, three intense coding sessions, then nothing for two weeks. By the time I came back, I had lost all context. The codebase felt unfamiliar. The enthusiasm was gone. Another repo joined the graveyard.

The problem was never ideas or technical skill. It was consistency. I could write code for eight hours when I was excited, but I could not write code for thirty minutes when I was not. And "not excited" describes most weekday evenings after a full day of work.

What changed was not willpower. It was systems. Specifically, separating what I need to do (tasks) from what I need to repeat (routines), and scheduling routines like immovable blocks in my week.

The Task vs. Routine Distinction

Most to-do apps treat everything as a task. "Implement auth flow" sits next to "practice algorithms" in the same list. But these are fundamentally different:

  • Tasks are one-time items with a completion state. You implement auth, you check it off, it is done.
  • Routines are recurring behaviors you want to sustain. Algorithm practice is not "done." You want to do it every weekday morning.

Mixing them in one list creates a problem: routines compete with tasks for your attention, and tasks always win because they feel more urgent. "Fix the deployment bug" will always beat "practice dynamic programming" when they sit in the same list.

The fix: separate them completely.

Building a Routine Grid

I started with a simple weekly grid. Days across the top, time slots down the side:

         Mon    Tue    Wed    Thu    Fri    Sat    Sun
Morning  Algo   Algo   Algo   Algo   Algo   ---    ---
Lunch    Blog   ---    Blog   ---    Blog   ---    ---
Evening  Side   Side   Side   Side   ---    Side   Side
         Proj   Proj   Proj   Proj          Proj   Proj
Enter fullscreen mode Exit fullscreen mode

The rules were simple:

  1. Each block is 30 minutes minimum. Not two hours. Not "until I feel like stopping." Thirty minutes, then done. Most days I do more, but the commitment is only thirty minutes.
  2. Morning routines before checking email. Algorithm practice happens first because once I open Slack, the day takes over.
  3. Evening routines have a fixed start time. "After dinner" is too vague. "8:00 PM" is specific. I set an alarm.
  4. Weekends are optional but structured. Saturday and Sunday have side project blocks but no algorithm practice. Rest days for specific routines prevent burnout.

The ONE Thing Filter

The hardest part is not scheduling routines. It is choosing which routines earn a slot. There are dozens of things I "should" be doing: LeetCode, system design study, open source contributions, blog writing, learning Rust, reading technical books.

I borrowed a filter from Gary Keller's "The ONE Thing": what is the single most important thing I can do right now that makes everything else easier or unnecessary?

For my goal of launching a SaaS product, the answer was clear: ship code daily. Algorithm practice supports long-term career growth. Blog writing builds an audience. But shipping code is the ONE Thing that moves the product forward.

So "Side Project" gets the most slots (5 evenings + 2 weekend days). Algorithm practice gets weekday mornings only. Blogging gets three lunch slots. Everything else either fits into existing slots or waits.

This filter prevents the common mistake of scheduling twelve routines and sustaining zero. Three to four core routines is the realistic maximum for most people with full-time jobs.

What I Track (And What I Don't)

I track two things:

  1. Streaks. How many consecutive days I completed each routine. Not to guilt myself when the streak breaks, but to notice patterns. If my evening coding streak breaks every Thursday, that tells me Thursdays are bad for evening work. I adjust the schedule instead of forcing it.

  2. Weekly completion rate. Out of my 15 scheduled routine blocks per week, how many did I actually do? My target is 80%, not 100%. Hitting 100% every week is unsustainable. Hitting 80% means I missed three blocks, which is normal life.

What I do not track:

  • Hours spent. Time in seat is not the same as progress.
  • Lines of code. Meaningless metric.
  • "Productivity scores." Gamification makes me optimize for the score, not the work.

The Results After Three Months

Before the system:

  • Side project commits: 2-3 per week, clustered on weekends
  • Algorithm practice: "when I feel like it" (roughly twice a month)
  • Blog posts: 0 per month

After three months:

  • Side project commits: 8-12 per week, spread across all weekdays
  • Algorithm practice: 5 days per week, 20+ minutes each
  • Blog posts: 2-3 per month

The total hours spent did not increase dramatically. What changed was distribution. Instead of eight hours on Saturday and zero on Wednesday, I spent one hour on five different days. The context retention alone made each session more productive.

Practical Tips for Starting

If you want to try this system:

  1. Start with two routines, not five. Pick the two that matter most to your current goal. Add more only after two weeks of consistency.

  2. Make the blocks small. Thirty minutes is better than two hours because you will actually do thirty minutes on a tired Tuesday evening. You will not do two hours.

  3. Schedule around energy, not free time. If you are mentally sharp in the morning, put the hardest routine there. Side project coding after a full workday needs the easiest possible entry point (fix a small bug, write one test).

  4. Track visually. A weekly grid where you can see filled vs. empty blocks at a glance is more motivating than a list of checkboxes. Something about seeing the pattern makes you want to keep it going.

  5. Review weekly, not daily. Daily reviews create anxiety. Weekly reviews let you see the bigger pattern and adjust without overreacting to one bad day.

Tools for This System

You can do this with a spreadsheet. Seriously. A Google Sheet with days as columns and time slots as rows works fine for the first month.

If you want something more structured, I built this system into STACKFOLO, a Chrome new-tab dashboard. Its Routine Blocks feature lets you drag habits into a visual weekly grid with Morning/Afternoon/Evening/Anytime slots, track streaks, and separate routines from one-time tasks. There are 50+ habit templates for developers (algorithm practice, code reviews, blog writing, etc.) so you do not start from scratch.

But the tool matters less than the system. Separate tasks from routines. Schedule routines as blocks. Use the ONE Thing filter to choose which routines earn a slot. Track streaks and weekly completion. Review and adjust weekly.

The goal is not to fill every hour. It is to show up consistently enough that your side project stops feeling like a stranger's codebase every time you open it.

Top comments (0)