As developers, many of us have an idea for some side project. For many this is just a thought, something that has been stewing in back of our minds. All too often, these stay as just that, ideas. Often this is due to time constraints. Work is busy, family and friends take up our time or we just don't have the energy.
There's another far more common reason. Its dam hard to get started.
Building habits is difficult. Studies have shown that it takes on average 21 days to build a habit. (Some guy in the pub told me that). It's the reason why it's often tough to drag ourselves to the gym or start to learn something new. We begin at first with an exuberance, which soon subsides as we realize the extent of the work involved in our new venture. We have lofty goals that we aspire to. These goals appear distant from our lowly starting point.
There is often a gap between what we want to build and what we can realistically achieve. We set out to create something ambitious, epic, game-changing but soon realize the extent of the work involved. This same conundrum befalls many a new developer. You're learning how to structure a HTML document but you want to build a single page application that you can show to your friends.
Our brain gets a similar rush of serotonin from telling people our plan as it does from executing said plan. (More barstool facts) Talking about an idea is rewarding in itself. Planning and imagining our project feels great and takes far less work. We should not linger too long in this zone of non-building.
1. Plan, don't over-plan
Sure, dream big, have a vision, shoot for the goddam stars. Having a road map is absolutely a positive thing. Just don't over plan. Set your expectation of success. For many of us that maybe "The was harder than expected but I learned something new". Concentrate on small achieve tasks. If you build and build that success will become an inevitability.
2. Start with small and achievable
Focus on small, achievable tasks. These should be some small piece of functionality that adds a small piece of value. As much as it can this should be end to end. It should bring a user from start to finish for a single feature. Set out a number of these small achievable tasks early on. You will be able to build some momentum in this way. Once you get into a cadence of some sort you can start to plan further ahead.
Day 1 maybe create a wireframe of the first user journey. Day 2 build out your skeleton app. Day 3 get some sample data from your data source to your view.
3. Build an MVP
The best way to validate an idea is to get it out into the world. With some luck, people will see the value in your idea. Your reward circuitry in your brain will get it hit. New motivation will overcome you and you'll start on v2.
Having a goal of something deliverable early on will help steer your first feature set. By dividing an conquering what was daunting becomes more manageable.
As your building this MVP a strong focus should be making this deployable. Build this into your initial plan. Ideally, deploy each feature as they as built into a test environment.
4.When building, build towards an outcome
When you sit down to start planning/developing, have an outcome. At the early stages that may be a wireframe or a list of features to build next. Have in mind what you should have done by the end of your session.
When working with others, go into meetings with an agenda of what to discuss. Outline your desired outcomes from the start. Going into meetings everyone should know what should be taken from the meeting. After the meeting you want to be one step closer to your next milestone. Think of your desired artifacts from the meetings as being concrete actions.
…. ok then its time to stop reading and go build that project.