How much planning should one do before starting a project? Should they have everything already planned when they begin coding or should they just get a basic idea of what they want and then make things up on the fly?

For instance, I want to create a YouTube client that allows for streaming videos and for downloading multiple videos simultaneously (similar to Minitube). I know what I want the interface to look like when the program is first opened. Is this enough for now? Should I create this and then plan the next step or should I continue planning?

How much planning is enough?

  • Be practical. Don't make huge plans unless you actually need to get a lot of people to work on this.
    – GregC
    Apr 23, 2011 at 22:44
  • 1
    Weeks of programming can save you hours of planning. That being said, dont micro optimize you planning. It will be a waste of time anyway Apr 24, 2011 at 0:34

4 Answers 4


It depends on the methodology you follow. I like the Agile approach of doing "just enough" planning to get through each iteration. Before you begin, you should have a high level architecture of how everything will fit together.

Doing too much planning upfront will be wasteful. Inevitably, things will change during the course of your project. You will want to modify your design, refactor your code, add/remove features, and fix bugs.

Whatever you do, make sure not to follow a waterfall approach. There are many models that offer an improved approach.

  • 1
    typically agile has a "sprint zero" which involves a bit more planning than future iterations. Apr 23, 2011 at 18:22

Plan for as much as you are capable.

Plan for the pieces you can currently develop. If you don't how to download a file, you're going to have to do some research and probably write a test program before you are capable of writing detailed specs. You may have enough experience in an area, so you don't need the detailed planning.

Plan to the extent you are confident in the application owners understanding of what they want. In this case, it's you, so you should know what you want. Often you will work with people who don't know what they want and cannot dedicate enough time to determine what they want up front. In this case, you'll need to be more agile and provide prompts to help discover the business rules.

What is your definition of planning? Are you expecting to write detailed specifications or are you going to sketch the UI and a couple of use cases? You may want to try and plan the whole project as a learning process. Hopefully it won't turn into a lesson in futility.


coding before the spec is complete means that you accept the fact that the spec is going to change. coding after the spec is complete means you are not. In both cases the spec will change*.

  • disclaimer: there are exceptions to every rule

If it's a one-man team, start small. What is the smallest piece of functionality you'd need to get going that will bring value to the endeavor? Tackle that, then reassess your footing. If something on the way to your goal comes up, write it down, but don't implement it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.