I read recently of some people lamenting the lack of skill shown by modern software developers and the difference between using tools to take over from already-mastered, mechanical processes in your work vs bypassing the learning of that branch of practice entirely. The argument was that it's perfectly fine to use tools to get around the parts of your job that you've already mastered, so that you can focus on more interesting, higher-level challenges, but a lot of modern software development provides tools that let you jump over that mastery from the start, which means you have no idea how it actually works. To make up an example, you might use a framework to read and write data from a database once you know how that works, because that's stock-standard boilerplate code you don't need to rewrite every time. However, if you use that code from the beginning, you'll never know how to connect to a database without it.
The problem is that you can't keep tools from people who don't know how to use them. You can't force a carpenter to use a hand saw until he understands it enough to graduate to a power saw. This goes doubly true in software. The tools don't care who uses them or what their skill level would be without the tool. The only thing you can do is challenge yourself. Start from scratch in everything and build up your own set of tools and frameworks over a career instead of picking up the biggest, baddest set of power tools from the start and demolishing a house by accident. That has to be self-enforced, though. If you couldn't have built it on your own, don't use it yet.
Mokalus of Borg
PS - You can't make people earn shortcuts, is my point.
PPS - Once they're open, they're open to everyone. That's kind of the point of software.