This has been the goal of many builders at many times in the last 40+ years. I have seen at least 4 such systems. PEOPLESOFT is an example of using data-driven design based on commonly known algorithms. But then, if you think about it, Access Wizards are a simple form of this. They don't design the best forms you've ever seen but they give you enough to take a running start. I use them all of the time as a way to build the framework that eventually becomes the polished product.
The idea of "how do we learn" is to some degree addressed by neural networks, wizards, and other self-programming methods. The catch is always "how do you handle the exceptions?" The answer is, programmers who can think outside the box. We will never be obsolete, but we might find that for routine programming issues like simple web design with pretty pictures and a few hot spots, we will have a lot less to do.
One of the things I always told my students when I was a more active teacher (usually as a side duty for my real job as a system analyst, system programmer, and process designer) was that you learn most quickly by seeing how others approach problems. Knowing the many ways that could be used, you can perform a true synthesis (literally, in this case, a merging of different ideas - the classical meaning of the word) that can eventually attack your problem.
So... if you give one of these auto-designers enough code snippets to manage problems and you can define the ways in which they fit together, you can eventually reach the point where your neural network can simulate the design process and come up with code to do the trick. Will that code be optimal? Probably not at first, but then, there ARE such things as code optimization algorithms that can find ways to clean up code and minimize its "footprint." Again, this is an application of many ideas on code optimization to synthesize an improved idea from the original code.
Uncle G, I wouldn't worry about becoming obsolete in our lifetimes. That kind of technology will take a long time to have a sufficient "knowledge base" as its foundation on which to build things. These auto-programmers are only as good as their libraries of solutions. They get better as their libraries get bigger. But here's the key to feeling better: If the persons who build their libraries produce crap for code, the auto-programmers will still produce crappy code, too. Garbage in, garbage out.