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:
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.
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?
fonte
Respostas:
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:
Essa abordagem possui os seguintes benefícios:
No meu cenário simulado,
Dave
foi 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,Dave
pode ser apenas você. Isso é tão subjetivo que eu simplesmente menciono. Você nem sempre pode dizer,not my job to do that
especialmente 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.
fonte
not my job
cartã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 :) +1Eu vejo isso de três maneiras possíveis:
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.
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.
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
fonte
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.
fonte
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.
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.
fonte
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.
fonte
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.
fonte