Here's a great article about the problems inherent in the way modern software programming is done and the possible solutions to those problems. The issue is basically that the code is so complex and abstracted from the actual requirements of the system that the software is usually rife with bugs due to the coders not being able to see the forest for the trees. The call is for programming to become basically a WYSIWYG process like word processing has become.

Link: The Atlantic