Допустим, моей компанией была разработка копии MS Word (просто в качестве примера). Что может быть узким местом в процессе разработки, если предположить, что у человека есть бесконечные наличные деньги и такая организация, как Microsoft? Другими словами, какие самые обычные препятствия от быстрой разработки такого программного обеспечения? Давайте предположим, что все спецификации на месте, и организация работает отлично, поэтому мы просто сосредоточимся на разработке программного обеспечения, пока продукт не будет готов к отправке. Некоторые альтернативы могут быть: - Написание кода - Написание тестов - Ручное тестирование конечного продукта - Переписывание кода в первую очередь из-за плохого дизайна - Разработка кода - Проверка кода, выполненная опытными разработчиками - Разработка GUI - Переработка графического интерфейса на основе альфа / обратная связь с бета-пользователями - обработка отзывов пользователей - ожидание обратной связи с альфа / бета-пользователями
Пожалуйста, используйте ссылки в своем ответе или изложите свой опыт по этому вопросу.
Ответы:
По моему опыту, основным «узким местом» является процесс обучения . Когда ваша гипотетическая компания начинает разработку следующего Microsoft Word, существует огромный разрыв между тем, что вам нужно знать, и тем, что вы действительно знаете. Размер разрыва зависит от многих факторов, может быть, в технологии или области. Вы затронули некоторые из этих вопросов в своем вопросе, например, дизайн, отзывы пользователей и т. Д. Microsoft Word разрабатывается уже более 30 лет, поэтому между историей, кодом, инструментами и людьми есть много знаний.
Поэтому, если бы я попытался сделать это, я бы попытался нанять лучших людей, имеющих опыт в этой области, как технических, так и управленческих. Попробуйте прочитать любую доступную литературу в этой области. Я также постараюсь получить отзывы клиентов как можно скорее. Самая большая проблема - это критические вещи, о которых вы не знаете и о которых узнаете очень поздно.
Это, кстати, не является уникальным для программных проектов. Это верно для каждого крупномасштабного проекта, где вы пытаетесь сделать что-то новое. Например, посмотрите на Boeing Dreamliner. Об этом написано много книг. Мифический Человек Месяц один.
источник
Вы предположили, что двух самых больших «узких мест» в процессах разработки программного обеспечения не существует (из моего личного опыта).
источник
Даже в вашем гипотетическом, идеальном мире есть некоторые проблемы, которые я вижу:
Наверное, самое важное, с моей точки зрения, это работа с клиентами. По моему опыту, бизнес должен иметь дело с клиентами, которые часто пытаются изменить проект во время его разработки. В некоторых случаях они пытались использовать запрос на изменение как исправление ошибки, чтобы избежать необходимости платить деньги. Это может привести к большому количеству бюрократии, которая может задержать проект или привести к быстрому взлому кода, который в дальнейшем превращается в технический долг. Я читал и слышал о командах, которые занимаются этими проблемами так же легко, как и дышать, и я очень хотел бы оказаться в одной из них :)
Вторая проблема - отсутствие надлежащей модели предметной области. Эрик Эванс подробно освещает эту тему в своей книге « Дизайн, управляемый доменом» . Отсутствие хорошей модели предметной области приводит к некоторым проблемам, выделенным в ответе Гленна, таким как попытка найти ошибку. Без чистой модели предметной области может потребоваться много времени, чтобы просмотреть / отладить код, чтобы изолировать и исправить проблему. Я бы сказал, что хорошая модель предметной области значительно упрощает жизнь и отладку, особенно в том случае, если приложение будет работать и расширяться.
Проблемы, о которых я упоминал выше, не приводят к немедленным проблемам, но если вам нужно поддерживать этот продукт в течение длительного периода времени, они могут снова преследовать вас и вашу команду.
источник
Я не уверен, что вы подразумеваете под «организация работает отлично», но даже в фантастической организации самое большое узкое место в любом значительном проекте - это общение. Mythical Man Month указывает на то, как с ростом команды проекта взрываются коммуникационные комбинации, почти гарантируя ошибки и пропущенную информацию.
источник
Из того, что я видел до сих пор на работе, большой источник узких мест - просто ошибки и человеческая ошибка, которая их породила. Подумайте, сколько времени занимает отладка кода, найдите решение проблемы, а затем повторно протестируйте новое решение. Теперь представьте, что это исправление вызвало еще одну небольшую ошибку. Это может быть основной поток боли и, следовательно, замедляет развитие в целом.
источник
Я думаю, что Брэндон Моретц имеет лучший ответ. Но я хочу добавить, что вытащить первую версию из большого проекта не так уж и сложно. Лично мне никогда не удавалось этого сделать.
Что я не смог сделать, так это создать первую версию таким образом, чтобы вторая, третья и т. Д. Версия и / или исправления ошибок, или незначительные улучшения функций также могли быть доставлены своевременно.
источник
Да, я согласен с вышеизложенным и должен следовать моделям программного обеспечения. Насколько я знаю, главное:
1. Управление временем 2. Эффективность команды и управление командой 3. Координация в команде и 4. Лучшее понимание с клиентом
Если у нас есть вышеуказанные четыре, то мы можем перейти в новый мир с успехом и большим улучшением с точки зрения личности и программного обеспечения. Это приводит к хорошим отношениям с клиентом, и клиент будет отдавать приказы, не думая о нас.
источник
Скрытые дефекты, в требованиях, дизайне, реализации, развертывании ... Как и в случае с вещами, которые сломаны, но вы еще не нашли это. Представьте, что разработка программного обеспечения была связана с каждой новой ошибкой, вызванной самыми последними изменениями.
источник