Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

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

Possible Duplicate:
Tips for staying focused and motivated on a project

I have serious issues on concentrating on one project at a time. I cant even follow the Divide and Conquer Approach. Once I start a project, I try to get the things done as neatly as possible but very soon I end up messing so many components of it. I try to do divide and conquer, but my approach doesn't work smoothly, and then I then wonder here and there in other projects. Sometimes I try spending so many hours for some trivial issues, which in-fact are not even issues. How do I avoid this jargon and be a smooth developer and have a nice workflow around my projects. I tend to loose my concentration on the current project and wonder in another project.

share|improve this question

marked as duplicate by Mark Trapp Nov 13 '11 at 12:13

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

I think this is off topic in its current form. If you edit out all the personal stuff, and ask for an efficient solo developer workflow it might be on topic. – Yannis Nov 13 '11 at 11:04
@Yannis: I wonder how is this an off topic, when you see the tags like project-management, productivity, self-improvement and PP. and ya I didn't create these tags – defau1t Nov 13 '11 at 11:12
From the faq: Please make sure your question uniquely applies to programmers in general. Concentration problems aren't unique to software development. It can get on topic if you revise it. Or you can try the Personal Productivity Stack Exchange. BTW that's just my opinion, feel free to ignore me :) – Yannis Nov 13 '11 at 11:24
up vote 1 down vote accepted

If these are personal projects, and your main aim is learning, then one possible solution is to just accept that you're not finishing them: once you start doodling around instead of doing actual work on the project, you have probably learned what you wanted to learn, and there is no shame in dropping the project. OTOH, finished projects are a nice thing to have in your showcase, so maybe aiming for showcase-able code is a good incentive.

If, however, you actually need the finished product, the key is YAGNI (You Ain't Gonna Need It (yet)): For every change you make, ask yourself if it is absolutely crucial for the project that you implement this particular change right now. If the answer is "no" or "maybe", don't implement it. In other words, get your priorities straight.

Another good rule-of-thumb is that you should have something shippable at any given moment. No matter what your change, if you get interrupted at any moment during development, you should be able to produce a working, shippable version instantly. To achieve this, you probably want to use a version control system (and be strict about committing individual changes individually, tagging every shippable version, branching for every non-trivial change, etc.), you want to divide your work into small bursts (something like 30 to 60 minutes each), and you want to be religious about fixing bugs before adding features - no matter how hard you want or need this feature, if something else is broken, fix it first.

You also want to minimize the effort required to pick up back where you left. Short development iterations help, as they reduce the risk of dropping your work halfway through a development session; good documentation is crucial (unfortunately, writing good documentation is an art form in itself); keeping a To-Do-list or using a bug tracker also helps, as it allows you to visualize what needs to be done, what the priorities are, and what you were working on the last time you stopped.

And finally, keep in mind that shipping is a feature: shipping a version that barely works, but is just good enough to do whatever it needs to do is often an acceptable alternative to spending a few more months to polish the application to perfection.

share|improve this answer

I think what you can do is to create a to-do list everynight. Think of getting one functionality up and running everyday.

For example, if you are working on a website project. Think of developing one page everyday or a class. Hope this can help you in some manner.

share|improve this answer

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