I cheat. If the project is not trivial, I like to start by spending some time planning. It doesn't take a lot of time, I need at most one or two hours to have some initial plan, and then it's a matter of being mindful and keeping track of the progress and changes to the plan.
I usually start doing some story mapping, I write all the possible features I could include in the project. Then I select the features that I absolutely need to have a proof of concept that I can run or deploy (and call that group alpha), the features that I would need to add to have a minimum usable version that other people can try out (and I call that group beta), and I forget about the rest of features for a while. To keep track of everything, I put all the features I've written down in a trello board.
If I complete all the features in alpha and beta, I split the remaining features (and all the improvements I thought of meanwhile) into smallish groups of features that improve one area of the project.
The trick is that even if I abandon the project after finishing all features in alpha, I have some sense of accomplishment and the project is in a somewhat done state (even if it's only the proof of concept that is done). I'm usually happy if I reach the beta stage because even if it's not very polished yet, it's usable and it accomplishes the main goal. And after that, any set of features I add is adding value to the project but it's not really needed to have a finished product, so I see it as a bonus.
As somebody said,
Software is never finished, only abandoned.
So I try to reach a state where if I abandoned the project it could still be considered finished somehow as soon as possible.
Because I don't really need to complete projects to make it look so! But I agree, planning should be the first step, even for side projects, if you want to get anywhere.
I cheat. If the project is not trivial, I like to start by spending some time planning. It doesn't take a lot of time, I need at most one or two hours to have some initial plan, and then it's a matter of being mindful and keeping track of the progress and changes to the plan.
I usually start doing some story mapping, I write all the possible features I could include in the project. Then I select the features that I absolutely need to have a proof of concept that I can run or deploy (and call that group alpha), the features that I would need to add to have a minimum usable version that other people can try out (and I call that group beta), and I forget about the rest of features for a while. To keep track of everything, I put all the features I've written down in a trello board.
If I complete all the features in alpha and beta, I split the remaining features (and all the improvements I thought of meanwhile) into smallish groups of features that improve one area of the project.
The trick is that even if I abandon the project after finishing all features in alpha, I have some sense of accomplishment and the project is in a somewhat done state (even if it's only the proof of concept that is done). I'm usually happy if I reach the beta stage because even if it's not very polished yet, it's usable and it accomplishes the main goal. And after that, any set of features I add is adding value to the project but it's not really needed to have a finished product, so I see it as a bonus.
As somebody said,
So I try to reach a state where if I abandoned the project it could still be considered finished somehow as soon as possible.
How is planning cheating? I feel like that should be the first step to every project!
Because I don't really need to complete projects to make it look so! But I agree, planning should be the first step, even for side projects, if you want to get anywhere.
Thanks a lot. I will look into story mapping.