Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question
    
Be practical. Don't make huge plans unless you actually need to get a lot of people to work on this. –  GregC Apr 23 '11 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 –  naveen Apr 24 '11 at 0:34

4 Answers 4

up vote 3 down vote accepted

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.

share|improve this answer
1  
typically agile has a "sprint zero" which involves a bit more planning than future iterations. –  Eric Wilson Apr 23 '11 at 18:22

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.

share|improve this answer

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.

share|improve this answer

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
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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