Помню писал я дипломную работу, просто сел и начал кодить, кодил, кодил (примерно 24/7 целую неделю) и понял я что код уже огромный, а решения и близко нет: куча ошибок, немерянный код по обработке исключений....
Ну а когда я просто остановился и задумался, то достал конспект, нарисовал граф конечного автомата под свою задачу и за один вечер написал код, который нужно было.
Да потом все-таки немного оформл обработку ошибок и прочую обвязку, но основной код был создан по картинке на листочке бумаги (часа 3 на рисование картинки и еще пара часов кодирования).
Вот к чему я это вспомнил - потому, что кодингом многие задачи в принципе не решаются. Нужно головой (на листочке) сначала думать, а уже оформленное решение кодировать.
И таких примеров в моей не слишком то программистской практике было много. Как только видишь что проект засыпается - нужно остановиться и переосмыслить все с самого начала, а уже потом начинать работу (возможно с самого начала).
Но что важно заметить, иногда, не пройдя по неверному пути, и не поймешь: который на самом деле верный.... Так что, если не знаешь куда двигаться - можно начинать с тупого кодинга (но понимая, что очень вероятно все это пойдет в урну).