у программного продукта есть жизненный цикл, в котором непосредственное кодирование занимает лишь небольшую часть. Есть более общее понятие разработки, которое так же является частью жидзненного цикла ПО, в него входит кодирование, а также планирование и т.д. Если мы рассматриваем продукт целиком, то ошибки могут возникать на разных этапах. Они не обязательно должны быть на этапе кодинга. Ошибки планирования тоже ошибки. Из-за херового дизайна и возникают костыли