For some projects, getting started can actually be a bigger than expected hurdle. You know where you want to end up, but writing that first line of code just doesn’t seem to happen. This self induced paralysis can happen to the best of us – and when it does here are some systematic strategies to get the ball rolling.
Make a list. I think the first thing to do is make a simple list of what you think your blockers are. This allows you to easily whittle away them, and you might be surprised that you have less than you thought when you visualize them all together. It’s also motivating; who doesn’t love that accomplished feeling of scratching things off a list and watching that ‘done’ column grow.
The next thing to do is spend some time reflecting and identify legitimate blockers and excuses posing as blockers. The good news is once something makes it into the ‘excuse’ column, it's pretty quick and easy to move it to the 'done' column.
Manage down the scope. We’ve all been there: excited about grand a vision for an app that has tons of sweet features that solves all sorts of problems and gets tons of downloads and 5 star ratings. The to-do list quickly grows and you find yourself staring up at Goliath and there’s no way you can manage, let alone prioritize and execute. The key here is to scale the scope down to something you’re confident you can accomplish. It’s good to dream big, but start small. Maybe you've heard the nifty business term for this: minimum viable product. What is the smallest possible feature set you need to build for customers to find value in your product? Laser focusing on that will make the scope of your project much less intimidating.
Get the ball rolling with the easier problems. There’s a temptation to focus on the hardest problem first. “Unless I solve this problem, the whole project is going to fail.” So that’s where you naturally start focusing. It’s a trap.
While you're spinning stuck in the mud on that one, you've discovered a dozen other tough problems to stress about. Meanwhile, nothing’s actually getting built. The solution? Note the hard problem, confidently put it on the back burner, and start building out the low hanging fruit. Now you’ve at least got the ball rolling. Keep the momentum going by stubbing out dependencies (rabbit holes) that aren’t yet critical to the task at hand. If you’ve been sticking to software engineering fundamentals the hard problems probably got easier along the way. You might also discover that you didn’t even need to solve it in the first place.
Start with the familiar. Fear of the unknown is one of those natural human instincts that helped us survive on the Savanna. In software, we’re constantly venturing into new and uncharted arenas – whether that’s a technology stack or product space. But I bet that new thing isn’t actually as different as you think it is. Finding the commonality between the new and the old can be liberating and confidence inducing. For what’s different, there are likely plenty of examples of similar problems and solutions. Modify and carry on.
Don’t be afraid of failure. What’s the worst that could happen? Seriously. If this is a personal project, you probably just lost some time and maybe the cost of tooling. Your path may have wandered and you may not have hit your target on the nose. But you probably gained some other valuable things along the way. The biggest failure is stopping dead in your tracks, or not getting started at all.