(Warning : I just started typing this post because the title popped into my head, so what follows might seem like a lot of rambling.)
No matter how much we talk about talent, opportunities, and other things we can blame on, making things happen basically boils down to one thing - it's all in the mind. And of course, you need to put in some effort too, but that again is derived from your mindset.
For example, I have a few problems that I chronically face:
If I have an idea or come across something interesting or even start on a new project at work, I tend to have a lot of enthusiasm at first but soon forget it later in the drudgery of everyday life, and especially so when it comes to personal projects.
I tend to get worked up on deadlines and schedules without actually paying attention to the work.
I am constantly worried about not following up on things and not being organized.
About six months ago, I started following the 'Getting Things Done' (GTD) philosophy and it has helped me improve a lot w.r.t. these problems. This helped me concentrate on actions and not only on problems. As and when you keep showing up and doing things, you'll see the progress yourself and you'll be a happier person. That reminds me of this LifeHack article: "All you need is the willingness to take the next most obvious step - then repeat the process again and again, regardless of how you feel. Try it.Happiness comes from seeing the results of your efforts. You donâ€™t need it before you start."
The gist of GTD is to concentrate only on the next physical action and let other things take care of itself. This helped me deal with the second problem.
When it comes to problem 3, I'm way more organized now, to the point, where I think my actual talent (or the lack of it) and the willingness to put in effort are the barriers. I hope Knuth's philosophy of being at the bottom of things will help me here.
These three problems are similar in the sense that they tend towards one point - it's all in the mind. To alleviate it, I applied the GTD approach.
Similarly, if you're worried about what kind of raise you're going to get this year, etc., then stop worrying. There is no use of worrying over things that you can't control. You can't control the traffic on the road, so if you need to reach a place on time, just leave early and the rest will take care of itself.
If you've been sweating it out for the past couple of hours trying to fix a bug and you're not making any headway, then it is important to switch to a different problem and then come back later. You'll come back with a fresh perspective, fresh energy and fresh ideas on what to look out for and may be the things you've overlooked previously might be the actual problem. This is also important because it helps you to always keep moving forward, one way or another, and you don't get stuck in one project and don't move in other projects (and by project, I mean the GTD meaning of 'project').
There has been many a time when I've gotten frustrated and feel like just banging my head on the keyboard. This is where I take a step back, relax and say to myself 'CUT to the G' (yes, that's a phrase I coined for myself):
- Get Things Done
Each of these steps is important in its own way, but I personally underestimate the value of the second step. Knowing what you're exactly doing is a critical nature of a programmer especially because only you would know how the system exactly works and nobody else would look at it, everyone else is just a end user.
Step 4 is eventually what gets you moving, but Steps 2 and 3 are equally important. As Abraham Lincoln once said "If I had eight hours to chop down a tree, I'd spend six hours sharpening my axe." And to get to this stage, you need to do Step 1 which boils down to one thing - It's all in the mind. That's why it's so hard.
Related reading: 'Leadership - Some Random Thoughts' by Lawrence Rabiner.
That doesn't mean to say that you/I can achieve anything and everything, it's just that you need to get over the mindblocks to do even the simple things that you are capable of achieving.