I recently launched a startup called PeerRaiser, a peer-to-peer fundraising WordPress plugin for nonprofit organizations. But getting to this point, actually launching it, has been a difficult journey.

As I’m sure a lot of developers can relate, I was working on this as a side project in my spare time, but not making any real progress on it. In fact, I had been working on it for 2 years with no end in sight. My efforts were scattered and inconsistent.

I realized that it may never be finished if I didn’t change what I was doing. I decided to commit to working on it every day and treat it like a real project.

“Don’t Break the Chain”

You may have already heard of “don’t break the chain,” a method that is often attributed to Jerry Seinfeld. Basically, you put a big red X on the calendar every day that you complete some task (writing, coding, reading, etc). After a few days in a row you’ll have a chain. Seeing the chain grow will motivate you to keep the streak going because you won’t want to break it.

In a Reddit AMA, Jerry Seinfeld said he doesn’t want credit for the productivity hack. As he explained when asked about it:

Either way, it inspired me to change how I finish PeerRaiser. I would commit code every day until it was done. Along the way, I learned some valuable lessons that I think others may find useful too.

How to use Github to track your coding streak

Github has a cool chart on your profile that shows your commits. I found it really motivating to see those green boxes add up as I committed code every day. At first, it was easy to count how many days in a row I had done, but after a while, it was hard to tell at a glance what my current streak was.

Github used to display stats under that chart telling you how many commits you made in the past year, your longest commit streak, and your current commit streak. This was perfect for the “don’t break the chain” method because you could see your “high score” and “current score.”

Unfortunately, Github removed those stats because some people found it harmful. I can understand their reasoning, but personally, I think I should be able to see my own stats, even if those stats aren’t displayed publically.

Luckily there’s a Chrome extension that brings those stats back! With the extension installed, you can see the contribution stats when viewing any profile on Github. Perfect!

Carve out time in the day for coding, and stick to a routine

My Self Journal. Great for writing my schedule (and silly doodles)

I have a full-time job and a toddler at home. It can be very difficult to find quiet time to focus on programming without interruptions. After a long day of intense coding at my day job, sometimes the last thing I want to do is more of the same when I get home.

Sticking to a schedule, and creating a routine, is one way of beating procrastination. Humans are creatures of habit after all. Creating and sticking to a schedule can help develop a sense of stability and order. You don’t have to rely on yourself to “get motivated” when it becomes something you do automatically.

I discovered a useful tool called the Self Journal. It’s a physical journal that helps you plan your day and align them with your overall goals. With this, I was able to plan out my day and figure out when I could dedicate time to my side project.

Have someone who can be your support system, and also keep you accountable

I couldn’t have done this without the help of my supportive wife. I told her how important this was to me. I’m very lucky that she understood that, and did what she could to make it possible. Almost every night, she asked “Did you commit yet?” or “How many days in a row is it today?”

If you have some kind of accountability to someone other than yourself, you’re more likely to follow through. I knew that if I broke the streak, I wouldn’t just be letting myself down.

Always know what you’re going to code each day

Clubhouse.io is like the best parts of Trello and Jira

At my day job, we use a project management tool called Jira. Every day when I come into work, I know exactly what tasks I need to work on. There’s never a moment when I don’t know what to do. I decided to apply that to my side project as well. I would treat PeerRaiser like any other project that needs to get done.

Using Jira for your side project is probably overkill though. At first, I started using Trello. Trello is a very popular tool for task management because of its simplicity. But personally, Trello was a little too simple for me.

I found a happy medium with a tool called Clubhouse.io. It’s a great mix between the simplicity of Trello and the power of Jira.

What tool you use doesn’t matter. Just make sure you have a plan.

Don’t be discouraged if you break your streak! Keep going!

This is the biggest lesson you need to learn. You’re going to fail at some point, and that’s okay.

If you break your streak, that streak becomes your “high score” and now you have a new goal… beat your high score.

If you look at my commit history, you’ll see that I failed a few times before I hit 150 commits. I had a streak of 9 days in a row and another of 13 days before my current streak. If I gave up after the first time I failed (or the second time), I probably never would have launched my startup.

And just because my startup has launched, that doesn’t mean I’m ready to break my streak! There are always new features to add and bugs to squash! Now that I formed this habit, coding every day is something that has become second nature.

What are some tips and tools you use to maximize your productivity?