Realise that adding features does not make anything "perfect". Perfect software is robust, stable, tested, used, solid, etc. The only way of attaining this is to have it be widely used.
Therefore, in order to make perfect software, you have to crank out releases and get it into the hands of users who will find any imperfections for you (including both bugs and 'softer' imperfections like an inefficient UI).