Вот сегодня только возвращались с коллегами к обсуждению проблем обучения программированию...
Человек обучается всегда от частного к общему.
Беда в том, что многие (да что там - большинство!) не стремятся к общему. И застревают на частном.
В программировании это означает, что начинают изучать язык программирования и "застревают" в нем.
В конкретных технологиях, в конкретных средах...
Вот даже наш семантический редактор делался по принципу: давайте сделаем что-нибудь, посмотрим, что получится.
И сегодня я второму курсу объяснял, что у программеров никогда не находится времени подумать,
зато всегда находится время на переделку...
Всего, что накосячили, не размышляя предварительно ни о пользователях, ни об архитектуре.