Na minha empresa (startup de 3 anos na indústria da web), temos problemas freqüentes com a equipe de produto dizendo "aaaah, isso é uma correção de crise agora!" (não todo mundo?)
Isso tem um impacto na produtividade (e no moral) da equipe de engenharia, incluída automaticamente. A gerência passou algum tempo pensando em como reduzir a frequência dessas solicitações no mesmo dia e encontrou a solução que lançaremos a cada semana. (Anteriormente, tínhamos feito uma a cada duas semanas, o que geralmente passava alguns dias.)
Existem 13 desenvolvedores e 6 testadores locais / 9 offshore; a teoria é que apenas 4 desenvolvedores (e todos os testadores) trabalharão em versões pares, a menos que surja um trabalho que exija alguma experiência específica de um dos outros desenvolvedores. Cada ciclo conterá dois dias de trabalho de desenvolvimento e dois dias de trabalho de controle de qualidade (mais 1 dia de escopo / triagem / ...).
Minhas perguntas são:
(a) Alguém tem experiência com esse período de ciclo de lançamento?
(b) Alguém já ouviu falar dessa tentativa de ciclo de liberação?
(c) Se (a) ou (b), como na Terra você faz isso funcionar? (Quaisquer armadilhas a serem evitadas, etc., também são apreciadas.)
(d) Como podemos minimizar o dano se esse esforço falhar?
fonte
Respostas:
Você certamente pode entregar todas as semanas - ou ainda mais frequentemente. No momento, geralmente lançamos a cada duas semanas, mas não é incomum implantar funcionalidades quando algo chegou sem aviso prévio de um de nossos parceiros que seria irrelevante se esperássemos o próximo ciclo. Em algum momento dos próximos meses, gostaria que passássemos para a entrega contínua (os itens são liberados o mais rápido possível, uma vez concluídos) como padrão, mas ainda não estamos suficientemente confiantes o suficiente longe.
O mais importante é que você precisa do seu site fortemente coberto por testes automatizados - testes de unidade e testes de aceitação de ponta a ponta / especificações executáveis. Por implicação, isso também significa que sua compilação é totalmente automatizada. No nível de aceitação, usamos o Robot Framework, que é excelente para criar rapidamente um conjunto de testes sustentável, graças à sua abordagem de palavras-chave. Para a aparência, nosso testador no local faz algumas verificações superficiais, mas também temos alguns na Índia que fazem uma verificação mais completa em diferentes navegadores (existem sites que ajudam nesse tipo de coisa tirando capturas de tela para você, por exemplo, BrowserLab )
Não automatizamos completamente a implantação (a etapa final requer intervenção manual, é uma decisão consciente) - mas automatizamos tudo para garantir que as conexões corretas do banco de dados estejam sendo usadas, etc., com ciclos de implantação curtos seria muito fácil cometer um erro com esse tipo de coisa.
Há um bom livro recente sobre entrega contínua que você pode querer conferir. Eu o examinei, mas ainda não o examinei em detalhes. O que li até agora coincide bem com nossas experiências: Entrega contínua: versões confiáveis de software por meio de automação de compilação, teste e implantação
Em resumo, você precisa de uma equipe altamente disciplinada, um alto nível de automação e - o mais importante de tudo - um grau extremamente alto de confiança nessa automação. Para mim, parece que mudar para os ciclos semanais no seu caso pode ser um erro - os remendos da crise sugerem outras questões e você deve trabalhar para eliminá-las. Aumentar o ritmo pode piorar a situação ...
fonte
Se você estiver continuamente no modo "liberação de crise", eu diria que seria mais prudente dar um passo atrás e reavaliar seu código e seu processo. Obviamente, há algum tipo de falha lá que apenas se repete.
Embora possa não ser totalmente possível fazer isso em uma escala de produção real, provavelmente valeria a pena ter pelo menos um membro sênior e algum outro subconjunto de desenvolvedores e testadores dedicados a essa avaliação.
O "4 em uma abordagem de cada vez" não parece um vencedor claro para mim. Isso significa mudança de contexto constante, o que significa muito menos eficiência.
Lembre-se, se você está constantemente se apressando para fazer alterações, é muito mais provável que cometa erros nessas alterações e quebre outra coisa enquanto estiver fazendo isso.
fonte
Ciclos de lançamento com menos de uma semana certamente foram alcançados na indústria de software. Eles empregam a técnica chamada entrega contínua (também chamada implantação contínua ).
Existe uma empresa que lança 50 vezes por dia. Esta postagem do blog descreve como eles fazem isso .
fonte
Parece que seu gerenciamento é campeão do mundo ... por que não investir no seu espírito de equipe? Você verá que os problemas desaparecerão por eles mesmos.
(a) + (b) IMHO, de acordo com o tamanho da sua equipe, deve ser de duas semanas no máximo. Uma semana funcionará para shows individuais ou para equipes muito pequenas (como 2 ou 3).
(c) + (d) Mas, independentemente do tamanho da sua equipe ou projeto, uma das primeiras coisas que faço é automatizar a construção e a implantação. Economizo dias, se não semanas, fazendo isso nos primeiros dias de um projeto.
Suas implantações devem ser feitas com um clique. Da origem ao preparo, depois do preparo à produção. Existem muitas ferramentas para tornar isso possível. De ant / nant a coisas super pesadas, como o Automated Build Studio .
Tudo pode ser automatizado, desde a implantação de arquivos até a atualização do banco de dados, incluindo backups, notificações, relatórios, ...
fonte