The Short Answer
Small. If you’re reading this blog then you probably don’t have a lot of free time on your hands to work on projects, so the answer is: your project should be small. This is especially true if you are just deploying the first version of your project. I’d even go as far to say that it should be painfully small. You should ignore or remove any features in your project that are not part of the core product.
The Longer Answer
I think there are three stages that a developer goes through when starting a new project.
- Stage 1: Excitement
- Stage 2: The Pits of Despair
- Stage 3: Race to Finish
Stage 1 will almost always be your most productive. You’re starting something new and you’re excited about it. You’re super motivated and you plow through the work relentlessly. You will ride this wave for a while but eventually you will reach Stage 2, and things will slow down considerably. You are deep into the nitty gritty details of the project, and you’ve been working on the project for a while now. You’ve probably started to notice that the motivation you felt in Stage 1 is starting to drift away.
Stage 2 is not nearly as fun as Stage 1 and you find it hard to get some simple features done on the project. For most people, you will spend the bulk of your time in Stage 2. This is also the stage I think most people start working on features that the project probably doesn’t need at all and definitely doesn’t need right now. The problem with adding these features is that you are prolonging Stage 2 and you start running the risk of total project abandonment. You might even find yourself tinkering with a completely different project in Stage 2, and this is when you know things are really going south. Making it past Stage 2 means you have to draw the line with features and improvements.
This might be unpopular opinion but right now you don’t need more tests, you don’t need to perfectly align the top toolbar on iPhone 8s in landscape orientation, and you really don’t need to implement or configure any trendy new technology you can think of. Your first (and probably all) users will not care about anything of these things.
Stage 3 is where things get exciting again. You’ve made it out of The Pits of Despair and you’re putting the finishing touches your project. You’ll probably spend the least amount of time in this stage but you’ll do the most amount of scrambling here. This is where the rubber hits the road and you launch your project, exciting times. Be sure to relax and enjoy the moment before you shift to the next phase of your project. Hopefully, Stage 3 is a place where you are glad you threw out some things in Stage 2 because now the finish line is much easier to reach and you know that whatever you opted not to implement can probably be implemented later. If it can’t, then maybe it wasn’t a good idea to begin with.
You have to move the project forward even if it isn’t perfect. This is crucial to shipping or finishing your project quickly, especially if you only have a few hours or even an hour a day to work on your project. It has to be said that you do run the risk of not implementing the “killer feature”, but I think the reward of shipping your project quickly is worth the risk. You can get your project out there, get some initial feedback, then go back and add that feature you cut earlier. Do not be afraid to cut things out.