indeed
Deferring optimization actually makes sense as a conscious engineering choice, in that it aids in grouping things together in a more clearly delineated manner, using smaller "parcels", ensuring that it's easier to experiment with different means of organizing the internals of a system until the final form of the system's architecture and API is nailed down. This assumes, of course, that you are not using a waterfall-style, BDUF approach to project management. If you are, well, that changes things -- like the likely quality of the end result (ugh).