Каковы самые узкие места при разработке крупных проектов? [закрыто]

11

Допустим, моей компанией была разработка копии MS Word (просто в качестве примера). Что может быть узким местом в процессе разработки, если предположить, что у человека есть бесконечные наличные деньги и такая организация, как Microsoft? Другими словами, какие самые обычные препятствия от быстрой разработки такого программного обеспечения? Давайте предположим, что все спецификации на месте, и организация работает отлично, поэтому мы просто сосредоточимся на разработке программного обеспечения, пока продукт не будет готов к отправке. Некоторые альтернативы могут быть: - Написание кода - Написание тестов - Ручное тестирование конечного продукта - Переписывание кода в первую очередь из-за плохого дизайна - Разработка кода - Проверка кода, выполненная опытными разработчиками - Разработка GUI - Переработка графического интерфейса на основе альфа / обратная связь с бета-пользователями - обработка отзывов пользователей - ожидание обратной связи с альфа / бета-пользователями

Пожалуйста, используйте ссылки в своем ответе или изложите свой опыт по этому вопросу.

Дэвид
источник
4
Есть хорошие разработчики?
@ Thorbjørn Ravn Andersen Скажем так же, хорошо и плохо, как Microsoft.
Дэвид
1
Это серьезно не указано и не может быть ответа.

Ответы:

3

По моему опыту, основным «узким местом» является процесс обучения . Когда ваша гипотетическая компания начинает разработку следующего Microsoft Word, существует огромный разрыв между тем, что вам нужно знать, и тем, что вы действительно знаете. Размер разрыва зависит от многих факторов, может быть, в технологии или области. Вы затронули некоторые из этих вопросов в своем вопросе, например, дизайн, отзывы пользователей и т. Д. Microsoft Word разрабатывается уже более 30 лет, поэтому между историей, кодом, инструментами и людьми есть много знаний.

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

Это, кстати, не является уникальным для программных проектов. Это верно для каждого крупномасштабного проекта, где вы пытаетесь сделать что-то новое. Например, посмотрите на Boeing Dreamliner. Об этом написано много книг. Мифический Человек Месяц один.

Гай Сиртон
источник
37

Давайте предположим, что все спецификации на месте, и организация работает отлично.

Вы предположили, что двух самых больших «узких мест» в процессах разработки программного обеспечения не существует (из моего личного опыта).

Брэндон Моретц
источник
4
++ Да. И предположение, что если у вас есть спецификации, они не будут изменены. Требуется, чтобы опытные разработчики знали, как предвидеть, какие изменения еще не были запрошены, и как справиться с ними, когда они это сделают.
Майк Данлавей,
Я знаю, что это огромные препятствия, но я не спрашиваю о них, поскольку я уже знал о них, и они очевидны.
Дэвид
8

Даже в вашем гипотетическом, идеальном мире есть некоторые проблемы, которые я вижу:

Наверное, самое важное, с моей точки зрения, это работа с клиентами. По моему опыту, бизнес должен иметь дело с клиентами, которые часто пытаются изменить проект во время его разработки. В некоторых случаях они пытались использовать запрос на изменение как исправление ошибки, чтобы избежать необходимости платить деньги. Это может привести к большому количеству бюрократии, которая может задержать проект или привести к быстрому взлому кода, который в дальнейшем превращается в технический долг. Я читал и слышал о командах, которые занимаются этими проблемами так же легко, как и дышать, и я очень хотел бы оказаться в одной из них :)

Вторая проблема - отсутствие надлежащей модели предметной области. Эрик Эванс подробно освещает эту тему в своей книге « Дизайн, управляемый доменом» . Отсутствие хорошей модели предметной области приводит к некоторым проблемам, выделенным в ответе Гленна, таким как попытка найти ошибку. Без чистой модели предметной области может потребоваться много времени, чтобы просмотреть / отладить код, чтобы изолировать и исправить проблему. Я бы сказал, что хорошая модель предметной области значительно упрощает жизнь и отладку, особенно в том случае, если приложение будет работать и расширяться.

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

Пустынная планета
источник
Я думаю, что это отличный ответ!
Дэвид
4

Я не уверен, что вы подразумеваете под «организация работает отлично», но даже в фантастической организации самое большое узкое место в любом значительном проекте - это общение. Mythical Man Month указывает на то, как с ростом команды проекта взрываются коммуникационные комбинации, почти гарантируя ошибки и пропущенную информацию.

JeremyDWill
источник
2

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


источник
Это отличный ответ. Что касается ошибок, то, что вы бы сказали, является самым большим узким местом, которое отличается от вопроса о самом большом потребителе времени для разработчика. Выявление ошибки, поиск исправления, повторное тестирование или что-то еще.
Дэвид
1
Повторное тестирование не является проблемой. По моему мнению, настоящее узкое место - это, как правило, обнаружение ошибки, но нахождение правильного решения может занять столько же времени.
2

Я думаю, что Брэндон Моретц имеет лучший ответ. Но я хочу добавить, что вытащить первую версию из большого проекта не так уж и сложно. Лично мне никогда не удавалось этого сделать.

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

ElGringoGrande
источник
0

Да, я согласен с вышеизложенным и должен следовать моделям программного обеспечения. Насколько я знаю, главное:

1. Управление временем 2. Эффективность команды и управление командой 3. Координация в команде и 4. Лучшее понимание с клиентом

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

Киран
источник
0

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

mattnz
источник