(BTW I wrote Sun's enterprise Java book and the first mainstream magazine column on Java in the 90s)
I think that design reviews are really essential. Even better: design collaboration, where you talk through the intended design approach with others who are working on related code.
Today we have a culture of hacking in the code until it works. That is a dysfunction, IMO. Design should be done prior to coding. I am not talking about a big detailed design of the whole thing. I am talking about identifying the key algorithms and structures, and designing those:
If you are working on the code of a complex algorithm, and you have not mentally verified the algorithm "on paper", then you are just hacking - as in the literal meaning of the term, like hacking at something with a knife - not crafting it - and the result will be crappy.