Вопрос скользкий и именно для нашей страны.
Если программист живет и работает на западе, то не должен. В развитых странах существует такая профессия как: "Постановщик компьютерной программы". Это человек, который объясняет программисту как должна выглядеть программа и что она должна делать. А программист должен в совершенстве знать код своего языка программирования и уметь его "красиво" писать. Таким образом все тонкости программы и математика ложиться на плечи "постановщика."
У нас "постановщика" нет, у нас программист и постановщик в одном лице. По этой причине наши программы в 90% - это полный отстой. Потому как программист занимается тем, чего делать не умеет.
Успех программы - это 80% хорошая постановка и только 20% хороший код.