Что бы вы добавили в этот контрольный список проекта разработки программного обеспечения? [закрыто]

14

Я большой поклонник контрольных списков. Существует Путешествие Контрольного список , Перемещение Контрольного списка и даже Scrum Контрольного списка .

Контекст : вы были наняты крупной корпорацией и получили задание настроить всю среду разработки программного обеспечения, процессы, команду и т. Д. У вас есть «карт-бланш». Вы будете нести ответственность за создание рабочих приращений программного обеспечения. Размер проекта: 2000 чел / сутки.

Какие элементы вы бы добавили в следующий (намеренно маленький и неполный) контрольный список:

  • Установите сервер непрерывной интеграции
  • Написать DoD
  • Написать руководство по кодированию на одной странице
  • Создать бэклог продукта
  • Установите систему отслеживания ошибок
  • Расписание обычного времени для лица
Томас Оуэнс
источник

Ответы:

10

* 1.) Поговорите с разработчиками, чтобы узнать, что им действительно нужно! *

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

3.) Контроль версий / версий

4.) Система обзора кода (Crucbile / Fisheye в качестве примера)

5.) Канбан стена (или что-то подобное)

6.) Коммуникационные протоколы (чат в реальном времени - большой плюс), вики также поощряют сотрудничество. Это также касается связей с общественностью внутри компании - как вы собираетесь взаимодействовать с владельцами своего бизнеса, сотрудниками службы технической поддержки и другими группами?

7.) Электронные доски

8.) Удобная среда для разработчиков (диваны, столы, зоны отдыха, хороший WiFi и т. Д.)

9.) Отличный кофе !!!

Мартейн Вербург
источник
Кофе имеет значение:) + 1
РБА
какие электронные доски вы используете?
@Pierre 303 - Распечатка результатов сеанса белой доски a (я думаю, что качественная фотография будет делать то же самое).
Мартейн Вербург
8
  • Настройка цепочки инструментов - IDE, CI-сервер, сервер качества кода, контроль исходного кода, веб-сервер, базы данных, система отслеживания ошибок и т. Д.
  • Резервные копии - Какую роль играет каждый человек в команде? Какими процессами / модулями он «владеет» и кто его поддерживает?
  • (Принятие пользователем) Настройка тестовой среды - не только непрерывная интеграция w. модульные тесты, но интеграционные тесты для охвата действительно плохих вещей, множества платформ, серверов приложений, виртуальных машин и т. д.
  • Настройка тестов производительности - чем раньше, тем лучше, поскольку вам понадобятся исторические данные, чтобы ответить на вопрос: «С какой характеристикой / вехой производительность так сильно упала?»
  • (Конечный пользователь) Схема документации - Что будет в документации? Какой тип (ы) документации необходим?
  • Маркетинговые каналы - Как объявляются внутренние вехи и внешние релизы? У вас есть классное название для программного обеспечения, логотипа, цветов, формулировок и т. Д.?
  • Внутренняя коммуникация - Как коллеги из других команд будут информированы об изменениях? Как осуществляется сотрудничество? Вики? Права доступа?
  • Люди и процесс обеспечения качества - Кто собирается проверять что, как часто и по каким критериям?
  • Процесс выпуска - когда, как часто, как, кто это делает, кто получает релиз и т. Д.
  • Управление рисками - наихудший сценарий (из проекта mgmt pov и из среды выполнения, например, «клиент теряет деньги из-за сбоя программного обеспечения в модуле X, каков план резервного копирования?»)
  • Защита базовой среды разработки, например, ее виртуализация для Escrow
  • Места для официальных и неформальных встреч
  • Обучение или вступления для всех людей, чтобы они знали, что такое вся установка, для чего каждая часть и как они ее используют.
  • Выявление смотрителя и предоставление ему всех вещей (например, разрешений), которые ему необходимы, чтобы на самом деле позаботиться о том, когда дела пойдут плохо
mhaller
источник
+1 за резервное копирование и обучение
Ливиу Т.
резервные копии, хотя я думаю, что некоторые из них являются посторонними.
BlackICE
5

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

rjzii
источник
4

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

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

Настройте серверы dev / qa / staging и prod для приложения и баз данных. Базы данных никогда не должны находиться на одном сервере с приложениями. В зависимости от размера и масштаба проекта вам может потребоваться несколько серверов или сетей SAN и т. Д. Для каждой среды.

Как только серверы настроены, запланируйте резервное копирование файловой системы, базы данных и журналов транзакций базы данных. Сделайте это в самый первый день, когда все готово. Нанимайте такую ​​фирму, как Iron Mountain, для еженедельного резервного копирования.

Настройте систему контроля версий и создайте документ, описывающий, как она будет использоваться. Не забывайте настаивать на том, чтобы ВСЕ структурные изменения базы данных и вставки данных для таблиц типов поиска были в сценариях контроля версий. Это облегчит развертывание.

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

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

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

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

Создание планов испытаний и требований.

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

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

При планировании проекта предположим, что QA найдет ошибки и что на их устранение потребуется время. Не планируйте QA только на один день в конце.

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

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

Вам может понадобиться система управления проектами или, по крайней мере, настроить электронные таблицы для отслеживания того, что вам нужно отслеживать. При планировании проекта принимайте в свой план не более шести часов в день человека. Это помогает учесть время, которое будет потрачено не на проект, например, отпуск, больничное время, праздники, встречи с персоналом, обзоры эффективности и т. Д. Если вы знаете, что проект находится в периоде высокой недоступности (например, проект, который выполняется с 1 ноября по 1 января в США), возможно, вам придется сделать дополнительные надбавки для большего отпуска и отдыха. Несправедливо ожидать, что разработчики откажутся от своих отпусков и отпусков, и никто не может предсказать, когда произойдут такие вещи, как больничный, присяжные, тяжелая утрата и т.д. Предположим, они произойдут с вашей командой в этом проекте.

HLGEM
источник
Я думаю, что тестовый пользовательский компьютер должен быть "медленным стоном", а не "кричащим медленным";) очень хороший список.
BlackICE
@ Давид, мне нравится твое предложение, и оно изменилось в тексте.
HLGEM
Отличный ответ - маркеры или названия разделов могут немного помочь.
JBRWilkinson
3

Некоторые вещи, которые я не вижу в вопросе и последующих ответах:

  • План по ликвидации последствий катастрофы. Как вы делаете резервные копии блоков разработки, постановки, тестирования и т. Д.? Есть ли у каждого разработчика то, что ему нужно для работы из дома в случайный снежный день? И т.п.

  • План тренировок. Сколько недель тренировок нужно вашим разработчикам, чтобы оставаться в форме? Кто-нибудь отслеживает это? (Электронной таблицы может быть достаточно для большинства команд.) Имейте механизм для того, чтобы они могли отчитываться (посылая кому-либо электронное письмо, в котором говорилось, что он смотрел 2 часа веб-трансляций на «что угодно», вероятно, достаточно), и чтобы руководство планировало - например, кого мы должны отправить на что конференция в этом году.

  • Положение инструмента. Это место типа «мы даем вам всем подписку MSDN; пожалуйста, не устанавливайте ничего на ваших рабочих машинах» или «нам нужен ваш код, но нам все равно, что вы используете для его редактирования, компиляции и тестирования». "вроде места. Примите и запишите решение.

  • столько интегрированного ALM, сколько вы можете себе позволить. Обычно причина «несоответствия импеданса», двойного входа, перекрытия инструмента и интеграции приложений с вращающимся креслом заключается в том, что система росла по частям. Начиная с нуля, вы хотите показать, что ваши люди могут оставаться в одном инструменте на протяжении всего цикла. Не вводить код в X, компилировать с Y, тестировать с Z, изменять статус рабочего элемента / задачи с A, сообщать о времени, проведенном с B, говорить человеку, который ждал, что теперь он может продолжить с C, пытаясь понять что делать дальше с D, оценивая общий прогресс с E и т. д.

Кейт Грегори
источник
2

Запутать больше человеко-дней.

Это редкое событие, когда люди выделяют достаточно изначально.

[Позже ... заново обсудить еще больше ...]

Orbling
источник
Учитывая, что всегда нужно договариваться о большем количестве человеко-дней, я бы не рекомендовал это делать, поэтому я предпочел бы предоставить точные и надежные оценки продолжительности работы или проектов.
НимЧимпский
@NimChimpsky Недавно здесь обсуждалась вопрос о том, является ли возможность надежной оценки мифом в компьютерных проектах. Если работа не очень хорошо известна и не содержит никаких исследований, тогда трудно предсказать время. Даже если вы можете предсказать расписание своей команды, предсказать внешние факторы и задержки практически невозможно. Таким образом, «точные и надежные» оценки не являются чем-то, что, я считаю, существует вообще.
Orbling
@ Похоже, они существуют там, где я работаю. Аутсорс 250 перечислил национальный ритейлер в Великобритании. Некоторые проекты опаздывают, но не так поздно, и они являются исключением.
НимЧимпский
@NimChimpsky Можно получить относительно точную оценку, если вы полностью контролируете все результаты проекта, не блокируетесь внешними данными и выполняемая задача не требует никаких исследований. Предоставление вашего бюджета распространяется на тщательный анализ до оценки времени. В большинстве компаний бюджет просто недоступен для полного расследования до его начала.
Orbling
@orbling Возможно, что всегда требовать больше времени является чисто произвольным и не основаны на доказательствах, результатах, анализе или бюджете.
НимЧимпский
2

Поскольку у меня больше всего проблем со сторонними библиотеками и их использованием:

  1. Определите библиотеки и версии, которые вы собираетесь использовать.
  2. Создайте процесс интеграции обновлений библиотеки в ваш проект.
  3. Убедитесь, что все разработчики находятся на борту библиотеки.
  4. Создать полезный канал для открытого обсуждения используемых технологий.

Почему? Я не могу сказать вам, сколько раз в сторонних библиотеках (проприетарных) были чудовищные ошибки, которые возвращали нас на несколько недель назад, потому что у нас не было процесса перемещения вверх или вниз. Или иметь дело с разработчиками, которые говорят: «Какую версию вы использовали? Почему вы использовали функции, помеченные как устаревшие?»

Wheaties
источник
1

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

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

В противном случае вы в конечном итоге обеспечите безопасность после внедрения - где это может стоить в 8–10 раз дороже (данные Gartner, IBM и др.), Расстроит людей, так как функциональность может быть затронута и может быть слишком поздно для предотвращения эксплуатации. и ущерб.

Рори Олсоп
источник
Мне любопытно, это должно быть частью контрольного списка настройки проекта? Я бы включил это как часть разработки программного обеспечения, но я не знаю о настройке проекта. Я бы добавил это с вехами разработчиков, но я не думаю, что об этом спрашивал ОП, я могу ошибаться.
BlackICE
Дэвид - возможно, вы правы, что такого уровня детализации не должно быть, но я думаю, что должна быть хотя бы статья о безопасности. Лучше?
Рори Олсоп
1

1. Отнеси это команде

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

2. Осмотреть и адаптировать

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

Мартин Викман
источник