Я менеджер проектов в моей компании. Я работаю с несколькими командами разработчиков, использующих стандартную, хорошо известную систему контроля версий, известную как CVS. Мне бы хотелось, чтобы непрерывная интеграция и автоматизированные сборки были реализованы, чтобы помочь предотвратить проблемы, связанные со сбоями в сборке и неправильным развертыванием, пробирающимся на рабочие серверы.
Я уверен, что смогу настроить это сам, но я не хочу делать это сам по двум причинам:
У меня нет времени на это. У меня есть свои собственные обязанности, которые включают маркетинг, общение с другими заинтересованными сторонами с членами команды, не участвующими в разработке, общение с клиентами и планирование проекта.
Самое главное, я менеджер проекта. Моя цель - обеспечить лидерство, а не микроуправление командой разработчиков .
Что я могу сделать, чтобы найти кого-то в команде разработчиков, кто был бы увлечен настройкой этого? Является ли разработчик подходящим человеком для решения этой задачи, учитывая, что для этого требуются знания Java, Spring и Google App Engine? Какие советы помогут продвигать изменения там, где опасаются перемен?
Ответы:
Сначала я бы изучил некоторые возможности. Например, Hudson является довольно популярным сервером непрерывной интеграции и чрезвычайно гибок. Вы можете отправить по электронной почте вашей команде разработчиков что-то вроде этого:
Этот подход имеет следующие преимущества:
В моем фиктивном сценарии
Dave
был выбран, потому что у него меньше всего на его тарелке и, вероятно, не будет проблем с настройкой нового сервера. В зависимости от рабочей нагрузки,Dave
может быть, просто вы. Это настолько субъективно, что я просто упоминаю об этом. Вы не всегда можете сказатьnot my job to do that
особенно, если вы единственный, у кого есть время, чтобы сделать это. Если все уже тянут время, их восприятие вашей готовности помочь становится более важным. Измерение - это навык, который вы развиваете со временем.В любом случае, к пятнице у вас будет либо сервер CIS, либо подробности того, почему это невозможно без дополнительного набора рук.
источник
not my job
карту, чтобы выйти из работы, но потому что менеджерам проектов легко иногда слишком увлекаться тем, что делает команда разработчиков. Передав это развитию, я даю им контроль и властвую. Кроме того, если они возьмут на себя ответственность за его настройку, они с большей вероятностью будут его использовать, тогда как, если я его настрою, я получу хороший опыт обучения тому, как настроить непрерывную интеграцию, но без окупаемости инвестиций и дополнительных затрат на предоставление на мои другие задачи. Кроме того, образец электронного письма очень полезен :) +1Я вижу, что это происходит тремя возможными способами:
Попросите кого-нибудь из команды разработчиков быстро оценить возможные инструменты и попросить его быстро что-то сделать. Если в ваших отдельных проектах имеются надлежащие сценарии сборки (то есть вы можете создавать проекты вне IDE), тогда их следует довольно быстро подключить к CI.
Считайте инфраструктуру сборки внутренним проектом вашей команды и управляйте им как таковым. Немного сложнее, чем первый пункт, но если все сделано правильно, вы получите лучшую систему. Распространение знаний в команде также снижает риск чрезмерной специализации, упомянутой ниже. Вы также получаете преимущества рецензирования. Однако некоторые программисты могут воспринимать эту задачу как унизительную и поэтому не могут тратить на нее столько, сколько должны.
Наймите разработчика в качестве мастера сборки и попросите его настроить все инструменты. Затем продолжайте использовать его для улучшения системы, добавления метрик, автоматического создания документов, автоматического тестирования и т. Д. Это более затратно, но если все сделано правильно, инвестиции в этого человека очень быстро окупятся за счет повышения эффективности вашей команды разработчиков. Этот человек должен хорошо владеть языками и структурами, используемыми вашей командой, и иметь желание склеить их в системе. С другой стороны (из комментариев) это может быть не в пределах вашего бюджета, и создание специализированной позиции может привести к недостаточно документированному решению, которое может затруднить переход.
Тем не менее, прежде чем начать что-либо, убедитесь, что вы действительно хотите от этого. В вашем вопросе недостаточно подробностей, чтобы направить вас в правильном техническом направлении. Вам нужно знать, каких преимуществ вы хотите достичь при использовании таких инструментов, вам нужно общее видение желаемой системы. Можно создать долгий путь в создании среды, которая связывает все это, но без генерального плана противодействия вы также можете бегать кругами и усложнять вещи, чем они есть.
Менеджер, который я однажды сказал, что инструменты хороши, но без процесса они бесполезны. Я только хотел бы, чтобы он следил за тем, что он сказал, когда пришло время поставить их на место ...
Так что, если вы решите нанять кого-то, есть определенные преимущества в том, чтобы получить программиста, а не кого-то с более ИТ-опытом. Главное, что этот человек может потратить некоторое время и энергию на создание связующего кода и плагинов, которые объединят различные системы в единую систему.
Надеюсь, это помогло
источник
Если у вас есть руководящая роль, ваша работа состоит в том, чтобы определить недостающие компоненты / методы, и вы несете ответственность за их правильное выполнение. Задача реализации может быть делегирована или нет, но в конечном итоге это ответственность руководителей.
Ключом к принятию является понимание или, по крайней мере, предоставление вам выгоды от сомнения. Вы можете рассказать о том, что вы хотите сделать, и рассказать о затратах и выгодах. Если обсуждение не приведет к пониманию, вы можете положиться на их доверие к вашим решениям, но только в том случае, если вы создали такой тип хранилища.
Если ваша делегация делает это из-за нехватки времени, сообщите об этом во время выступления или встречи команды и попросите добровольца. Если никто не придет, просто назначьте его так же, как и любую другую работу.
Обновить:
В каждой компании есть организационная структура. Лидерская роль несет ответственность за ресурсы на этом уровне. Они также обязаны указывать и решать любые проблемы. Они могут нуждаться в дополнительных ресурсах и / или предложениях, когда вы поднимаетесь по цепочке. Если вы можете справиться с проблемой, у вас есть возможность реализовать решение самостоятельно или делегировать. Это может и должно включать людей, на которых это повлияет напрямую, в идеале, в сотрудничестве с ними.
Я не могу сказать, что должности уровня директора и выше никогда не должны напрямую отвечать за конкретного человека или группу в компании. Это действительно зависит от организационной структуры компании. Я работал на стартапах, где технический директор непосредственно отвечал за разработчиков и тестировщиков. В более традиционной более крупной компании управление на этом уровне не имело бы необходимой наглядности или осведомленности, необходимых для принятия соответствующих решений на этих более низких уровнях.
источник
Я в основном разработчик, и я настраиваю его, когда могу (а именно, когда мне прямо не запрещено делать это). Как правило, поскольку я работаю в магазинах .NET, я выбираю CruiseControl.NET, потому что он с открытым исходным кодом, работает с большинством основных систем контроля версий и относительно прост в использовании. Я всегда хотел установить Ambient Orb в качестве одного из выходов, но это обычно вне моего контроля.
Обсудите это на собрании, чтобы сначала увидеть, есть ли у кого-то желание сделать это - до тех пор, пока это не повлияет на проекты, над которыми они сейчас работают.
На моем нынешнем месте (в одной из национальных лабораторий) мы настроили его только для того, чтобы сделать сборки согласованным образом, чтобы люди, которые хотят видеть то, что мы делаем, могли получить работоспособную версию в любое время. , Им не нужны модульные тесты (у менеджера проекта сложилось впечатление, что усилия, которые мы вложили в модульные тесты, могли быть направлены на перенос проекта в .NET).
На моем предыдущем месте целью было сделать сборки стандартными и согласованными для всех продуктов. Слишком много продуктов может быть построено только на одном специальном компьютере (в случае одного продукта, с использованием стороннего контроля с агрессивным DRM, который давно вышел из бизнеса, нам пришлось поддерживать одну машину в течение 5 лет после ухода разработчика потому что он был единственным, кто мог построить этот, теперь замененный, коммерчески доставляемый продукт). Кроме того, установку мог сделать только один человек, который был утренним человеком - поэтому, если вам нужно было построить сборку примерно после 15:00, вы подождали до следующего дня.
По-разному. Если у вас есть какой-нибудь QA-специалист, который неплохо разбирается в сценариях, сначала спросите его, прежде чем назначать ему.
Начать его с нуля не сложно. Установка не должна занимать более пары дней (в основном в корпоративной среде, стычки получают учетную запись для запуска со всеми необходимыми разрешениями) и запускаются.
источник
Попробуйте настроить его в другом направлении - если в производственной среде возникнет проблема, возьмите на себя ответственность за разработку и быстрое ее устранение. Затем представьте идею простой ночной сборки, которая компилируется из последнего кода, штампа версии и т. Д. Если сборка не удалась, она не будет продвигаться.
Я думаю, что сценарий сборки должен принадлежать разработке. Когда они изменяют зависимости или вносят изменения, они лучше всего знают, как обновлять сценарии. И скажите им, что, если управление проектом принадлежит ему, вы просто пригласите их на встречу, когда возникнет проблема.
источник
Вы могли бы просто сказать на следующем собрании: «Хорошо, я думаю, что мы должны сделать это из-за. Кто может реализовать это» Я даю вам больше, чем даже шансы, что кто-то скажет: «Конечно, я сделаю это». тогда вам не нужно ссориться по этому поводу.
источник