Add the tools your toolbox lacks

Frameworks are foundations, not straitjackets.

To an inexperienced programmer, a framework is an invaluable security blanket. It hides the rough edges of an unfamiliar language or platform, it guides you toward pre-established and pre-packaged patterns and best practices, and it wraps complex concepts in simpler abstractions.

A good framework does the hard things and the boring things so that you can concentrate on your things.

Too often, inexperienced programmers choose a framework based on how many things it will do for them without requiring them to write code. The more code they're forced to write themselves, the less happy they are.

This is natural, because when you're inexperienced, you aren't comfortable writing code. But it's also a trap.

If you don't challenge yourself, make mistakes, learn from those mistakes, make more mistakes, and learn from those mistakes, you will remain an inexperienced, unconfident programmer perpetually at the mercy of the frameworks and libraries that are available to you.

Avoiding this trap is hard. Many -- perhaps even most -- programmers fall into this trap early in their careers and remain there for years, if not forever. Give them the frameworks and libraries they've grown accustomed to and they can connect the dots and create useful, possibly even beautiful things, but put them in front of a blank editor with nothing at their disposal but a compiler or interpreter and a flashing cursor, and they're lost.

Not that frameworks and libraries are to be avoided. Carpenters don't forge their tools from scratch before each job. But the best carpenters know which tools to use, and when.

A good programmer, like a good carpenter, knows when she lacks the right tool for the job at hand and isn't afraid to add it to her toolbox.

Use a framework or a library if it makes you more productive, more organized, or more happy. But when the framework lacks something you need, consider adding it instead of asking for it.

Start small. Challenge yourself. Get better. Get bolder. Add to your toolbox. Before long it'll feel natural and easy, and you'll feel a freedom and a confidence you never felt before.

Because now you're not just using, you're crafting.