quinta-feira, 18 de janeiro de 2018

Framework para desenvolvimento ágil Scrum

Framework Scrum - Fonte:Scrum.org


Scrum é um framework de desenvolvimento de tarefas complexas, de forma adaptativa e focada em melhoria contínua do produto e em aumentar o seu valor. Ele foi criado em 1990 por Ken Schwaber e Jeff Sutherland. Sua primeira definição formal tornou-se pública em 1995, durante a conferência de OOPSLA.
Ken Schwaber (à esquerda) e Jseff Sutherland (à direita).

Ele foi criado para ser leve, simples de entender e difícil de dominar. O Scrum é um framework para processos e pode muito bem ser utilizado no dia a dia de uma equipe de desenvolvimento. Ele não é um processo, técnica ou uma metodologia definitiva, mas sim um framework onde você pode empregar vários processos e técnicas afim de torná-lo mais robusto e adaptado a realidade do seu projeto.

Jogada Scrum do Rugby

Seu nome vem de uma jogada executada em uma partida de Rugby. Essa jogada é utilizada para dar o reinício do jogo, que acontece geralmente após a ocorrência de uma penalidade. Cerca de oito jogadores se unem e empurram outros oito jogadores do time adversário, o objetivo é avançar o máximo possível para marcar pontos.

A filosofia do Scrum está fundada sobre o processo de controle empírico, isto é, na maioria das vezes evitamos o uso de planejamentos detalhados por métricas abusivas para dar lugar ao "colocar a mão na massa" só depois tirar conclusões acerca do que fora feito. O empirismo afirma que o conhecimento vem da experiência e da tomada de decisões baseadas naquilo que sabemos. O Scrum aproveita-se disso empregando uma abordagem incremental e iterativa para otimizar a predição de riscos a media que o processo evolui. 


Pilares do processo Scrum - Fonte: Scrum.org.

Três pilares sustentam a implementação do processo de controle empírico presente no Scrum. São eles: transparência, inspeção e adaptação. 
  • A transparência torna todas as informações acerca do projeto claras e visíveis a todos os envolvidos. Isto pode ser feito através do uso de dicionários para termos e siglas muito utilizadas no processo ou compartilhar uma definição comum de "tarefa finalizada". 
  • A inspeção dos artefatos do Scrum deve ser feita por todos, com o objetivo de avançar até a meta da entrega e então observar se estão surgindo desvios indesejáveis. Não é aconselhável que as inspeções sejam executadas a todo o momento. A melhor forma é que sejam feitas por inspetores experientes e de forma que não atrapalhem o desenvolvimento do time.
  • A adaptação deve ocorrer quando é notado um desvio da meta, geralmente apontado pela inspeção. Caso um desvio ocorra, rapidamente ele precisa ser ajustado para minimizar problemas futuros. O Scrum fornece alguns eventos para adaptação como o Sprint Review e Sprint Retrospective.
Valores do Scrum - Fonte: Scrum.org

Com os pilares sobre o processo, torna-se um terreno fértil para dar origem aos cinco valores que devem ser empregados ao Time Scrum. O Time Scrum poem estes valores em prática a medida que aprendem e exploram os papéis, eventos e artefatos do Scrum. Os cinco valores são:
  • Coragem: o Time Scrum deve ter a coragem de fazer o que é certo e não ter medo de errar, afinal, é isto que o empirismo prega, o erro deve ser encarado como um ponto para se aperfeiçoar e corrigir.
  • Foco: todo o time deve estar focado em uma unica Sprint e um conjunto de metas fornecidos pelo Sprint Backlog.
  • Comprometimento: as pessoas se comprometem a alcançar as metas do Time Scrum.
  • Respeito: o time deve ser capaz de respeitar a cada membro independente de suas habilidades, papéis e experiências.
  • Abertura: O Time Scrum e os seus stakeholders devem estar abertos a fornecerem as informações necessárias ao trabalho, como também, fazer parte do dia a dia de desenvolvimento.
Para concluir, vimos a definição do framework Scrum, que é muito utilizado para o gerenciamento de processos de desenvolvimento de software. Vimos que o Scrum trabalha sobre o modelo empírico de processo, onde as decisões são melhor tomadas a medida que vão solucionando os problemas. Abordei os três pilares do Scrum que são a transparência, Inspeção e adaptação. Como também conversamos sobre os cinco valores que o Time Scrum deve desenvolver durante o processo: Coragem, foco, comprometimento, respeito e abertura. Com isso espero ter dado uma visão introdutória ao Scrum de forma que fique bem clara sobre os seus objetivos e o porque este framework é tão utilizado no mundo de desenvolvimento de software.


Referências:
  •  http://www.fabiocruz.com.br/valores-scrum/, acessado em 08/01/2018. 
  •  Ken Schwaber and Jeff Sutherland, The Scrum Guide, 2017, Creative Commons. 
  •  https://www.scrum.org/, acessado em 27/12/2017 
  •  PRESSMAN, Roger S. Engenharia de Software, Oitava Edição. Editora MCGrawHill: Porto Alegre, 2016. 

quarta-feira, 17 de janeiro de 2018

Kanban vs Scrum

Figure 1 -  Kanban e Scrum

Scrum e Kanban são ferramentas de processo que, em certa medida, te ajudam a trabalhar de maneira mais eficaz, dizendo a você o que fazer. Java também é uma ferramenta, ela lhe fornece uma maneira mais simples de programa. 

Como quaisquer ferramentas, Scrum e Kanban não são perfeitos nem tampouco completos. Eles não lhe dizem tudo o que você precisa fazer, eles apenas lhes oferecem algumas restrições e orientações. Por exemplo, Scrum lhe restringe a ter iterações de tempo fixo e equipes multifuncionais, enquanto que Kanban lhe restringe a utilizar quadros visíveis e limitar o tamanho de suas linhas de produção. 

Podemos comparar ferramentas analisando quantas regras elas oferecem. Prescritivo significa “mais regras a seguir” e adaptativo significa “menos regras a seguir”. Prescritivo 100% significa que você não precisa usar seu cérebro, já há regra para tudo. Adaptativo 100% significa faça qualquer coisa, não existe nenhum tipo de regras ou restrições. Como podemos ver, os dois extremos da escala acabam se tornando ridículos.

Scrum e Kanban são ambos altamente adaptativos, mas falando relativamente, Scrum é mais prescritivo que Kanban. Scrum lhe dá mais restrições, por conta disso, deixa menos opções abertas. Por exemplo, o Scrum prescreve o uso de iterações de duração fixa, o Kanban não.

Kanban deixa quase tudo em aberto. As únicas restrições são: Visualize Seu Fluxo de Trabalho e Limite Suas Atividades em Andamento. Apenas a alguns centímetros de Faça Qualquer Coisa, mas ainda assim surpreendentemente poderoso.

Scrum ou Kanban?

Assim como o Scrum, o Kanban é centrado no valor entregado: as pessoas da equipe têm uma certa autonomia sobre suas responsabilidades, e essencialmente eles têm a mesma missão, que é continuamente eliminar desperdícios e remover obstáculos.

Kanban e Scrum compartilham alguns dos mesmos conceitos, mas têm diferentes abordagens. Eles não devem ser confundidos um com o outro. O quadro abaixo separa algumas diferenças que eles possuem.

Figure 1 - Diferenças Scrum x Kanban
O Kanban e o Scrum não são necessariamente relacionados para serem comparados, e nem são excludentes. Seus objetivos são complementares, e para uma melhor otimização muitas vezes eles são adotados juntos.

Algumas equipes misturaram os ideais do Kanban e scrum para o "scrumban." Eles tomam os sprints de extensão fixa e as funções a partir do scrum, e o foco nos limites de trabalho em progresso e tempo de ciclo a partir do Kanban. Porém, para as equipes que acabaram de começar com o agile, é altamente recomendável escolher uma metodologia ou outra e usá-la por um tempo. Você sempre pode iniciar aquela que for ideal mais tarde.

Referências:

https://www.infoq.com/br/minibooks/kanban-scrum-minibook#minibookDownload
https://br.atlassian.com/agile/kanban
http://blog.aspercom.com.br/2014/09/05/scrum-kanban-por-onde-comecar/

Kanban: Ferramentas Online para a gestão de projetos

Figure 1 - Quadro Virtual

Kanban, como foi explicado em um poste anterior, é uma metodologia de gestão de trabalho focada no conceito de “just in time” – bem a tempo – onde procurasse priorizar tarefas e organizar a fluxo de trabalho de uma forma mais produtiva. Ele é tradicionalmente feito com o uso com quadros físicos e blocos post-it. Para muitos, o quadro física ainda é mais atraente por servir como um lembrete constante a todos do trabalho que está sendo feito e de seu papel na equipe.

Embora os quadros físicos sejam populares entre algumas equipes, os quadros virtuais são um recurso crucial em qualquer ferramenta de desenvolvimento ágil de software para sua rastreabilidade, colaboração mais fácil e acessibilidade de vários locais.

Independentemente de o quadro de uma equipe ser físico ou digital, sua função é assegurar que o trabalho da equipe seja visualizado, que seu fluxo de trabalho seja padronizado e que todos os bloqueadores e dependências sejam imediatamente identificados e resolvidos

Abaixo listamos algumas principais ferramentas digitais que se baseiam no sistema Kanban. Alguns podem ser bem conhecidas por vocês, outras nem tanto, porém vale a pena conferir outras opções e analisar qual sistema é mais indicado para a sua equipe.

Backlogged

Figure 2 - Backlogged
O Backlogged oferece um sistema Kanban online para gestão de projetos especialmente desenhado para desenvolvedores freelancer e pequenas equipes. Cada projeto recebe um quadro único, onde cartões representam tarefas que podem ser incluídas e movimentadas livremente.

O sistema Kanban do Backlogged conta com quatro colunas: “Pendente”, “Aguardando”, “Executando” e “Concluído”. Cada tarefa – ou história – é representada por uma etiqueta.
Todas as tarefas que ainda não foram iniciadas ficam agrupadas na primeira coluna. As tarefas que estão congeladas ficam na próxima. As que estão sendo trabalhadas na coluna executando e as finalizadas na última.

O sistema Kanban online do Backlogged também permite cooperar com outros membros da equipe. As tarefas possuem estimativas de data, horas de produção e podem ser associadas a pontos de história, para quem usa a metodologia SCRUM. É um dos poucos sistemas Kanban que permite uma fácil associação de pontos sem forçar uma metodologia específica.

Figure 3 - Estimar Tempo de Produção
Para quem quer simplificar, a ferramenta ainda ajuda na estimativa de tempo de produção utilizando um contador de esforço inspirado nas metodologia ágeis, com 6 estimativas pré-programadas que vão de 30 minutos a 16 horas. No modo avançado, as horas e pontos são de inserção livre.
O mais legal do Backlogged é que ele se adequa à forma como você trabalha. E mesmo quem é iniciante no sistema Kanban consegue se entender com a interface amigável e intuitiva.

Preço: R$ 39/mês até 3 usuários.

Vantagens:
  • Intuitivo e com um layout de fácil compreensão;
  • Integração para equipes com fácil visualização das próximas tarefas;
  • Integração entre etapas do projeto e gestão de orçamento;
  • Único sistema Kanban online que possui opção de atribuir pontos nas tarefas para uso com metodologias ágeis;
  • Layout responsivo funciona bem em celulares e tablets.
Limitações:
  • Não é possível adicionar novas colunas ou regras;
  • Não está disponível um aplicativo mobile, apesar de ser acessível pelo celular.

Trello

Figure 4 - Trello
O Trello tem como proposta “organizar tudo”. É um sistema Kanban online que não é específico para negócios e busca ajudar pessoas a organizar melhor, desde o projeto da escola até a reforma da casa.

O sistema Kanban do Trello vem com algumas colunas de exemplo e permite criar novas conforme a faça sentido em cada projeto. É preciso um pouco de criatividade mas, quando bem usada, é uma ferramenta muito útil.

As tarefas, os cartões do sistema Kanban, ficam dispostas nas colunas e podem ser movidas livremente. Cada tarefa pode estar associada a certos participantes e ter identificações por cores.

O layout é agradável e funciona bem em telas grandes. O Trello ainda possui aplicativos para Android e iOS para acompanhar seu sistema Kanban de qualquer lugar.

Preço: Gratuito com versão paga disponível por U$5,00 por usuário/mês e permite maior customização.

Vantagens:
  • Flexibilidade e layout agradável;
  • Associação de arquivos com cartões.
Limitações:
  • Não é focado em negócios e não permite uma visualização do esforço de tarefas;
  • Não permite adicionar regras para as colunas.

KanbanFlow

Figure 5 - KanbanFlow

O KanbanFlow é um software Kanban online para profissionais que permite maior flexibilidade na organização das colunas, tarefas e regras de fluxo de cartões.

As tarefas podem receber cores e estar associadas a participantes de cada projeto. Os participantes podem marcar que estão trabalhando em uma tarefa e acompanhar seu tempo gasto com um cronômetro embutido.

A interface é razoavelmente intuitiva mas peca um pouco em usabilidade. As vezes se mostra um pouco engessada e é difícil localizar algumas funções. Entretanto, é muito completo em termos de personalização.

Preço: R$ 15,00 por usuário/mês com versão gratuita disponível.

Vantagens:
  • Implementação de restrições e regras nas colunas;
  • Cronômetro de tarefas.
Limitações:
  • Visual engessado e nem sempre muito intuitivo;
  • A visualização é prejudicada quando há muitas tarefas ou participantes.

Referências:

http://backlogged.com.br
https://trello.com
https://kanbanflow.com

Industrial XP




No final da década de 1990, três visionários de software chamado Kent Beck, Ward Cunningham e Ron Jeffries foram pioneiros da Extreme Programming (XP), um processo de software ágil que mudou a forma como o mundo planeja, testa, constrói e entrega software.
Desde então o desenvolvimento ágil vem se tornando uma alternativa viável para o uso em equipes de desenvolvimento de diversos tamanhos e tipos de organizações, logo a lógica industrial e outros líderes de XP e Ag    ile evoluíram para XP em diversas indústrias, e essa evolução trouxe a criação de uma nova vertente, o XP industrial surgiu como resultado. É nada mais que o XP inserido no DNA de uma organização.
Segundo Joshua Kerievsky , pioneiro no desenvolvimento do XP, “A IXP é uma evolução orgânica da XP. Ela é imbuída do mesmo espirito minimalista, centrado no cliente e orientado a testes da XP. Difere da XP original principalmente por sua maior inclusão do gerenciamento, por seu papel expandido para os clientes e por suas práticas técnicas atualizadas ”.
Para que o IXP funcione com sucesso em projetos de larga escala em grandes organizações, são necessárias a inclusão de seis novas práticas para auxiliar no funcionamento do projeto.
  • Avaliação imediata: a equipe IXP verifica se todos os membros da comunidade de projeto estão a bordo, tem o ambiente correto estabelecido e entendem os níveis de habilidade envolvidos.
  • Comunidade de projeto: a equipe IXP determina se as pessoas certas com as habilidades certas e o treinamento corretos, estão prontos para o projeto.
  • Mapeamento do projeto: a própria equipe IXP avalia o projeto para determinar se ele se justifica em termos de negócios e se vai ultrapassar as metas e objetivos globais da organização.
  • Gerenciamento orientado a testes: a equipe EXP estabelece uma serie de “destinos” mensuráveis que avaliam o progresso até a data e, então, define mecanismos para determinar se estes foram atingidos ou não.
  • Retrospectivas: uma equipe IXP conduz uma revisa técnica especializada após a entrega de um incremento de software. Denominada retrospectiva, a revisão examina “problemas, eventos e lições aprendidas” ao longo do processo de incremento de software e/ou do desenvolvimento da versão completa do software.
  • Aprendizagem continua: a equipe IXP é estimulada a aprender novos métodos e técnicas que possam levar a um produto de qualidade mais alta.


O IXP também modifica várias práticas XP existentes e redefine certas funções e responsabilidades para torna-las mais receptivas em projetos importantes de grandes organizações.

Fontes:
PRESSMAN, Roger S. Engenharia de Software, Oitava Edição. Editora MCGrawHill: Porto Alegre, 2016.
http://industrialxp.org/