Recently, I wrote about something I see often which is "I know how to program, but I don't know what to program". One frequent comment was, "I'm the opposite. I have too many ideas!" Well, I'm the same way. I have a jillion ideas and a bazillion browser tabs open at any given time. I recognized this as a problem long ago. Some kind of techno-ADD. Over time, I've developed a way to deal with it. Here's my method. How do you tackle it?
Too many ideas, not enough time.
First off, you have to keep track of your ideas. I like a plain old text file and I like to edit it with Sublime Text. CTRL+SHIFT <UP><DOWN> has become muscle memory. Those are the keyboard shortcuts for swapping rows in sublime text. Pushing items up, dropping items down. Constantly reprioritize my list of things I want to learn or projects I want to do.
After I "bubble sort" my ideas day after day, I see which are really important to me because they stay at the top of the list. I pick a few at the top fo the list and I commit (at least for a while) to dedicate my time to those things. Items that constantly stay at the bottom of the list get deleted. Never going to get to them, and never going to run out of new ideas, so clean up the list. Now that the tasks are identified, it's time to get to work.
15 Minutes of...Work
Long ago I learned that sleeping on a problem can really help you solve it. I've also learned to take advantage of it. If you procrastinate and don't do any work on a project, then you don't encounter any new problems that you can efficiently solve in your sleep.
I've found that using www.timer-tab.com and setting it for 15 or 20 minutes is a perfect little sprint. If I am committing to a longer session, then I will set the timer at 1 hour for each project. I conciously push away distractions, focus solely on the task at hand, and make progress. Fifteen minutes seems to be a good amount of time because I can refresh where I left off, make some progress, and encounter at least one issue that can I can address with some 'offline' time. Usually getting started is the hardest part, so it's easy to keep going after 15 minutes is up if you get in to the zone. I'm usually impressed with how much progress I can make with just 15 minutes of laser focus. That helps motivate me to work harder.
When I make time to sit down and do this, I typically do 4 or 5 'sprints' a time with short breaks in between. That's 4 or 5 different things I can explore efficiently. That's 4 or 5 things I can potentially make progress in during my sleep. If I had extreme discipline I'd do that ever day, but in reality focusing is difficult and there isn't always enough energy to do it.
Drop it Like it's Hot
After spending some time on certain ideas, you'll realize you only wanted to learn enough to satifsfy your curiosity. At that point, it's ok to let the idea die, CTRL-Delete it from your list, and archive the code in your Cookbook in case you want it later. You may revive it years later or share your dusty-but-relevant project with someone in the future who is interested in the same thing.
I'll add that physical health is important too. If you don't get regular exercise(like me), the 8 minute Fat Cat Workout chrome app is great. I like to do the 8 minutes right before I start the project work. You can customize the time of it and if you can handle more than the 8 minutes. I remember seeing some topics recently about how 1 minute of exercise could be as beneficial as 45 minutes[source?].
The most important thing is always look for ways to improve everything and become more efficient even in tiny ways. Progress.
This is what I have found to be effective for me. I am interested in hearing what approach others have to the same problem. Please share in the comments.