When starting a new project, are proactive designs useful? I mean, if you create a UML diagram/Activity diagram/Use Case/Class diagram/etc. for anything and everything can think of, then when you think you're done, you start coding. Afterwards, you realize an important feature or method was left out. All your spiffy UML diagrams are nice stacks of worthless paper now.Is it easier/better to design one class, work on it a bit, refine it, then work on it more?
Are Proactive designs on new projects useful?
design
Contrary to popular opinion I do not buy into the Big Design Up Front is bad movement very much.This statement is used too often as a lead-in to a project with no design at all.  The project is started with no design, and none ever materialises during the development.I also do not believe that this way of working is what the original claimers (from the Extreme Programming / Agile movements, IIRC) intended.  They intended that developers would evolve their design alongside the evolving implementation.Therefore I believe the process should be:Create just enough design to be able to get started on the project.  Note:  I am a firm opponent of one feature at a time - I believe you should start with a minimal beginning-to-end skeleton implementation instead (also known as a vertical slice).  Otherwise you are not doing iterative development but incremental development, and you are still running the risk of having a big bang integration when you finally implement the last feature to complete the loop of your project.Implement your first design.Evaluate the design and implementation results.  This should include feedback from your customer and end-users whenever possible, to ensure you are building the right thing.Rework and expand your design.Implement your reworked and expanded design.Continue with 3 until you are done.