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