I have diagnosed ADD.  Mild but enough to affect my work:


Easily distracted
Can't concentrate on one project at a time
Addicted to the web
Procrastination
etc.


What strategies do you use to compensate?



One clarification

I have real  ADD.  I was diagnosed with it when I was a child and have wrestled with it all my life.  I am not talking about artificial ADD, which is induced by media overload.



Update

I just read this description ADD/ADHD.  It's a great description, especially for us programming ADDers:


  I am like a toolbox,
  with all the tools I will ever need
  lain gently and neatly in the box,
  ready for me to use them.
  The toolbox is translucent
  so I can see them there.
  
  The key to the toolbox is locked inside of it.


I've had similar problems as you do. The two main strategies that have helped me are 


Only one project at any time: I've suffered from following more projects than I can count on my fingers, each "clamouring" for attention. Now I've radically cut down on projects either by finishing them "once and for all" or by simply dropping them altogether. Earlier this year I've founded a company and now I'm down to three projects: Health, Family and Company.
Separation of concerns: When doing everything on one desk, the risk is high to "drift" from one thing to another. I've removed all procrastination stuff from my work PC and use my Laptop only for "play" and other private internet usage (mails, userfriendly, slashdot). The PC is on my desk, the Laptop in the Living Room. This keeps a healthy distance between Company and private stuff.


Of course these two things are quite general stuff. Some of the smaller, but also helpful things:


No Lurking on IRC/other chat channels. Either I need or give support/community in the project I'm working on or I'm not in that channel.
Close The Mailer. Checking mails because the project just compiles is just stupid, since waiting for a compile is just enough time to see whether or not there is mail. If there wasn't any mail, I've interrupted my flow for nothing and if there was mail, I'd either have to interrupt my flow even more to handle it or punt it anyways. So now, I'm checking my mails three times a day and have reduced my interruption count significantly.
Exercise. Often while programming I feel the urge to jump up and run around in my room. Especially when sitting before the tougher design decisions. Going biking every other day has significantly improved my ability to concentrate on stuff as well as the added benefit of improving overall stamina and well being.
Spent Time Bookkeeping. I've got a simple spreadsheet where I enter my Company time and some private stuff. I keep it to 15 minute chunks, which makes data entry much easier and any smaller units just cause more overhead. If I'm not doing something I can "bill" on the Company and it's between 8:00 and 18:00 I know I'm doing something wrong.
Also, at the end of the week I get a nice report how I spent my time. One big caveat here though. When I started this after finishing university it was a hard blow for me how little time I was spending "productively." It took me quite a while to recognize, that I need to record everything I don't do for Family. Specifically:

I need to record times spent exercising as productive. See above.
I need to record times lost due to external factors: I'm travelling a lot lately and when I've only recorded 25 hours of work in a week, I suck. But if I add the two days I spent on the road that week, I see that I did more than 40 hours. Suddenly "I suck" changes into "the external-factors-that-cause-my-travels suck," which is a much healthier thing to say.

Eat and Sleep Regularly. Stand up at 07:00, Breakfast, Lunch at 12:00, Dinner at 18:00, Sleep from between 22:00 and 23:00. 
Appreciate the Small Successes. Even if I'm not yet there, today is better than yesterday and tomorrow will be better than today.
Adjust you Environment. That's quite a broad topic. As a home worker, I got myself a nice new desk and chair which I now use exclusively for work.
Also I really like listening to music, but vocals -- especially in my mother tongue -- distract me incredibly. I've tried instrumental music, which worked for a while until the trance beats got to my nerves. Now I'm going for the complete silence. It might be different for you, but there's only one way to find out for real: experiment and watch yourself while working. 
Become Accountable. Get a Conscience. I founded my Company together with an old friend, whom I deeply respect. By his presence and by knowing that our success is now is interlocked, I feel compelled to give my best.
And finally Constant Vigilance! Distractions tend to creep up from every nook and cranny of your life (stackoverflow anybody? ;). Keeping them at bay and managing them will stay a constant struggle. Having said this, I have to close my stackoverflow tabs and get back to programming!




PS: I've talked with someone from my family who is working with ADHD kids. She told me that ADHD is a kind of catch-all/fallback diagnostic (see the ADHD Wikipedia entry for corrobation: DSM-IV V.) and is hard to diagnose "scientifically" since the patient has to be monitored in different settings over a longer period of time AND other causes for the symptoms have to be excluded. Practically ADHD is handled as "the condition helped by the prescribed medicines", since there currently are no globally accepted non-psychiatric assesment test procedures and not enough knowledge about the underlying biochemical functions. Again, quoting Wikipedia: "There are several effective and clinically proven options to treat people with ADHD. Combined medical management and behavioral treatment is the most effective ADHD management strategy, followed by medication alone, and then behavioral treatment." 

From what I gathered from the discussion with her, the problem is that doctors often choose (cheap, symptom-oriented) medication over (expensive, cause-oriented) therapy with little regard to the long-term effects on the patient.
