У Вас просто нет подходящей задачи.
Истории известны случаи, когда люди становились программистами просто потому, что им надо было срочно решить какую-то конкретную задачу (к примеру, сделать обработку данных для научной работы).
А Вы, судя по всему, пытаетесь начать программировать просто так, "для того, чтобы было". Отсюда куча внутренних противоречий: "да зачем мне это надо?".
Найдите задачу по душе и вперед с песней.
Что же касается кривого кода - это действительно может стать сильным стопором ("решение существует, но оно какое-то кривое, поэтому я не буду его применять, а посижу и подумаю над более красивым").
Лично я с таким борюсь следующим образом: если чувствую, что затупил, пишу кривую реализацию с пометкой "FIXME: ...". Это позволяет двигаться дальше, и в процессе может либо прийти в голову нормальное решение, либо логика кода может смениться до неузнаваемости (и кривое решение уйдет само собой).