The Cambrian explosion of widely used programming languages, D, Python, Scala, Go, Swift, R, Lua, and so forth, is prima facie evidence that computers must start to write code themselves; People alone can't handle the complexity. One approach to self programming is automated inference based on a logical language (e.g. Cyc from Cycorp). Others are problem decomposition, abstraction and chunking (e.g. Soar) and genetic programming. Finally, a very new, one is the "Neural Turing Machine". Imagine the power of combining these approaches.