Falando em Agile 2008 - Scrum na Globo.com: Derrubando Mitos

Por Paulo Silveira em 03/12/08

Boa notícia: já estamos disponibilizando uma palestra do Falando em Agile 2008!

Quem fala é Danilo Bardusco, gerente de desenvolvimento de aplicações Web na Globo.com, com a palestra entitulada “Scrum na Globo.com: Derrubando Mitos“. Aproveitem!

Falando em Agile 2008: eu fui!

Por alexandre.magno em 31/10/08

O Falando em Agile 2008 deixou saudades! Foi muito bom ver profissionais experientes não só em Agile, mas no mundo de software como um todo, discutindo durante dois dias sobre a difícil arte de fazer projetos darem certo, entregando software funcionando e com valor para o cliente. Foi muito bom ver profissionais de todos os mundo juntos: Java, .NET, Delphi, PMBok, Scrum, XP, FDD…em busca de um único objetivo!

Tivemos palestras abordando assunto para todos os gostos: cases de sucesso apresentados pela Dell, Aeronáutica e Globo.com; alertas sobre as dificuldades para a implantação de Agile; modelos para contratação de projetos ágeis; Scrum em ambientes PMBok; Kanban e muito mais. Foi realmente uma overdose!

DSC_7741_50 DSC_7744_50
DSC_7675_50 DSC_7653_50

Eu poderia neste post relatar cada uma das palestras, citar pontos positivos e negativos do evento, enfim, falar em detalhes do evento. No entanto a comunidade já está fazendo isto com maestria, então cito abaixo alguns posts sobre o Falando em Agile 2008:

Vitor Hugo Germano,
Daniel Wildt
André Faria Gomes
Fabricio Sousa
Inove
André Ferreira
Danilo Bardusco,
Guilherme Chapiewski
Antonio Carlos Silveira
Philip Calçado
Flickr do Antônio Carlos
Danilo Sato

Nós da Caelum agradecemos a todos os palestrantes, que tornaram o evento muito mais especial, e as empresas que patrocinaram e apoiaram o evento: Globo.com, Yahoo! Brasil, Borland, além da Heptagon, Sea Tecnologia, Locaweb, Scrum Alliance e ThoughtWorks. Vejo vocês
no Falando em Agile 2009, e aguardem a disponbilização de algumas palestras do evento!

Treinamento Certified ScrumMaster na Caelum

Por Guilherme Silveira em 20/08/08

FJ-16 Laboratório Swing Não é de hoje que nós, da Caelum, temos declarado o nosso comprometimento com Scrum. No começo de 2007 lançamos o primeiro treinamento de Scrum totalmente nacional, e este se mostrou um sucesso absoluto. Também em 2007 a Caelum adotou Scrum em seus projetos internos e externos, e começou a oferecer serviços de Scrum para seus clientes.

Na última semana tivemos a grata surpresa de receber a notícia da aprovação do Alexandre Magno, responsável pela unidade de Scrum da Caelum, no processo de Certified Scrum Trainer da Scrum Alliance. Ele é o primeiro e único brasileiro a possuir esse título. Com isso, a Caelum estará oferecendo os treinamentos Certified ScrumMaster para todo Brasil e América Latina. Isto é um grande passo para a comunidade brasileira!

Certified ScrumMaster

O treinamento Certified ScrumMaster é, sem dúvida, um treinamento de alta qualidade. Seu conteúdo programático é definido pela Scrum Alliance, e seu material é totalmente em português, elaborado de acordo com a realidade de nossas empresas e mercado. O Alexandre elaborou grandes novidades para este treinamento, como a visualização completa de um projeto real que utilizou Scrum, com a apresentação de todos seus artefatos (Documento de Visão, Product Backlog, Sprint Backlog, Plano de Releases, Impediments Backlog, Burndowns, etc), cerimônias, depoimentos, ou seja, um histórico completo deste projeto, que será de grande valia para os alunos que irão implantar Scrum em sua empresa. Além disso, neste treinamento será apresentando o Scrumland Game, uma versão mais extensa, completa, detalhada e divertida do consagrado Scrum 59 Game… é Scrum realmente na prática! Tópicos mais específicos como: Scrum of Scrums e Scrum em ambientes solo e offshore também são abordados.

Bom, o treinamento Certified ScrumMaster está na estrada, e já possui um extenso calendário cobrindo grande parte do território nacional.

Novidades: Caelum RJ, FalandoEmAgile 2008 e Treinamento JBoss Seam

Por Nico Steppat em 24/06/08

Algumas novidades da Caelum para o segundo semestre:

Caelum Rio de Janeiro

Dado o grande público de treinamento que já atendemos no Rio de Janeiro, e somando a isso o fato de dois de nossos atuais clientes de consultoria serem no Rio, estamos definitivamente estendendo nossos trabalhos para lá, com sede próxima à avenida Rio Branco.

Eu, Nico Steppat, pessoalmente, serei o responsável pelo início das operações da Caelum em território carioca, neste próximo semestre. Estou há pouco mais de cinco anos no Brasil desde que saí da Alemanha, sendo mais de dois anos na Caelum. Para mim, esse será mais um desafio: levar a qualidade da Caelum para o Rio de Janeiro, onde já me encontro.

Falando Em Agile 2008

Dado o sucesso do Falando em Java 2007 e do Falando em Java 2008, juntamento com o nosso envolvimento em metodologias ágeis, teremos em outubro o Falando Em Agile 2008! O evento contará com ninguém menos que David Anderson!

David AndersonDavid Anderson foi gerente e líder de excelentes equipes de software, entregando produtos de ponta desde 1991. Ele ajudou a fundar a APLN (Agile Project Leadership Network), uma organização sem fins lucrativos dedicada a encorajar uma melhor liderança e gestão no setor de TI, e é um palestrante e apresentador popular, autor de muitos artigos sobre gestão de engenharia de software, além de escritor e editor do popular blog Agile Management.

David entrou em cena no desenvolvimento ágil de software muito cedo, como membro original do time em Cingapura que criou a Feature Driven Development (FDD), um dos seis métodos ágeis originais. Baseado em sua experiência com a FDD na Sprint PCS, posteriormente escreveu o primeiro livro sobre a gestão do desenvolvimento ágil, “Agile Management for Software Engineering”, publicado em 2003. Como arquiteto de processo para a MSF for CMMI da Microsoft, ele se tornou versado na aplicação de técnicas ágeis ao CMMI do Software Engineering Institute (SEI) e estabeleceu um forte relacionamento profissional com pessoas-chave nessas comunidades. David é especialista em mudança cultural para a implantação instucionalizada e de longa duração de equipes de desenvolvimento Ágil e Lean (Enxuto) de software. Atualmente é um dos diretores da Modus Cooperandi.

O evento já tem também a presença confirmada do CSP Alexandre Magno, de Adail Retamal e de Guilherme Silveira. Muito em breve teremos mais informações, além da grade completa e inscrições.

FJ-34 - JBoss Seam

JBoss Seam Sem dúvida alguma o JBoss Seam é o framework Java EE que mais tem ganho atenção ultimamente. E isso não é sem razão: ele faz uma excelente ponte entre o EJB3 e o JSF, as duas principais e mais bem sucedidas especificações do Java EE da atualidade. Liderado por Gavin King, o mesmo criador do Hibernate, o JBoss Seam já é até uma cobiçada especificação: a JSR 299, WebBeans. Emmanuel Bernard, que esteve no evento Falando Em Java 2008, trabalha lado a lado com Gavin King desde o Hibernate 1 beta e nos atualizou com muitas informações durante sua estadia no Brasil e conversas na Caelum.

FJ 34 Jboss Seam Com o know how adquirido em diversas consultorias com JSF, EJB3, JBoss e Hibernate, criamos o treinamento FJ-34: Desenvolvimento para Web com o JBoss Seam. Neste treinamento, você vai conhecer a fundo os problemas que o Seam resolve ao integrar as duas grandes tecnologias do Java EE 5, passando pelos recursos facilitados pelo frameworks até o JBPM. Esperamos você lá!

atualizado: o evento Falando em Agile será dias 23 e 24 de outubro

Qualidade com Scrum

Por Edmilson Miyasaki em 02/06/08

Tive a oportunidade de palestrar juntamente com o Alexandre Magno no Falando em Java 2008. Um tema recorrente durante as discussões depois de palestras e workshops sobre Scrum é Qualidade.

Quando falamos sobre qualidade em software, surgem diversas dúvidas quanto ao que significa ter qualidade em um software: ter um código bem escrito? Testes unitários? Código que não apresente falhas? Boa performance no que se propõe a fazer? Documentação?

De acordo com a NBR 13596 (ISO/IEC 9126), existem algumas características que um software deve apresentar para ser considerado como um software de qualidade. Estas características são listadas na tabela a seguir:

Característica Descrição
Funcionalidade Satisfaz as necessidades?
Confiabilidade É imune a falhas?
Usabilidade É fácil de usar?
Eficiência É rápido e “enxuto”?
Manutenibilidade É fácil de modificar?
Portabilidade É fácil de usar em outro ambiente?

A maioria das características que determinam um software com qualidade referem-se mais a boas práticas de engenharia de software ou eficiência da plataforma tecnológica. Entretanto, Scrum, como framework para gerenciamento de projetos, também é capaz de oferecer qualidade no processo de desenvolvimento.

Em Scrum, conseguimos uma melhora na qualidade através de diversos pontos. Obter esta melhora na qualidade depende muito se Scrum está sendo bem implementado ou não.

Dentre estes pontos, podemos destacar:

  • Iterações
  • Remoção de impedimentos
  • Inspeção e adaptação
  • Autonomia
  • Times multifuncionais

Iterações

Qualidade em software também significa entregar para o cliente algo que lhe seja realmente útil, de acordo com suas necessidades.

Por ser uma framework ágil, Scrum trabalha com iterações, onde a cada iteração entregamos software, ou incrementos de software, potencialmente usável e de acordo com a necessidade do cliente. E, a cada nova iteração, temos “feedback” do que foi entregue e que utilizamos para melhorar o produto (sempre de acordo com a prioridade do cliente).

O “feedback” do cliente existiria de qualquer forma, seja apresentando o produto ao final de uma iteração, seja ao final de todo o ciclo de desenvolvimento (o que normalmente acarreta em alterações no código). Entretanto, se estas alterações forem feitas no final do projeto, isto também pode causar efeitos colaterais indesejados, ao passo que, fazê-las de forma antecipada, impede este tipo de problemas.

Através das Sprints, times Scrum estão sempre desenvolvendo algo que realmente tenha valor para o cliente.

Remoção de impedimentos

Remover qualquer tipo de impedimento durante a execução de um projeto é essencial não importa qual metodologia seja utilizada. Em Scrum, é esperado que estes problemas apareçam. Mas, o que é feito após resolver este impedimento, determina se um time está utilizando Scrum corretamente ou não.

Durante a execução de uma Sprint, é recomendável que a execução das tarefas seja feita item a item ao invés de cada membro executar tarefas de itens diferentes. Isso tem duas razões: a primeira é relacionada ao valor para o cliente. Para um cliente, um item somente tem valor caso tenha sido entregue completamente — algo que esteja funcionando 80% não lhe trará vantagem alguma. Além disso, executar um item completamente ajuda a manter o foco da equipe na meta e no item em específico. Desenvolvedores em geral tendem a ser mais orientados a tarefas ao invés de orientados a valor. Manter o foco na meta ajuda a aumentar a qualidade do item sendo desenvolvido.

A outra razão é em relação à forma como os problemas são resolvidos e como suas correspondentes soluções são utilizadas. A execução completa de um item representa um fluxo completo de execução e faz parte do processo utilizado no desenvolvimento. Neste caso, problemas que poderiam se tornar recorrentes podem ser solucionados imediatamente, permitindo que isso não se repita na execução dos próximos itens. Desta forma, estamos aprimorando o processo, o que também reflete na qualidade do produto.

Inspeção e adaptação

Ao final da execução de uma Sprint, há a Sprint Retrospective, uma das cerimônias de Scrum. Nela, revisamos a Sprint (inspeção) e determinamos o que foi bom e o que precisa ser melhorado (adaptação). As adaptações podem ser individuais ou coletivas, mas, de qualquer forma, elas garantem a melhora do processo e consequente otimização, o que traz diversos benefícios.

Com um processo mais enxuto e mais eficiente, podemos ter um software com mais qualidade.

Autonomia

Times em Scrum são auto-gerenciados, o que significa uma menor pressão sobre eles. Desta forma, cada um dos membros pode selecionar o que fará e terá o tempo necessário para fazê-lo com qualidade. Estudos mostram que, sob pressão de prazos exíguos, a primeira coisa a ser deixada de lado pelos desenvolvedores é a qualidade.

Além disso, através desta autonomia, os membros do time passam a ter uma melhor qualidade de vida, o que reflete em uma melhoria na qualidade como um todo. Isso porque passam a ter mais tempo e disposição para pesquisar uma melhor forma de abordar e executar uma tarefa. Em um ambiente onde Scrum tenha sido bem implantado, este aprimoramento pessoal é compartilhado com os outros membros, o que traz mais incremento na qualidade.

Times multifuncionais

Quando montamos os times, procuramos sempre montá-los com membros que tenham diferentes características ou atribuições. Por exemplo, ao invés de um time formado só por desenvolvedores ou só de analistas de requisitos, procuramos misturá-los e formar diversos times Scrum.

Isto porque a experiência de cada um é extremamente útil no planejamento das tarefas a serem executadas na Sprint. Entretanto, existe um conceito maior escondido por trás disto: qualidade desde o início.

Pude presenciar em diversas ocasiões a seguinte situação: empresas utilizando o modelo em cascata, faziam o levantamento de requisitos no início do projeto. Em seguida, arquitetos de sistema e especialistas no negócio modelavam as classes para atender a todos os requisitos levantados na etapa anterior. Depois (bem depois, por sinal), estes modelos eram passados para a equipe de desenvolvimento e o resultado era testado pela equipe de Q&A e homologação. No final do processo, isto era entregue à equipe de implantação.

Invariavelmente, o contato com o cliente era feito no início do projeto, onde este apresentava todos os requisitos possíveis e imagináveis para o produto. Embora saibamos que o cliente sabe o que precisa mas tenha somente uma vaga idéia do que quer, ele era obrigado a informar o que desejava que fosse desenvolvido, e por isso a quantidade de requisitos, algumas vezes desnecessários, era imensa.

Durante a modelagem, os analistas modelavam o que era necessário para a aplicação, muitas vezes deixando de lado alguns detalhes que poderiam facilitar o desenvolvimento ou ignorando outros detalhes que pudessem melhorar o acesso aos dados.

Os desenvolvedores, por sua vez, simplesmente executavam o que foi determinado pelos arquitetos e no prazo determinado pelo gerente de projeto.

Depois de devidamente codificado, o resultado era passado para a equipe de Q&A, que testava o que tinha sido produzido e retornava o resultado dos testes à equipe de desenvolvimento. Infelizmente, isto era feito invariavelmente aos lotes — os testadores eram obrigados a testarem diversos recursos de uma vez, muitas vezes impossibilitando testes com aspectos mais amplos.

Como tudo isso feito às pressas, em algumas situações, a equipe de implantação era informada com poucos dias de antecedência (e em uma situação, a equipe foi informada que tinha até o final da tarde para implantar um sistema). Com tão pouco prazo, muitas vezes a implantação era feita sem qualquer teste, simplesmente esperando que a sorte sorrisse para eles.

Note que os cinco parágrafos anteriores descreveram cada um dos estágios no desenvolvimento. E isto reflete como o desenvolvimento era feito — sem qualquer comunicação adicional entre cada uma das etapas que não fosse a documentação do sistema. É fácil descobrir o resultado disso.

Através de times multifuncionais, a cada Sprint temos a opinião de especialistas em diferentes áreas definindo o que será feito naquela Sprint. Enquanto não sabemos o que o cliente realmente quer como produto, sabemos o que é mais importante para ele, com estes especialistas definindo a melhor abordagem possível, levando em consideração os aspectos nos quais cada um é melhor. Assim, arquitetos podem começar definindo as classes levando em consideração a opinião de um especialista em banco de dados, de domínio, etc.

Utilizando o princípio de qualidade desde o início, o código tende a ser mais enxuto, mais adaptável, a ter mais performance. Como a interação com o usuário é constante, o produto estará sempre de acordo com a necessidade do usuário. E com a presença de um especialista em testes, cada tarefa executada já pode ser testada e eventualmente corrigida rapidamente.

E finalmente, um especialista em implantação já sabe antecipadamente o que deve testar e providenciar como ambiente de produção.

Conclusões

Existe uma beleza singular na simplicidade apresentada por Scrum. Entretanto, por trás desta simplicidade, existem conceitos que não devem ser ignorados, sob pena de obter somente parte dos benefícios de Scrum.

Um ScrumMaster deve estar sempre atento aos diversos sinais que o time apresenta, bem como motiva-los e desafia-los, sempre em busca constante do aprimoramento individual como seres humanos e o time como um todo. Além disso, buscar a melhoria contínua do processo permite que a qualidade passe a ser uma constante em futuros projetos de software.