The use of libraries of pre-built components will automate over 90% of the software development process and turn everyday users into software developers. These plug-compatible components should snap together automatically: just click, drag and drop. Thus the burden of assuring compatibility is the responsibility of the development system, not the programmer.
But he's also talking about reliability:
When it comes to safety-critical applications such as air traffic control or avionics software systems, even a single defect is not an option since it is potentially catastrophic. Unless we can guarantee that our programs are logically consistent and completely free of defects, the reliability problem will not go away. In other words, extremely reliable software is just not good enough. What we need is 100% reliable software. There is no getting around this fact.
One doesn't need bullet-proof software running a calculator as one does with an air traffic control system. All software doesn't need the same level of reliability.
But I think he makes several good points. If you want reliable general-purpose software, you need (reasonably) bullet-proof components and you need to assemble your software from those components. (E.g., you don't want your programmers reinventing FindFirst/FindNext.) Whether that means using a new/different approach to building the components or simply using better, more carefully debugged tools, I can't say. I don't think that all software should be expected to meet the same reliability requirements. We don't require treehouses to stand up to earthquakes....
Cheers,
Scott.