Настоящий программист должен уметь и знать очень многое. И шаблоны проектирования входят в эти знания. Если ты думаешь, что знание хотя бы базовых принципов, типа SOLID, распространено -- ты ошибаешься. Пришедшие на собеседование "программисты" с 20-летним стажем про букву D в этой аббревиатуре рассказывают, что это Dependency Injection Principle и несут в связи с этим чушь про IoC-контейнеры. На вопрос о том, а зачем вообще нужны эти принципы (что ты получаешь, руководствуясь ими) -- мычат. Многие рассказывают захватывающие истории про повторное использование исходных текстов (почему-то они называют кодом их, а не результат компиляции). Я понимаю, что тебя вполне устраивают такие кадры в разработке ПО: в твоих сообщениях сквозит то, что тебе важен отчет о "выполненных" задачах, а не фактический результат. Поэтому на программирование ты и набираешь тупых шаманов вместо инженеров.