Кто отвечает за настройку автоматизированной системы сборки?

15

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

Я уверен, что смогу настроить это сам, но я не хочу делать это сам по двум причинам:

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

  2. Самое главное, я менеджер проекта. Моя цель - обеспечить лидерство, а не микроуправление командой разработчиков .

Что я могу сделать, чтобы найти кого-то в команде разработчиков, кто был бы увлечен настройкой этого? Является ли разработчик подходящим человеком для решения этой задачи, учитывая, что для этого требуются знания Java, Spring и Google App Engine? Какие советы помогут продвигать изменения там, где опасаются перемен?

jmort253
источник
7
Для меня новость, что роль менеджера проекта заключается в обеспечении лидерства.
Юрий Зубарев
Этот список требований к знаниям в конце концов, все, что разработчики могут иметь или не иметь, а не разработчики, конечно, не будут. Зависит от твоего.
Orbling
5
почти -1 для использования CVS.
Йоханнес Рудольф
@Johannes - Если бы это было до меня, мы не были бы. На самом деле, у меня есть настройка репозитория SVN, которую я использую.
jmort253
1
Несмотря на то, что CVS - старая технология (и далеко не моя любимая), она все еще работает, и во многих местах ее все еще используют. И если он выполняет свою работу, вам нужно, чтобы она оставалась на месте. Мы используем его в нашем офисе, и он выполняет свою работу.
Захари К

Ответы:

14

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

Я хотел бы представить инструмент непрерывной интеграции, чтобы токсичные ревизии появлялись намного раньше, чем позже. Я посмотрел на [hudson, acme CIS, foo], и все они выглядят так, как будто они будут работать. Учитывая тот факт, что мы используем CVS с [список предупреждений здесь], я ищу рекомендации и буду жить с тем, что решит команда.

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

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

Этот подход имеет следующие преимущества:

  • Вы делегируете, а не сбрасываете
  • Люди знают, что вы провели какое-то исследование, качество того, на что вы указываете, помогает определить ваши ожидания относительно качества внедренного инструмента.
  • Вы осведомлены о [предостережениях], давайте не будем срываться, обсуждая их, если они действительно не являются нарушителями соглашения для поставленной задачи
  • Вы позволяете немного демократии. Конечно, вы войдете в систему, чтобы увидеть, что что-то сломалось, но именно люди, которые имеют дело с СНГ, выберут платформу.

В моем фиктивном сценарии Daveбыл выбран, потому что у него меньше всего на его тарелке и, вероятно, не будет проблем с настройкой нового сервера. В зависимости от рабочей нагрузки, Daveможет быть, просто вы. Это настолько субъективно, что я просто упоминаю об этом. Вы не всегда можете сказать not my job to do thatособенно, если вы единственный, у кого есть время, чтобы сделать это. Если все уже тянут время, их восприятие вашей готовности помочь становится более важным. Измерение - это навык, который вы развиваете со временем.

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

Тим Пост
источник
2
Спасибо за вклад и советы. Я не пытался вытащить not my jobкарту, чтобы выйти из работы, но потому что менеджерам проектов легко иногда слишком увлекаться тем, что делает команда разработчиков. Передав это развитию, я даю им контроль и властвую. Кроме того, если они возьмут на себя ответственность за его настройку, они с большей вероятностью будут его использовать, тогда как, если я его настрою, я получу хороший опыт обучения тому, как настроить непрерывную интеграцию, но без окупаемости инвестиций и дополнительных затрат на предоставление на мои другие задачи. Кроме того, образец электронного письма очень полезен :) +1
jmort253
@ jmort253 - Да, я знаю, ты не уклоняешься от работы. Я обновлю для ясности.
Тим Пост
3
+1 за привлечение команды и разрешение им принимать технические решения. Это ключ, чтобы заставить их принять и использовать новую систему.
Петер Тёрёк
14

Я вижу, что это происходит тремя возможными способами:

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

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

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

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

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

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

Надеюсь, это помогло

Newtopian
источник
2
@Newtopian - это помогает. Особенно часть о плане, прежде чем слепо пытаться что-то реализовать. Спасибо. +1
jmort253
1
+1 Довольно здравый совет. Одно дополнение, на какой бы платформе вы не работали, если один из членов вашей команды является крупным Linux-руководителем или любой другой ОС, в которой часто есть разработчики, использующие сценарии сборки, они могут быть взволнованы проектом.
Гарет Клаборн
1
+1 за 3) у каждой команды разработчиков должен быть выделенный менеджер сборки в эти дни
Шон Патрик Флойд
1
Одна известная компания, о которой я читал (37signals? GitHub? I dunno), возлагает ответственность за то, чтобы быть мастером сборки, последнему человеку, который сломал сборку. Это гарантирует, что (1) люди позаботятся о том, чтобы не сломать сборку, и (2) несколько членов команды (в идеале) получат опыт изучения системы сборки.
Мишель Тилли
1
@jmort рано или поздно доходит до того, что никто не может взять на себя расходы, связанные с отсутствием такой выделенной должности
Шон Патрик Флойд,
3

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

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

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

Обновить:

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

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

dietbuddha
источник
Предположим, вы лидер других лидеров? Должен ли генеральный директор определять, что младший разработчик Java в команде проекта нуждается в дополнительном обучении?
jmort253
@ jmort253 Краткий ответ может быть, но это зависит от организационной структуры компании. Если структура компании плоская и маленькая, то генеральный директор может быть обязан обеспечить обучение разработчиков. Действительно, я работал во многих стартапах, где вице-президенты имеют прямые отчеты, которые не были менеджерами.
dietbuddha
1

Я в основном разработчик, и я настраиваю его, когда могу (а именно, когда мне прямо не запрещено делать это). Как правило, поскольку я работаю в магазинах .NET, я выбираю CruiseControl.NET, потому что он с открытым исходным кодом, работает с большинством основных систем контроля версий и относительно прост в использовании. Я всегда хотел установить Ambient Orb в качестве одного из выходов, но это обычно вне моего контроля.

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

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

На моем предыдущем месте целью было сделать сборки стандартными и согласованными для всех продуктов. Слишком много продуктов может быть построено только на одном специальном компьютере (в случае одного продукта, с использованием стороннего контроля с агрессивным DRM, который давно вышел из бизнеса, нам пришлось поддерживать одну машину в течение 5 лет после ухода разработчика потому что он был единственным, кто мог построить этот, теперь замененный, коммерчески доставляемый продукт). Кроме того, установку мог сделать только один человек, который был утренним человеком - поэтому, если вам нужно было построить сборку примерно после 15:00, вы подождали до следующего дня.

Является ли разработчик подходящим человеком для решения этой задачи, учитывая, что для этого требуются знания Java, Spring и Google App Engine?

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

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

Tangurena
источник
0

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

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

JQA
источник
0

Вы могли бы просто сказать на следующем собрании: «Хорошо, я думаю, что мы должны сделать это из-за. Кто может реализовать это» Я даю вам больше, чем даже шансы, что кто-то скажет: «Конечно, я сделаю это». тогда вам не нужно ссориться по этому поводу.

Захари К
источник