How do you become a "fearless programmer"?

I have always been a “fearless” programmer, but never realized it until recently. Here’s how:

“Fear of not knowing the best way to do things (best practices).”

The sooner you realize that there is never a best way of doing anything, the sooner you can release this silly fear. Some ways are better that others, but “any way” is better than “no way”. Just get the thing done. Later, when you refactor, you’ll have the best of all worlds: code that did the job right away, a better way of doing things, a satisfied customer, and a great learning experience.

“Fear of not using the right tools and languages.”

Give me an adjustable wrench, 2 screwdrivers, and a big hammer and I can fix just about anything. Same thing with programming. I’m too busy getting work done to learn every new tool or technique. As I’ve told many programmers over the years: “Whatever you can do, I can do in BASIC. Maybe not as pretty, but probably just as fast and just as effective.”

“Fear of errors (especially compiler errors).”
 
You’re in the wrong business. Errors are what point you in the right direction. The sooner you learn to embrace errors and use them to refine your work, the sooner you’ll become fearless (and better).
 
“Fear of schedules.”

“I see only one move ahead, but it is always the correct one.” - chess master Jose Raul Capablanca. That’s what my schedule looks like. One item. One day. Project managers can’t stand this, but then again, I get way more work done than they do.

“Fear of publicity (what will other programmers think about this code?).”

I never publish my code. Ever. Users get to give me feedback, but I don’t care what other programmers think. Sure, I learn from them, but never in the context of reviewing the code I wrote. I learn from the code of others and apply those lessons to my own work.