Computer science pioneer Niklaus Wirth wrote:
My insight was realizing that for a given program complexity, these two are inversely related to each other. Therefore, perhaps it should be written as:
The more sophisticated the data structures, the simpler the algorithm. The more simplistic the data structures are, the more complicated the algorithms must be.
This is a very important reason why the risky approach is to "just start coding". The maintainability (and developability) of the software is proportional to the complexity of the algorithm. In other words, rushing into coding is likely to result in a simplistic, ad-hoc data structure design that will require overly complex code. This increases the cost of development and lowers maintainability and extensibility.
The best approach is to start with analysis and design (definition phase). Plan for design iterations with significant review by stakeholders.