Ciclo de lançamento de uma semana: como faço isso possível?

12

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?

Arkaaito
fonte
O que você quer dizer com "trabalho em crise"?
Wizard79
Pedidos que somos instruídos a corrigir no mesmo dia em que são recebidos. Editando a pergunta para torná-la mais clara momentaneamente.
Arkaaito 12/10/10

Respostas:

8

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 ...

FinnNk
fonte
7

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.

Wonko, o são
fonte
se posso adicionar meus próprios comentários à ótima resposta de @ Wonko ... Nossa empresa passou vários anos fazendo coisas semelhantes ao OP. Crescendo de 6 ou devs para 16. Cerca de 2 anos atrás, decidimos ir para o Agile. Contratamos uma experiência de Sr. Dev com Agile, alternamos iterações de duas semanas, implementamos integração contínua, etc ... Ainda estamos longe de uma loja de livros didáticos e ela é acidentada de tempos em tempos, mas realmente reduzimos o contexto comutação, o que é uma grande vitória.
DevSolo
1

A gerência passou algum tempo pensando em como reduzir a frequência desses "trabalhos em crise" e surgiu com a solução de que teremos um lançamento a cada semana.

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
Não tem muita certeza do que está propondo aqui - você está dizendo que a gestão de problemas deve ser abordada é a falta de espírito de equipe? Ou você está dizendo que estou demonstrando uma falta de espírito de equipe tentando descobrir como fazer isso funcionar (e ficando nervoso com as perspectivas de sucesso)?
Arkaaito 12/10/10
Não posso dar uma opinião objetiva sobre sua situação quando descrita em poucas linhas de texto. No entanto, observei que a falta de espírito de equipe geralmente é a causa raiz de muitos problemas na organização como o seu. Independentemente desse problema eu sugiro que você endereço, automatizando o processo de implantação irá melhorar a sua experiência