18 March 2018

Start with a plan

Last Friday, the 9th, I decided to challenge myself to get my "Website Polls" idea out of the door. I wanted to start building the project on Saturday, and launch it on Monday. I knew it might be too much, especially considering the fact that I hadn't written a single line of code for this specific project yet. I have a personal codebase with some modules to get set up quickly, with some standardized parts I like. For example, having a registration flow with a code verification email, to confirm people used the correct mail address. I started building these components almost a year ago, because I know myself all too well. I know I like to jump on the next project, I like to experiment, I like to work on multiple ideas, I like to build the perfect application. I figured, why not combine this? Why not work on a single modular codebase that I can keep working on and improve with every project? They are all my projects, and if I like having email signup with a verification code, I'll very likely want to implement this in all my projects. But of course there will be specific parts for each project, which I hadn't started on for this "Polls" project. I hadn't really built anything "embeddable" for another website before, so that was another issue.

I started writing about last weekend on that Saturday afternoon, because I wanted to capture my own thought process, and figure out what holes I keep digging for myself. Before I started, I felt like everything was figured out and lined up. I thought I was ready to just start building.

Saturday

I quickly realized I hadn't thought about the pricing plans, the design, the database structure, or even the Poll layout. I wanted to sketch and think about the Poll's design, but after 30 minutes I realized I already made a prototype with a design inspired by Twitter and GitHub. Time wasted. I shouldn't have tried to do this last minute, when I could've known that I wanted to re-use the same design for the first release. Maybe some form of planning and an overview isn't that bad. 😉

After spending over an hour designing the "perfect" database structure, I realized I was overthinking this as well. I was mainly thinking about features I wanted to implement that weren't even fully formed as an idea yet. Maybe these features would never be part of the actual software, so I was wasting time overthinking this. Writing notes for this blog was a form of "productive procrastination". I basically wasted almost six hours trying to get myself to write the first line of code, but writing about it made me more aware of it.

After that I got lost in a train of thought about my other projects. I did identify better what made those ideas stuck in my head. I also made some more notes and sketches about them, but this wasn't progress for this particular project.

Fuck deadlines?

I remembered I wrote down "fuck deadlines" on a piece of paper months ago. At that time I was very productive and discovered that I actually prefer working on whatever I feel like working on. This could mean working for three hours on one project, and then a couple of hours on another. So no multitasking, because that's a myth, but focusing on whatever I wanted to focus on. I was also working without deadlines. My todo list became just a task list. I could work on any task, in any order, at any time. This contradicts precisely what I challenged myself to do last weekend.

At 5 in the afternoon, all I basically did for the project was opening my laptop.

Sunday

Even though I realized I was struggling to get started, I wasn't fully aware what would motivate me. I didn't want to launch a product without at least the minimum requirements I wanted, and I didn't think rushing it would be any better. Sunday afternoon I watched the Joe Rogan Experience with Jordan Peterson. While I was watching that, something clicked. Trying to code everything in one or two days without any task list or plan is making me procrastinate. I started taking notes and sketching the things I needed to build.

Monday

Tuesday

Tuesday at 9 in the evening, after my day job, I felt like postponing work on my project again. I felt like shit. My sleeping habits got worse, my eating habits turned bad, and I just had a general feeling of annoyance with everything. I suddenly thought: "maybe I feel like shit, because I'm not making progress". I figured I'd just work for 30 minutes, to see how that would go. I really didn't want to start working, sorting through my months-old codebase, figuring out a new database structure. But when I started implementing this new database structure, something clicked. I felt like "the flow" was coming back to me. The problems I made up in my head suddenly didn't seem like real issues, I came up with solutions in seconds. After about two hours of working I was happier. Even though it still felt like a big task ahead of me, I was happy I was building something again.

Making progress

For the next couple of days I made some progress on the project, by just trying to work 30-60 minutes per evening. This could be while I was distracting myself with a podcast in the background, but I at least made some progress. But then another issue revealed itself. I usually work on these blog posts on Wednesday, finish them on Thursday and put them online on Thursday or Friday morning at the latest. I want this blog to be part of my weekly routine, and yet, I wanted to keep working on the project. I want to finish what I start, preferably in one stretch on a single day. That's why I struggle with leaving this project out of my head for even a couple of hours to finish something else, it becomes an obsession. That is also the reason I struggle with launching my projects, because I have this vision of the perfect solution in my head and I don't want to launch before it is even close to that vision. That is a problem if you want to build a business, because the "overnight success" doesn't exist. It's also impossible. I can't just magically finish hundreds of hours of coding in a day, I can't just magically get thousands of users in a day, starting from zero.

What I can do is focus on making progress.