No project management is perfect but from my experience of different methodologies I really do believe that an agile approach is the saner approach to managing a project.
If you are building robust professional software products then tests are vital. I prefer the test driven approach to development as this catches bugs early and allows the developer to have faith in the code.
Don't Repeat Yourself - As a developer I believe it is your responsibility to refactor your code as part of your day to day job. If you have tests in place then the risk in doing this is greatly reduced.
Do things to the best of your current ability. Software can never be perfect. There is always time to refactor. If you keep worrying that you are not doing things exactly as "they should be done" then you will never complete a project.