It's not Development; It's Applied R&D
it's taken me a long time in my career to dawn on this particular point about application solution design and implementation, but anything more involved in an application that simply building out a standalone piece of functionality, should actually be regarded as Research and Development.
i've been trying to get a grip on how costing and estimates tend to blow out and how challenging it is to appropriately put metrics around a solution during design phase, and most of it boils down to the elastic time required to actually get the right approach to the problem. For example; do i use an ORM pattern? or do o implement straight database calls? do i use a framework and risk someone else missing something? or do i roll something quick and dirty myself?
discovery, research, conceptualizing and building are all what is involved in building a simple application from scratch. these things are R&D and require elastic estimates, not concrete time scales.