Coding a game is not so hard when you finally start to feel comfortable with the framework, pattern, language or the concept itself. The problem is finish the things. You can be a new programmer, or an experienced one, but surely this little problem is not strange to you.
I have a tons of folder of unfinish games, in those files there are many moments of fun and learning, but nothing closed. Nothing to be proud, or show. So I started challenge myself to planning, design, coding and publish games, as a iterative process. This not only contributes to my knowledge, but also to my management skills.
At the moment I make two crappy games, but the feedback that they gave transform them in the next couple of advices. I hope you find it useful.
Estimate all the tasks, two hours maximum per task (Divide as much as possible). If you don't know how achieve the task use the cone of uncertainty.
Priorice for MVP (minimum viable project). Build features from basic but necessaries functionalities to most accessories ones. You need to think in a building, from the bases to the top, one floor at a time, not from left to right.
Design is iterable. If you illustration or design skill are weak, like me, use basic shapes for start test your game. Don't wait for get the final design to start programming. You can buy assets too.
If the code scales and not compromise maintenance, Its ok. If It bothers you in a piece of code, assign time to fixed later.
Don't look back. The game is a chunk of logic and images, this isn´t your baby. Usually is better apply the learning in something new.
Put a deadline, try to work one hour per day.
This journey don't end, but for now this is the output (Be nice, the target here is management, not technical).