One of the things that helped me a lot was realising that software is never "done". There's always more to do. Take a look at the simplest tool from coreutils: true. It's git log spans over 22 years. So accept that there's no point where your project can be done (i.e. your ideal) and learn to love the process instead. As long as you're moving in the direction of that unreachable ideal and making progress you're doing well.
Software (like Art) is never finished, only abandoned.
Software (like Art) is never finished, only abandoned.