Как бы вы сбалансировали между разработкой и (фактически) реализацией вашего приложения? - PullRequest
5 голосов
/ 26 июля 2010

Мой вопрос не зависит от языка программирования, а является более общим вопросом, чтобы увидеть, как люди думают.

Обычно в крупных домах разработки есть конкретные роли для каждой работы, например, программисты и архитекторы.Таким образом, точка зрения архитекторов заключается в том, чтобы иметь идеальный дизайн для архитекторов и решений, с другой стороны, программисты имеют дело с реализацией функций приложений и пользовательского интерфейса.Поэтому, если вы позволите архитектору, например, работать над приложением без программистов, вы получите идеальное приложение изнутри (шаблоны проектирования, классы, таблицы БД), но ничего извне, также оно применяется наоборот.Программисты всегда сосредотачиваются на результатах, не слишком заботясь о принципах проектирования (например, SOLID принципы).

Сейчас я работаю в небольшой фирме с командой, состоящей максимум из 8-10 человек., поэтому вам нужно позаботиться о дизайне вашего приложения, а также о реализации функций.Так что мой вопрос просто:

  • , когда вам нужно прекратить разработку и внедрение своего решения?
  • или это должна быть дополнительная работа?
  • что если вы достиглиТочка, в которой вы облажались только потому, что с самого начала вы плохо проектировали?

Надеюсь, у нас может быть другое мышление, чтобы мы могли придумать несколько приемлемых решений

Ответы [ 2 ]

2 голосов
/ 26 июля 2010

Тщательное продумывание проблемы / дизайна улучшит окончательный код. Но если вы не потратите месяцы на дизайн, когда будете писать код, вы обнаружите обнаруженные недостатки в дизайне, новые функции, о которых вы не думали, или взаимодействия, которые вы не ожидали. И в большинстве программных проектов цели будут перемещаться (клиент захочет что-то немного другое, или у вас будет отличная идея на полпути и т. Д.).

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

Agile подходы предполагают, что вы должны только проектировать столько, сколько вам нужно, чтобы начать, а затем делать немного больше дизайна позже, когда вы обнаружите, что это необходимо. Это смешивает кодирование с дизайном и обеспечивает гораздо более гибкий подход. Тем не менее, это часто неверно истолковывается как означающее, что «никакой дизайн» не выполнен, или о больших частях проекта не думают, пока не станет слишком поздно - это не должно иметь место. Вы должны спроектировать общую структуру настолько, чтобы вы понимали, как действовать, и чтобы мелкие части дизайна, которые вы не указали, были достаточно простыми, чтобы вы знали, что сможете разработать их позже, не ставя под угрозу конечный продукт.

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

0 голосов
/ 26 июля 2010

Любой проект программирования - это, по сути, итеративный процесс.Независимо от того, занимаетесь ли вы одним программистом, или огромная команда разбивается на более мелкие группы, которые обрабатывают кусочки целого.

Это похоже на старый военный принцип: No battle plan survives contact with the enemy.Даже самый подробный и конкретный план развития может натолкнуться на некоторые препятствия на пути, которые требуют изменений в отдельных частях проекта.И если клиенты вносят свой вклад в проект, поскольку он проходит различные этапы, они ВСЕГДА хотят изменений или хотят отказаться от каких-либо вещей и начать все с нуля.

Даже обратная связь между членами команды вызовет изменения.Архитектор схемы базы данных, возможно, придумал блестящую схему, которая на бумаге выглядит совершенно идеально, но на самом деле работает как кирпичик.Кодер мог бы реализовать абсолютно великолепный алгоритм для некоторого аспекта программы, но он в итоге высасывает слишком много оперативной памяти, и вы в конечном итоге возвращаетесь к более уродливому, но более эффективному методу.

Не имеет значения, какая разработкаметод умного слова вы в конечном итоге использовать - все изменится, и вам просто нужно адаптироваться.Найдите то, что работает для вас и вашей команды, и продолжайте в том же духе.

...