In my case, most often than not, someone else has already done it. So the very first thing to do is to Google the thing down and track how many other people have thought of the same idea or at least have touched on it.
I usually end here. Someone else would have had their full attention and time on it. This changes if it is open source. IF it is an open source project (or I do get to find an open source alternative) and I REALLY like and believe in the project, then I see how I can help. Programming starts as soon as:
a) I know I can help out (i.e. it is in a language I know and am proficient at) b) I can easily set the project in my local machine
Now, if for some reason no one has done the idea yet or it is not available in the country I am at, then I start looking for holes in it. Why has no one done it? How hard is it to setup? Is this really going to change stuff?
In my current project, I have answered those questions and the next step was to make a prototype of the unknowns. "I don't know how to do X with Y", or "Not sure if it's possible to do G". To answer those, a prototype is needed. I set out to do exactly that one thing I don't know about. Nothing more, nothing less.
When I got to prove the prototype, I then started a Gitlab project and discussed with my partner on what we need to do etc. Then I start a Kanban board of the features that are only absolutely needed (a.k.a. the MVP or the Minimum Viable Product). That should just number under 10 issues in Gitlab then I set out to do them in order by priority.
I am currently at that stage, but I reckon in the future it's more of just launching the MVP and see if it succeeds, iron out bugs, and adding more features etc.