In my opinion, analysis is absolutely essential before development. Specially if you are working in a team, because the interfaces should be clear to everyone. Once the design is on the paper with sufficient detail, implementation should be trivial.
When I first started as a programmer, I hated the design and analysis part because I felt it was disingenuous to write a high level document without knowing how it was actually going to be implemented. But the real reason it made me uncomfortable was that I was bogged down into details of implementation. I was an amateur who couldn't get my head beyond code itself.