I have writer's block for programming. It's not that I lack inspiration - I am constantly coming up with new ideas and have hundreds of started but hardly-worked on projects - it's that I like direction. I also fall prey to defaulting to habits because I feel like I don't have enough time to focus on actually writing code, even though I enjoy it when I do write code. I constantly hop from project to project and program in 6-12 hour bursts and then stop for several days or weeks.
I have the same problem. I make up project then do my research, write small proof-of-concepts and when i feel that i know how to do everything I loose interest and I end up in situation where i have tons of project with hours of thoughts into them but none is finished.
I think this is because, after so many years of programming - pure coding is simply not challenging anymore - it is just work -, where solving problem is always different - fun and challenging.
Sometimes i also find myself in coding anti-pattern - thinking too much of design/performance/re-usability of code i haven't even created yet and instead of keeping it simple i lose motivation.
That project-hopping thing seems to be very common amongst programmers and creative people at large. It is also a feature of ADD and I think a lot of us would qualify for a diagnosis of that. The thing about Attention Deficit Disorder is it's really more of an attention inconsistency disorder. Most people who have it can focus better than an average person under the right circumstances. The hard thing is producing those circumstances -- the only way to do it with any consistency is with stimulant drugs, which is problematic in itself.
I've never had a problem with design taking over my coding time, but that's mostly because I just code. The most design I've ever done was coming up with an action plan for how I was going to make my kernel more stable. Whenever I try to plan things, I always have or want to change the plan later on, so I always keep my designs loose and flexible. Most of the time they just stay in my head. Writing things down can help focus my thoughts, or when a project has too many components for me to think about all at once, though.
Maybe you should try free-coding (that's what I'm calling it). Just sit there and let the code flow out of your fingertips. You will probably have to do a lot of refactoring, like I do (perfectionist), though.
By the way, what do you mean by "defaulting to habits"?
I am diagnosed with ADHD and have prescribed medicine for it, but I only use it on school days when I don't have time for coding.
I have never spent time desiging my code, I've been a free-coder the whole time. I refactor just as often as I write new code.
By "defaulting to habits", I mean I'll do something that doesn't require any thinking while I wait for time to move forward. It's less related to programming and more related to my overly pessimistic view of how much time I have before I have a real-world responsibility to attend to. I cannot accomplish anything productive if I know there is something I have to do in a couple hours - I'm too caught up thinking about the future instead of the present.
@tath: I think that's exactly my problem - I feel like I already know how to do everything and so instead of just doing it I feel unmotivated because I feel like I won't learn anything new (even though I will).
Strangely, I had a preconception of you as someone who would design meticulously. Maybe try doing the opposite of free-coding, then; it's usually good to try new things, give your brain a workout. Your brain is always fine-tuning itself, especially before the age of 25, and it operates on a "use it or lose it" principle, so if you get stuck in your ways, the synaptic connections that are not being used weaken. If you've ever looked into how artificial neural networks work (I strongly recommend it if you haven't, they're fascinating), think of how you alter the weight values when you train the network. That is kind of how your brain works, except instead of an array of floats it has synapses and receptor up/downregulation.
I think know what you mean about the time wasting -- you know you have a short amount of time but instead of making the most of it, you waste it. That's just a habit you have to break. There's no way to do it without simply starting now.
Just out of curiosity, what medication are you prescribed and what dose? It's wise that you only use it when you need to.