Quem é responsável por configurar um sistema de compilações automatizadas?


15

Sou gerente de projetos da minha empresa. Trabalho com algumas equipes de desenvolvedores usando um sistema de controle de versão padrão e conhecido, conhecido como CVS. Gostaria de ver a integração contínua e as compilações automatizadas implementadas para ajudar a evitar problemas com a quebra da compilação e com implantações ruins entrando nos servidores de produção.

Tenho certeza de que posso configurar isso sozinho, mas não quero fazer isso sozinho por dois motivos:

  1. Eu não tenho tempo para isso. Tenho minhas próprias responsabilidades, que envolvem marketing, comunicação com outras partes interessadas com membros da equipe que não fazem parte do desenvolvimento, comunicação com os clientes e planejamento do projeto.

  2. Mais importante, eu sou o gerente de projetos. Meu objetivo é fornecer liderança, não microgerenciar a equipe de desenvolvimento .

Quais são algumas das ações que posso fazer para encontrar alguém na equipe de desenvolvimento que seja apaixonado por configurar isso? O desenvolvedor é a pessoa certa para esta tarefa, considerando que requer conhecimento de Java, Spring e Google App Engine? Quais são algumas dicas para ajudar a promover mudanças onde as mudanças são temidas?


7
É novidade para mim que o papel do gerente de projetos é fornecer liderança.
Yuriy Zubarev 21/03

Essa lista de requisitos de conhecimento no final, tudo o que os desenvolvedores podem ou não ter, e os não-desenvolvedores certamente não. Depende do seu.
Orbling 21/03

5
quase -1 para ainda usar o CVS.
Johannes Rudolph

@ Johannes - Se dependesse de mim, não estaríamos. Na verdade, eu tenho uma configuração de repositório SVN que estou usando.
jmort253

1
Por mais que o CVS seja uma tecnologia antiga (e longe da minha favorita), ele ainda funciona e muitos lugares ainda a usam. E se estiver fazendo o trabalho, você precisará deixá-lo no lugar pode fazer sentido. Nós o usamos em nosso escritório e ele faz o trabalho.
Zachary K

Respostas:


14

Eu pesquisaria primeiro algumas possibilidades. Por exemplo, o Hudson é um servidor de integração contínua bastante popular e é extremamente flexível. Você pode enviar um e-mail para sua equipe de desenvolvimento com algo assim:

Eu gostaria de introduzir uma ferramenta de integração contínua para que as revisões tóxicas surjam muito mais cedo ou mais tarde. Eu olhei [hudson, acme CIS, foo] e todos parecem que funcionariam. Dado o fato de estarmos usando o CVS com [lista de advertências aqui], estou procurando recomendações e conviverei com o que a equipe decidir.

Dave, encarregue-se de obter um consenso e colocar isso em funcionamento. Equipe - envie sua opinião a Dave até o final do dia de quinta-feira para que possamos testá-lo na sexta-feira.

Envie-me minhas credenciais quando tivermos estabelecido algo.

Essa abordagem possui os seguintes benefícios:

  • Você está delegando, não despejando
  • As pessoas sabem que você fez alguma pesquisa; a qualidade das coisas que você aponta ajuda a definir suas expectativas em relação à qualidade da ferramenta implementada
  • Você está ciente de [advertências], não vamos nos atrapalhar discutindo-as, a menos que elas sejam realmente disruptivas para a tarefa em questão
  • Você permite um pouco de democracia. Claro, você fará login para ver se algo quebrou, mas as pessoas que tiverem que lidar com um CIS serão as únicas a escolher a plataforma.

No meu cenário simulado, Davefoi selecionado porque ele tem o mínimo em seu prato e provavelmente não teria problemas em configurar um novo servidor. Dependendo da carga de trabalho, Davepode ser apenas você. Isso é tão subjetivo que eu simplesmente menciono. Você nem sempre pode dizer, not my job to do thatespecialmente se você é o único que tem tempo para fazê-lo. Se todo mundo já está puxando o tempo, a percepção de sua vontade de ajudar se torna mais importante. Medir é uma habilidade que você desenvolve ao longo do tempo.

De qualquer forma, você terá um servidor CIS até sexta-feira ou detalhes sobre por que isso simplesmente não é possível sem um conjunto extra de mãos.


2
Obrigado pela contribuição e conselhos. Não estava tentando tirar o not my jobcartão do trabalho, mas porque às vezes é fácil para os gerentes de projeto se envolverem demais no que a equipe de desenvolvimento está fazendo. Ao delegar isso no desenvolvimento, eu dou a eles o controle e reina. Além disso, se eles se encarregarem de configurá-lo, provavelmente o usarão, enquanto que, se eu o configurar, obterá uma boa experiência de aprendizado de como configurar a integração contínua, mas sem ROI e o custo de oportunidade de oferecer nas minhas outras tarefas. Além disso, o email de amostra é muito útil :) +1
jmort253 21/03

@ jmort253 - Sim, eu sei que você não está evitando o trabalho. Vou atualizar para maior clareza.
Tim Post

3
+1 por envolver a equipe e deixá-los tomar as decisões técnicas. Essa é a chave para fazê-los aceitar e usar o novo sistema.
Péter Török 21/03

14

Eu vejo isso de três maneiras possíveis:

  1. Peça a alguém da equipe de desenvolvimento que faça uma avaliação rápida das possíveis ferramentas e faça com que ele crie algo rapidamente. Se seus projetos individuais tiverem scripts de construção adequados (por exemplo, você pode criar os projetos fora do IDE), será bastante rápido conectá-los ao IC.

  2. Trate a infraestrutura de construção como um projeto interno da sua equipe e gerencie-a como tal. Um pouco mais envolvido do que o primeiro ponto, mas se bem feito, você obterá um sistema melhor. A disseminação do conhecimento pela equipe reduzirá o risco de superespecialização mencionada abaixo. Você também obtém os benefícios da revisão por pares. No entanto, alguns programadores podem perceber essa tarefa como degradante e, como tal, podem não gastar tanto nela quanto deveriam.

  3. Contrate um desenvolvedor como mestre de construção e faça com que ele configure todas as ferramentas. Em seguida, continue a usá-lo para melhorar o sistema, adicionar métricas, geração automatizada de documentos, testes automatizados etc. Isso é mais caro, mas, se feito corretamente, os investimentos nessa pessoa serão pagos rapidamente, aumentando a eficiência da sua equipe de desenvolvimento. Essa pessoa deve ter conhecimento dos idiomas e estruturas usados ​​por sua equipe e deseja colá-los em um sistema. Por outro lado (a partir dos comentários), isso pode não estar dentro do seu orçamento e a criação de uma posição especializada pode levar a uma solução menos documentada que pode dificultar as transições.

Dito isto, antes de iniciar qualquer coisa, tenha certeza do que você realmente deseja. Sua pergunta não contém alguns detalhes para direcioná-lo na direção técnica correta. Você precisa saber quais ganhos deseja obter ao usar essas ferramentas, precisa de uma visão geral do sistema desejado. Pode-se percorrer um longo caminho na criação de um ambiente que amarre tudo, mas sem um plano mestre para construir contra você, também é possível executar círculos e tornar as coisas mais complicadas do que já são.

Certa vez, um gerente disse que as ferramentas são boas, mas sem um processo elas são inúteis. Eu só queria que ele tivesse seguido o que ele disse quando chegou a hora de colocá-las em prática ...

Portanto, se você decidir contratar alguém, há vantagens definidas em contratar um programador em vez de alguém com um background mais ITish. O ponto principal é que essa pessoa pode gastar algum tempo e energia na criação do código de cola e plugins que integrarão os diferentes sistemas em um sistema coerente.

Espero que isso tenha ajudado


2
@ Newtopian - Isso ajuda. Especialmente a parte de ter um plano antes de tentar cegamente implementar alguma coisa. Obrigado. 1
jmort253

1
+1 Um conselho sensato. Além disso, qualquer que seja a plataforma em que você esteja trabalhando, se um dos membros de sua equipe for um dos principais Linux, ou qualquer outro sistema operacional por aí que geralmente tem usuários de desenvolvedores que usam scripts de construção, eles podem ficar animados com o projeto.
Garet Claborn 21/03

1
+1 para 3) cada equipe software deve ter um gerente de construção dedicado estes dias
Sean Patrick Floyd

1
Uma empresa importante sobre a qual me lembro de ler (37signals? GitHub? Não sei) atribui a responsabilidade de ser o mestre da construção à última pessoa que quebrou a construção. Isso garante que (1) as pessoas tomem cuidado para não interromper a compilação e que (2) vários membros da equipe (idealmente) obtenham experiência em aprender sobre o sistema de compilação.
precisa

1
@jmort mais cedo ou mais tarde ele está chegando ao ponto onde ninguém pode esforço o custo de não ter uma posição tão dedicado
Sean Patrick Floyd

3

Se você tem um papel de liderança, é seu trabalho identificar componentes / práticas ausentes e sua responsabilidade de vê-lo implementado corretamente. A tarefa de implementação pode ser delegada ou não, mas, em última análise, é de responsabilidade do líder.

A chave da aceitação é entender, ou pelo menos dar a você o benefício da dúvida. Você pode conversar sobre o que deseja fazer e trazer os custos e benefícios. Se a discussão não trouxer entendimento, você pode confiar na confiança deles em suas decisões, mas somente se você tiver construído esse tipo de recompensa.

Se o seu delegado fizer restrições pontuais de conhecimento, traga-o para uma reunião de pé ou em equipe e peça um voluntário. Se ninguém vier, simplesmente atribua-o como você faria com qualquer outro trabalho.

atualizar:

Existe uma estrutura organizacional dentro de cada empresa. Um papel de liderança é responsável pelos recursos desse nível. Eles também têm a responsabilidade de apontar e resolver quaisquer problemas. Eles podem precisar de recursos adicionais e / ou sugestões, em que momento você sobe na cadeia. Se você pode lidar com o problema, tem a opção de implementar uma solução sozinho ou delegar. Isso pode e deve envolver as pessoas que afetará diretamente, idealmente em colaboração com elas.

Não posso dizer que o nível de diretor e os cargos acima nunca devam ser diretamente responsáveis ​​por uma pessoa ou grupo em particular em uma empresa. Realmente depende da estrutura organizacional das empresas. Trabalhei em empresas iniciantes, nas quais o CTO era diretamente responsável por desenvolvedores e testadores. Em uma empresa maior e mais tradicional, o gerenciamento nesse nível não teria a visibilidade ou a familiaridade necessárias para tomar decisões apropriadas nesses níveis inferiores.


Suponha que você seja um líder de outros líderes? É responsabilidade do CEO identificar que um desenvolvedor júnior de Java em uma equipe de projeto precisa de treinamento extra?
precisa saber é o seguinte

@ jmort253 A resposta curta é talvez, mas depende da estrutura organizacional da empresa. Se a estrutura da empresa for plana e pequena, poderá ser responsabilidade do CEO garantir que os desenvolvedores recebam treinamento. De fato, trabalhei em várias startups em que os vice-presidentes têm subordinados diretos que não eram gerentes.
dietbuddha

1

Sou principalmente um desenvolvedor e o configuro quando posso (a saber, quando não estou expressamente proibido de fazê-lo). Geralmente, como os locais em que trabalho são lojas .NET, escolho o CruiseControl.NET porque é de código aberto, funciona com a maioria dos principais sistemas de controle de origem e é relativamente fácil de usar. Eu sempre quis configurar um Ambient Orb como uma das saídas, mas isso geralmente está fora de meu controle.

Convide-o para uma reunião para ver se alguém deseja fazê-lo - desde que não tenha impacto nos projetos em que está trabalhando atualmente.

No meu local atual (um dos laboratórios nacionais), nós o configuramos apenas para fazer as compilações de maneira consistente, para que as pessoas que querem ver o que estamos fazendo possam obter uma versão executável a qualquer momento . Eles não querem testes de unidade (a impressão do gerente de projeto é que o esforço que realizamos nos testes de unidade poderia ter sido feito para portar o projeto para o .NET).

No meu local anterior, a intenção era tornar as construções padrão e consistentes entre os produtos. Muitos produtos só podiam ser criados em um computador especial (no caso de um produto, envolvendo um controle de terceiros com DRM agressivo que há muito tempo havia saído do mercado, tivemos que manter uma máquina ativa por cerca de 5 anos depois que o desenvolvedor saiu porque ele foi o único que conseguiu criar esse produto comercialmente substituído agora). Além disso, as instalações só podiam ser feitas por uma pessoa que era de manhã - por isso, se você precisasse de uma construção depois das 15h, esperaria até o dia seguinte.

O desenvolvedor é a pessoa certa para esta tarefa, considerando que requer conhecimento de Java, Spring e Google App Engine?

Depende. Se você tem uma pessoa de controle de qualidade decente em scripts, pergunte primeiro antes de atribuí-las a ela.

Configurá-lo para começar não é uma tarefa complicada. Não deve demorar mais do que alguns dias para configurar (principalmente em um ambiente corporativo, os aborrecimentos estão conseguindo uma conta para executar as coisas com todas as permissões necessárias) e começar a funcionar.


0

Tente configurá-lo de uma direção diferente - quando houver um problema no ambiente de produção, coloque a equipe da equipe de desenvolvimento para corrigi-lo e corrigi-lo rapidamente. Em seguida, introduza a idéia de uma compilação noturna simples que seja compilada a partir do código mais recente, carimbo de versão etc. Se ela falhar na compilação, ela não será promovida.

Eu acho que o script de construção deve pertencer ao desenvolvimento. Quando eles modificam as dependências ou fazem alterações, eles são os melhores para saber como atualizar os scripts. Diga a eles que, se o gerenciamento do projeto for seu, você os convocará para uma reunião sempre que houver um problema.


0

Você poderia dizer na sua próxima reunião: "OK, acho que devemos fazer isso por causa de. Quem pode implementá-lo" Dou-lhe melhor do que as probabilidades de alguém dizer "Claro que vou fazê-lo". então você não precisa brigar por isso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.