I've finished loads of hobby projects, despite full time jobs, and I've been told that I'm a bit of an expert on this. I see there's lots of comments already so I'll keep it short.
1) If you can't focus on a project longer than two days, then pick a project you can finish in three days. Honestly evaluate how big such a project can be. I also see this as students learn to code. They learn the basics then think they're going to dive into a 2000 hour project. Instead, you need to ask yourself "what's the biggest project of this type I've ever finished" then add 50% to that. Like an athlete, you need to build up the endurance for your self-motivation to survive longer and longer projects. The payoffs are bigger but your human brain needs to trust that a payoff exists based on past experience.
2) I prefer not to talk about my future dreams for a project. What happens is I get enjoyment out of talking about what I "will" do, but without actually doing it. Then if I ever finish the work, I get less enjoyment because I already talked about it. In this way I'd be stealing enjoyment from my future self! An exception is advice.
My answer takes from the Feynman approach to problem solving: have several projects laying around that you could easily pick back up to work on a little bit. The progress may not be constant, but it builds over time.
This is a variation on the parent post's suggestion of picking a project you can finish in three days. I find that task can itself be hard, and is work that gets in the way of the fun work. In the past I've burnt out my excitement while trying to do it.
So I have 5+ small games, a game engine, an interpreter and a compiler, a few short stories, some music projects, a personal website, some art projects, and several books to read, and most aren't done.
When inspiration strikes, e.g. I'm feeling musical, I open up my music folder and click around a bit. Or if I feel like making a game, the first thing I do is go play one of my existing half-built games, and pop open the editor. It is helpful here to leave things in a working-ish state and keep ideas around in text files about what you could do next. Make picking the project back up easy for yourself.
I do also start new things or decide not to come back to old ones, but I wound up here by realizing that my interests aren't actually infinite. There's only about a dozen distinct things I really want to do and periodically get excited about.
For years I had been starting and then totally dropping projects, but I had "started making a game" a hundred times. My plan became to treat random projects like turning a ratchet, and I feel it's gone great from there.
I do a similar thing where I keep a list of things I'd like to do in a list in a markdown file. I put subtasks on them, check those off, and eventually, when the product is done, it gets checked as done. This gives a great sense of accomplishment.
Honestly the goal is to just write everything down. When I had been working on some too big to swallow projects during highschool I had lots of ideas but I couldn't implement them quickly. What happened is that by the time I was done with one major feature I had already forgot all the cool features that I planned in my head. Now I just write everything down even if my issues in the ticket system consist of just a title with no body. That way you can stop working on a project for 2 months and pick up right where you left it. The projects end up having a 50:50 split between issues and actual commits. In theory it also makes it easy for other people to contribute.
> I prefer not to talk about my future dreams for a project.
I feel this way as well, but my reasoning is different. I do much better work when I feel like I don't have to do something, but I can choose to do something. I've almost always done more efficient work on my own side projects than on the things I've been assigned to do.
When I talk about an idea that I haven't really built out yet, it creates a sense of obligation to do that work. That sense of obligation makes me not want to do the grunt work required to get the project done. I do better if that obligation is all internal. In that sense, writing in a journal about my ideas and vision is much more beneficial to me than talking with people about it.
That said, I try to be careful about recognizing when I do need to talk with others. If I went too far in the internal approach, I'd end up doing years-long projects without ever validating that they're meaningful to other end users.
This is good advice, and both parts rely on being aware of your own mind and even tricking it a bit. This reminded me of a Moxie story about nearly dying while sailing [1]:
> Strangely, I could feel myself drawn towards the temptation of giving up, even though I knew failure meant certain death. In hindsight, I think it's because the act of giving up feels so similar to the sensation of success, at least in a superficially immediate way.
Over the years, the mantra that "giving up feels like success" has really helped me not give up simply to access that feeling.
With regards to point 2, I seem to remember reading once that if you allow yourself to think too much about success in the future, it steals away your motivation to complete the task in the present. It gives your brain that satisfaction without actually having succeeded at anything, and then you stop trying because you are no longer motivated.
#2 so much! When I tell people my ideas I can feel the motivation dissolving. Trouble is, my ideas sometimes suck and I need another person to tell me they are good. But if that person doesn't get excited about the idea it takes the wind out of my sails. I think this speaks to why I became a developer in the first place; I want to solve people's problems. I want to be useful. If I tell someone my idea and they aren't interested I feel like everyone will feel the same so it must be a bad idea. But what if they are right. Do you ever finish a project only to find that nobody cares about it? Isn't that worse than not finishing?
It depends. It is not worse than not finishing if one learns from the experience. Secondly, personal projects do scratch some itch and bring a certain satisfaction and if if others appreciate it then that's a bonus.
>Peter Gollwitzer, Paschal Sheeran, Verena Michalski, and Andrea Siefert published an interesting paper on this topic in the May, 2009 issue of Psychological Science. They argued that important goals like pursuing a career path involve a commitment to an identity goal. ...
>They suggest that when people announce an intention to commit to an identity goal in public, that announcement may actually backfire. Imagine, for example, that Mary wants to become a Psychologist. She tells Herb that she wants to pursue this career and that she is going to study hard in her classes. However, just by telling Herb her intention, she knows that Herb is already starting to think of her as a Psychologist. So, she has achieved part of her identity goal just by telling Herb about it. Oddly enough, that can actually decrease the likelihood that Mary will study hard.
1) If you can't focus on a project longer than two days, then pick a project you can finish in three days. Honestly evaluate how big such a project can be. I also see this as students learn to code. They learn the basics then think they're going to dive into a 2000 hour project. Instead, you need to ask yourself "what's the biggest project of this type I've ever finished" then add 50% to that. Like an athlete, you need to build up the endurance for your self-motivation to survive longer and longer projects. The payoffs are bigger but your human brain needs to trust that a payoff exists based on past experience.
2) I prefer not to talk about my future dreams for a project. What happens is I get enjoyment out of talking about what I "will" do, but without actually doing it. Then if I ever finish the work, I get less enjoyment because I already talked about it. In this way I'd be stealing enjoyment from my future self! An exception is advice.