The hardest single part of building a software system is deciding precisely what to build.
Everyone can be taught to sculpt: Michelangelo would have had to be taught not to. So it is with great programmers.