Tag Archives: Scrum

Professional Scrum Developer Java

Muito tem se falado de Scrum para gestão de projetos de software, de forma que a maioria das empresas estão buscando adotar este framework. Há graus diferentes de adoção no mercado mas todos eles precisam de profissionais qualificados para ajudá-los na sua trajetória.rutoreQuando se adota Scrum em um projeto de software, nunca podemos negligenciar as práticas de engenharia de software, necessárias para assegurar a qualidade e a produtividade da equipe, assim como reduzir o custo de manutenção do software produzido. Essas práticas não são tão difundidas quanto às práticas de gestão do Scrum, mesmo quando todas as empresas que usam Scrum para software devem utilizá-las.

Diante disso, a Crafters traz o curso de Professional Scrum Developer para o Brasil e América Latina. Um curso oficial da Scrum.org, entidade mantida pelo co-criador do Scrum, Ken Schwaber e montado especificamente para a plataforma Java. Este curso oferece ao participante o conhecimento das práticas de engenharia recomendadas pela comunidade Scrum de todo o mundo, baseado na experiência e vivência de seus instrutores e criadores. Os alunos aprenderão:

Read more →

Agile e Ficção Científica

Já faz algum tempo que não escrevo posts no blog, mas espero neste ano de 2011 escrever bem mais… Começando com um que já a um tempinho era pra eu blogar, sobre o módulo “Implantando Scrum em equipes Ágeis” da Academia do Agile.

Foram dados dois títulos: “2500 – no limite da coragem” e “Os metabarões”. A ideia inicial dada pelo @wrsantos era fazer um gibi durante as dinâmicas do módulo, utilizando os conceitos do Scrum, ou seja, havia um “cliente” e os “desenvolvedores” deveriam fazer entregas rápidas e contínuas através de sprints. O desafio principal era conseguir produzir um gibi coerente e com início meio e fim dentro de um time-box curto. Isso implica que os times deveriam trabalhar no que trazia mais resultado antes, obrigando-os a ser mais objetivos e focados. Não é fácil fazer isso e a maioria dos times no mundo real pecam exatamente nesse aspecto.

Em um ambiente totalmente diferente, onde os times eram auto gerenciáveis e as pessoas de negócio e os desenvolvedores trabalhavam juntos, o resultado foi bem legal, vejam abaixo os dois gibis que foram feitos (as cores ficaram por minha conta):

2500 – O Limite da Coragem:


A Guerra dos Metabarões:

Read more →

O que vem depois do Agile?

Após uma aula entusiasmada na Academia do Agile sobre liderança e coaching, cheguei em casa e me deparei com um tweet que apontava para um post do Dhanji falando sobre como eles tem experimentado com agile no Google. No post ele descreve algo que ele chama de “Cowboy Methodology”. Ele também afirma que a predominância no Google é a ausência de metodologias.

Dhanji afirma:

There are exceptions of course, many Google teams use various degrees of XP, Scrum, or something else entirely. However, these are few and far between in my experience. The lack of methodology predominates. This is not to say that software does not get written on time, nor is it to say that good code is not produced but the process under which it is, is largely non-existent.

Nesse caso, o que podemos dizer sobre a necessidade real de utilizar agile ou não em um projeto? Vi esse mesmo questionamento em tweets de pessoas que haviam acabado de ler o artigo.

Minha impressão é que muitas pessoas ainda acham que basta adotar algumas práticas de engenharia e pronto. Estamos usando agile. Seguir uma receita que contém várias práticas não determina que você está usando Agile ou não. Utilizar Scrum não quer dizer que sua empresa é de fato ágil. Ultimamente, tenho ouvido frases como: “Nós usamos Scrum na minha empresa, mas não posso dizer que somos ágeis de fato. ”

Isso ocorre pelo simples fato de que, mesmo algo simples como Scrum pode ser “camuflado” para satisfazer uma cultura rígida. Tem faltando cultura real nas empresas e isso minimiza em muito os efeitos do uso do Scrum, XP ou qualquer outra metodologia. A cultura é a essência da agilidade e não pode ser substituída.

O meu entendimento é que Scrum, XP e qualquer outra metodologia é muito útil no início. Serve como um impulso inicial, que revelará onde e como podemos corrigir nossa postura e como podemos buscar resultados melhores. No entanto é preciso muito cuidado e atenção para que, ao longo do caminho, identifiquemos quais são as mudanças culturais necessárias para que a agilidade possa de fato emergir.

Uma vez que essa cultura ágil esteja consolidada, aí podemos partir em busca de um processo único, adaptado e adequado à nossa realidade. Acredito que seja isso que esteja acontecendo com o Google. Vários dos princípios que compõe a agilidade já fazem parte do mind-set dos Googlers. Escolher e participar da formação das pessoas, faz com que esse tipo de possibilidade exista dentro do Google. Não é necessário seguir algo prescrito, quando temos maturidade suficiente para decidirmos o nosso próprio caminho. Nisso consiste a agilidade.

Considerando que o mercado enxerga “Agile” como um substantivo que descreve um conjunto de metodologias que apesar de empíricas são prescritas de forma generalizada sem considerações dos contextos em que serão aplicadas. Dessa forma posso seguramente afirmar que o que vem depois do “Agile” é a verdadeira agilidade. A diferença é sutil e, por isso, é preciso que validemos constantemente nossas decisões, práticas e processos, segundo os princípios e valores nos quais acreditamos.

E pra você? O que vem depois do Agile? Compartilhe sua opinião.

Read more →

Um case de implantação de Agile

Uma empresa não se faz somente de capital inicial e nem apenas de conhecimento técnico. Uma empresa é composta por pessoas. Cada pessoa conta com crenças, limitações e experiências que contribuem para a formação de seu caráter e perfil profissional.

Na Crafters nós buscamos reunir um grupo de pessoas que tenham interesses comuns, crenças compatíveis e muita experiência real. Não nos interessa apenas buscar currículos impressionantes com muitos números. Queremos pessoas reais, que conhecemos e que estejam envolvidas com as comunidades das quais participamos. Isso nos permite manter um grau de expertise e alinhamento raro no mercado.

Proposta Inicial da Wareline

Há mais ou menos 2 anos atrás, uma empresa chamada Wareline nos procurou para que ajudássemos a migrar seu ambiente de desenvolvimento para a plataforma Java com foco na web. Apesar de continuar no suporte e evolução da aplicação desktop, eles queriam desenvolver um produto inovador. Algo novo e que sobrepusesse à concorrência. Queriam algo muito além do que já tinham feito.

Decidiram assim que iriam desenvolver seu principal produto, um ERP hospitalar, mas agora, voltado para o ambiente Web. Dentre as diversas tecnologias, escolheram a plataforma Java. Propusemos a utilização da linguagem Groovy e do framework Grails, visando assim minimizar a curva de aprendizado.

Considerando que boa parte dos desenvolvedores não conheciam a nova tecnologia, havia o risco de atrasos e erros nas estimativas de forma que um processo tradicional de desenvolvimento só prejudicaria o  projeto. Não havia margem para erros e desperdícios. O projeto precisava ser impecável.

Nesse contexto, sugeri a adoção de algumas práticas de engenharia mais atuais. Práticas que surgiram conforme a necessidade do cliente e não porque faziam parte de alguma metodologia, mas porque agregavam valor naquele momento.

O processo

Iniciou-se então a definição de um processo de desenvolvimento de software customizado e adequado para a Wareline. Muitos dos envolvidos nem sabiam que era um processo baseado em premissas do Agile. Só ficaram sabendo muito tempo depois. Isso porque conseguimos chamar a atenção apenas para aquilo que era importante. Desenvolver software que funciona.

Neste processo haviam práticas de Scrum, Feature Driven Development, Extreme Programming, Domain Driven Design, Behavior Driven Development e algumas outras coisas. O objetivo era que o processo minimizasse os riscos e aumentasse a visibilidade sobre o andamento do projeto. Isso foi alcançado.

O levantamento de requisitos era feito utilizando conceitos do BDD. Utilizando user stories que se transformavam em especificação executáveis dentro do framework. Havia ainda um quadro kanban que determinava um processo puxado de desenvolvimento. O uso de iterações e algumas das cerimonias do Scrum, como Daily Scrum, Review e Retrospectiva também são utilizados.

Do FDD, trouxemos o conceito de inspeção de código, muito útil pra alinhamento e nivelamento do código produzido, já que nem todos eram muito acostumados com a tecnologia. Para que a inspeção tivesse um efeito mais adequado, utilizado uma definição de pronto, ou DoD (Definition of Done). Consistia num checklist que determinava quando uma funcionalidade poderia ser considerada pronta.

Problemas no andar da carruagem

Com a aplicação da inspeção, a equipe começou a perder muito tempo inspecionando o que estava pronto. O tempo de inspeção consumia várias horas da equipe, pois após a inspeção, havia muita discussão sobre qual seria a forma correta de se fazer algo. Isso começou a prejudicar a velocidade da equipe.

Para resolver esse problema, começamos a utilizar algumas práticas. Uma delas foi a programação em par. Agora os profissionais deveriam programar com um co-piloto ao lado. Além disso, os pares deveriam ser trocados a cada período de 4 horas. Isso garantia mais alinhamento sobre o que deveria ser feito e sobre qual era a melhor solução para cada funcionalidade.

Mesmo com a programação em par, acontecia de alguns pares caminharem em direções diferentes do que os outros achavam. Isso refletia um problema no entendimento do domain que estava sendo tratado. Iniciamos então o uso de diagramas de fluxo de informações similares aos propostos pelo Domain Driven Design. Esses diagramas deveriam ser elaborados de forma colaborativa entre os membros da equipe, buscando o alinhamento no que diz respeito ao que o Domain realmente é. Essas duas práticas fizeram total diferença no projeto.

Adaptação acima de tudo

Implementar agile não é algo que requer experiência e estudo. Não basta termos uma certificação e muito menos basta ler o Scrum Guide (apesar de necessário). É preciso vivência. Os profissionais da Crafters tem vivido de agile há um bom tempo já. Participaram de implementações grandes e pequenas de processos. Isso é fundamental.

Minha primeira implantação de agile aconteceu por volta de 2005 em um projeto da IBM e foi totalmente baseado em XP. Antes disso eu já estava atento às mudanças de paradigma propostas pelo Agile e participava de alguns projetos que já utilizavam desse paradigma.

Com essa experiência já vi muitos projetos irem por água abaixo ao tentar implantar agile. Alguns porque focaram muito em práticas de engenharia e esqueceram da gestão. Outros fizeram o oposto, focaram em gestão e esqueceram da engenharia. É preciso ter equilíbrio. Não basta seguir as regras “by the book”, é preciso se adaptar muito rápido e, a adaptação já começa a partir da concepção do processo. Só assim para termos sucesso em um ambiente tão complexo quando esse do desenvolvimento de software.

Read more →