I'm currently in school and for my Senior Project we have to spend 1/3 terms just doing UML diagrams and other tedious documentation for our project.
This involves alot of designing and planning for future problems that have yet to occur.
For some reason this seems to be to encourage over designing. I've spent the last hour writing stuff like this.
"Connect to Server -- connecting to a server. PreCondition: No server connection exists. Postcondition--Connection now exists".
I would rather be coding than doing this nonsense. I realize this design work has its place but how much? I know this isn't bulletproof evidence for against designing alot in a tool like Enterprise Arch but here I go.
My professor that teaches these subject has designed the heck out of his project. Every thing that could possibly happen in the application has been documented. Instead of coding this himself, he's used this "immaculate documentation" to farm out the work overseas and to students during the summer.
The application that has resulted from all this design has been TERRIBLE. It's one of the worst applications I've ever seen and anyone could tell you its been overdesigned.
What does the SO experienced coder community have to say about this subject? Does designing a great deal before the project tend to make bad programs by forcing decisions made early on just because the "design docs say so"?
Thanks SO for any insight you guys might provide. If I knew this was all for a good reason, I would feel better "wasting" my time doing it. I'm more than willing to do some design work beforehand but I feel like my professor is expecting alot of engineering decisions to be made before any code is written.
EDIT: Interesting slashdot article on this subject. http://books.slashdot.org/story/09/11/16/1448204/Becoming-Agile