First learn about MVC and the first project they writer ends up being somewhat maintainable. It relies on state of the art paradigms, is modular and should be relatively safe.
With time, the framework will not provide all the needed functionality. This is when the young programers start to modify or write simple plugins. So they learn about the Framework API.
Even later, they need to modify some parts of the framework to make it possible to hook into it with a plugin. So they learn about the core Framework.
At every step, the programer is confronted with code written by more experienced programers… To me, this is the best way to learn programing.