So here you are. You've come to expect a certain high level of success, similar to what you've experienced with your projects and assignments. But the world will not behave.
The statistics are sobering: 50-80 percent of programming projects fail. These numbers are so broad because people don't brag about their failures, so we have to guess.
An even more fascinating metric is this: 5 percent of programmers are 20 times more productive than the other 95 percent.
Let's say that this follows the 80-20 rule. Roughly 80 percent of programmers don't read books, don't go to conferences, don't continue learning, don't do anything but what they covered in college. Maybe they've gotten a job in a big company where they can do the same thing over and over. The other 20 percent struggle with their profession: they read, try to learn things, listen to podcasts, go to user group meetings and sometimes a conference.
Eighty percent of this 20 percent are not very successful yet; they're still beginning, still trying. The other 20 percent of this 20 percent--that's about 5 percent of the whole--are 20 times more productive.
So how do you become one of these mythical 5 percent?
In my experience those in the 5 percent must struggle to get there, and struggle to stay there, and it's the process of continuous learning that makes the difference. They read a lot, and are always ready to tackle a new concept if it looks worthwhile. I think if they do go to conferences, they're very selective about it. Most of their time is spent being productive, figuring things out, never just "bashing something out," but using the best tools, techniques, ideas, and always doing their best.
Being able to analyze and understand a situation and discover the hinge points of a problem is essential; this takes a clear mind and detached perspective. You must learn continuously and teach yourself new technologies, but it's not that simple. It's definitely good to learn more about programming, but you have to learn more than programming.
I've learned much from Gerald Weinberg, who wrote his first books on the technology of programming. He is most famous for saying, "No matter what they tell you, it's always a people problem."
Usually the things that make or break a project are process and people issues--the way that you work on a day-to-day basis: who your architects are, who your managers are, whom you are working with on the programming team; how you communicate...