Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I can't say I am a good programmer but I've been earning money for programming last decades. I've thought I was born for programming and people said I was very good at it - at some point.

But after 10 years of programming, I feel my programming efficiency is not as good as others. Of course, CS education is way better now and many young programmers are smarter than me.

But one of my problem is that when I am executing a task, I tend to dwell on specific problems I am facing with the task rather than focusing on completion of the task. I understand to keep thinking about it does not solve the problem. But I habitually do that and easily become exhausted. I hope I am not the only one feeling in this way.

Did you feel the same feeling? If so, how did you get rid of this terrible habit?

share|improve this question

closed as not constructive by Matthieu, Yannis, Tim Post, ChrisF Jan 22 '12 at 20:44

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

You may find some of the articles at helpful. – JBRWilkinson Jan 22 '12 at 9:34
up vote 2 down vote accepted

One word; done. Focus on it, strive towards it, understand that it is what matters.

Preparing for the ifs will generally equate to unneeded perceived value that allows the programmer to feel better about a situation but it unfortunately in no way delivers additional value.

Always remember that done equates to immediate value and focusing on anything less than moving towards done is a waste of time, effort, and energy.

share|improve this answer
Unfortunately, defining "done" is 80% of the battle, I've often found. – cdeszaq Feb 2 '12 at 14:08

Many folks have difficulty focusing on tasks, and I am one also. Unfortunately, this question may not receive a good answer on a venue such as this, where I suspect most people reading this cannot really understand. Furthermore, this seems to need expertise in psychology, and I doubt that very many people here have such expertise.

That said, I'd like to point toward the work of PJ Eby, a programmer turned "Mind Hacker". He says that people are "naturally successful" or "naturally struggling". His goal is to help naturally struggling people become naturally successful. Some of Eby's work can be found at:

Google for other places he posts, including Twitter. Unfortunately, it seems that PJ isn't updating these sites much anymore; presumably he's busy helping his paying customers. However, you can learn a bit from the writings that remain on line. (Note: I'm not PJ Eby, nor do I know him personally or derive any income from posting this. However, I post anonymously due to my earlier statement about having difficulty focusing myself and not wanting to leave such breadcrumbs for possible future employers to follow.)

Finally, if reading and self work doesn't lead to improvement, seeking professional help, whether from a personal coach or psychologist, might be helpful here.

share|improve this answer

It sounds like you are experiencing a degree of the "all for naught" fear, the fear of being torpedoed. I don't mean to imply this is an aberration, it is build into us by evolution and it serves its purposes -- after all, it is central to risk mitigation. You try to tackle the biggest threat to success first.

But the danger is that it can be paralyzing. You need to manage your morale and confidence by sprinkling in tasks you can complete.

For instance, if I am writing a function or module where I don't really know how to go about what I am about to do, I don't fret about the best way or the big picture -- I let the problem tell me what its about in little steps. So I just keep coding until I have enough framework to detect how it REALLY needs to be, then start refactoring and implementing that.

You just allow yourself to think-in-code... you are sketching out things and you have to have faith that all the messiness will eventually align and collapse into the formalized solution.

share|improve this answer

Personally I find TDD helps with this: The test first approach puts emphasis on the usage and reason d'être for the production code, and doesn't let you stray away from the task at hand.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.