Будьте уверены, что это старая проблема.Большинству программистов приходилось сталкиваться с каким-то менеджером или лицом, принимающим решения, у которого каждый день появляется новое видение приложения.Похоже, они не понимают, что для автоматизации чего-либо требуется гораздо больше работы, чем для описания на высоком уровне.Похоже, они также не понимают, что моральное состояние их работников сказывается на том, что им нужно разрушить то, над чем вы только что усердно работали.
Трудно предвидеть все возможные способыможно попросить изменить дизайн программного обеспечения.Некоторые люди предложили зацепки, чтобы вы могли добавлять новые функциональные возможности на любом заданном этапе рабочего процесса, не разбивая приложение на части.Но какие крючки вы должны добавить?А что если сам рабочий процесс нужно изменить?
Многие разработчики программного обеспечения используют такие методы, как Agile Software Development или Extreme Programming или другие итерационные методологии.
Одна из общих идей итеративной разработки заключается в том, что вы не должны пытаться предвидеть все будущие изменения.Конечно, некоторые из ожидаемых вами изменений произойдут, но столь же вероятно, что многие из них этого не сделают, поэтому работа, которую вы проделали для прогнозирования возможных изменений, - напрасная трата усилий.
Так что вам стоит просто написать программное обеспечение, которое необходимо сегодня.Вам придется переписать некоторые из них, когда все изменится, но это нормально и неизбежно.И, вероятно, большая часть этого не изменится, поэтому чем проще дизайн, тем лучше.Предполагается, что, концентрируясь только на текущих требованиях, вы достаточно сокращаете общую работу, так что это чистый выигрыш.
Конечно, они также говорят, что вы должны изящно реагировать на изменения, когда это происходит, и смягчатьпотерял время, общаясь с клиентом (или менеджером) часто.Макеты и прототипы являются полезными инструментами в этом случае.Также не бойтесь сказать своему менеджеру правдиво, сколько времени у вас уйдет на перепроектирование программного обеспечения в соответствии с его описанием.Вы можете помочь, предложив некоторые компромиссы.Например, часто одна запрашиваемая им функция является причиной, по которой вам нужно перестроить архитектуру, иначе изменения были бы намного более незначительными.Так что поговорите об этом открыто и поговорите о том, есть ли другой способ решить ту же проблему без особой работы.Это также должно быть в его интересах, если он сможет удовлетворить эту потребность быстрее и с меньшими затратами.
В конце концов, однако, вы можете столкнуться с совершенно бессмысленным менеджером.Никакое количество переговоров или улучшения ваших методологий не может помочь в этом случае.Не работайте на кого-то, кто постоянно неуважительно относится к вам, вашему времени и продукту вашей работы.И не позволяйте им ходить вокруг вас или заставлять вас чувствовать себя виноватыми в долгие часы работы.
Также прочтите этот юмористический фрагмент, который, вероятно, отражает вашу ситуацию: Если архитекторам приходилось работать как программисты .