Your comment reminds me of this 36 year old paper: http://worrydream.com/refs/Brooks-NoSilverBullet.pdf
It describes how no technical improvement alone can get an order of magnitude improvement in software development efficiency, so the ways available to increase development by an order of magnitude are learning to use already-built components, shrinking feedback loops so we can be sure we are building the right thing, and growing the profession.