I used to have this problem (and still do to some extent) but it's not impossible to improve. Pick an idea and commit to completing it in the way that you envisage it now, even if midway through you discover a new technology or better way to do it, stick to what you originally planned. There is always a better way to do something and if you allow yourself to be distracted by a "better" way of doing something midway through, you'll find midway through the "better" thing there's another new even better thing and the cycle will repeat. The best code isn't always perfect code, the best code is code that exists. You'll learn way more from a project if you work on it start to finish, even if it could have been built better. There's always Version 2.