2018.2-NaturalSearch

Para propósitos de arquitetura microserviços utilizaremos um segundo repositório aqui: https://github.com/NaturalSearch/NaturalSearch_visualization

View project on GitHub

Definição da Metodologia

Introdução

Para a realização do projeto de forma organizada a equipe adotou uma metodologia de trabalho Ágil que mescla características de outras metodologias consolidadas, que são: Scrum, XP e Kanban.

Scrum

É a metodologia que abrange a maioria dos ritos estabelecidos pela equipe, oferenco ao time práticas como a adoção de Sprints para delimitar os incrementos realizados pela equipe e o estabelecimento de dos papéis de PO e Scrum Master.

EXtreme Programming (XP)

Metodologia que agrega à equipe a prática de Pair Programming.

Kanban

A equipe optou pela utilização dessa metodologia para visualização dos fluxos de trabalho da equipe ao longo de uma sprint, de forma a separar as atividas de To Do(A Fazer), Doing(Fazendo) e Done(Feito). Para utilizar, na prática, a equipe dispõe da extensão ZenHub do próprio GitHub.

Papéis da Equipe

Para que a equipe garanta um bom gerenciamento do projeto e alcance o objetivo de entregar o produto de forma satisfatória alguns papéis específicos foram definidos para os membros do time.

Product Owner (PO)

Possui as seguintes atribuições dentro do projeto:

  • Definir o Backlog do Produto e garantir que seja visível para todos os membros do time.
  • Definir os itens com maior valor para o cliente e explicitá-los ao time.
  • Vender o produto desenvolvido.
  • Possuir visão de negócio.
  • Negociar com o time e o cliente as possibilidades de backlog do produto.
  • Definir o Canvas do produto.

Scrum Master

Tem como responsabilidades na equipe:

  • Garantir que a equipe aprenda, compreenda e siga os valores e práticas do Scrum.
  • Definir o Backlog da Sprint de acordo com as prioridades definidas pelo PO.
  • Garantir a compreensão do itens do Backlog da Sprint.
  • Gerenciar as Daily Meetings.
  • Gerenciar a Revisão da Sprint.
  • Gerenciar a Retrospectiva da Sprint.
  • Remover impedimentos para o bom trabalho da equipe.
  • Documentar cada Sprint.
  • Definir e analisar métricas e indicadores para garantir o desempenho do time a cada Sprint.

DevOps

Possui como deveres:

  • Garantir a integração contínua.
  • Garantir o deploy contínuo.
  • Automatizar o ambiente de desenvolvimento utilizado pelos membros da equipe.
  • Gerenciar os ambientes de desenvolvimento, homologação e produção.
  • Organizar o pipelone do produto.

Arquiteto

Possui as seguintes atribuições:

  • Determinar a arquitetura que será utilizada para o desenvolvimento do produto.
  • Garantir que a equipe de desenvolvimento siga a arquitetura definida.

Desenvolvedores

Os Desenvoldedores da equipe possuem as responsabilidades de:

  • Desenvolver os produto de acordo com o Backlog definido a cada Sprint.
  • Seguir os valores e práticas do Scrum.

Ritos da Equipe

Os ritos são as práticas adotadas pela equipe para a execução do projeto de acordo com a metodologia definida. A seguir, é possível visualizar os ritos estabelecidos pela equipe do NaturalSearch com suas respectivas descrições e tempo de execução, caso exista.

Sprint

A sprint é o tempo definido para a realização de determinadas atividades pré-definidas que agregam valor ao produto em desenvolvimento.

Objetivo(s):

  • Realizar microincrementos ao produto de acordo com o planejamento.

Time Box:

  • Segunda à Sábado (6 dias)

Planejamento da Sprint

  • O planejamento é uma reunião realizado antes de cada sprint e é guiada pelo Scrum Master.

Objetivo(s):

  • Definir o Backlog da sprint de acordo com as prioridades definidas pelo PO.
  • Estimar o esforço de cada item do backlog da sprint realizando o planning poker.
  • Determinar a organização da equipe para garantir a entrega dos itens definidos para a sprint que se inicia.

Time Box:

  • aos sábados durando aproximadamente 1 hora.

Daily Meeting

É uma reunião realizada diariamente entre todo o time Scrum durante uma sprint.

Objetivo(s):

  • Garantir a comunicação da equipe, de modo a manter todos os membros informados sobre as atividades sendo realizadas por cada mebro do time.
  • Responder a três perguntas básicas:
    • O que fez no dia anterior?
    • O que fará durante o dia de hoje?
    • Há algum impedimento para que possa realizar as atividades da sprint?

Time Box:

  • reuniões presenciais:
    • terças e quintas com início as 15:45.
  • reuniões online:
    • segunda, quarta e sexta via hangouts às 20:30.

Duração:

  • Aproximadamente 15 minutos.

Pair Programming

Prática utilizada para a divisão do time em duplas de trabalho.

Objetivo(s):

  • Garantir a passagem de conhecimento entre os membros do time.
  • Minimizar a ocorrência de erros durante o desenvolvimento do produto.

Revisão da Sprint

Reunião realizada ao final de cada sprint.

Objetivo(s):

  • Revisar o que foi entregue do Backlog da Sprint.
  • Verificar se houve débito do Backlog da Sprint.
  • Idenficar possíveis problemas no Backlog da Sprint.

Time Box:

  • aos sábados durando aproximadamente 1 hora.

Retrospectiva da Sprint

Reunião realizada ao final de cada sprint.

Objetivo(s):

  • Avaliar a Sprint do ponto de vista metodológico e de relacionamento interpessoal da equipe.
  • Identificar problemas diversos, como: comunicação, forma de trabalho, etc.
  • Propor melhorias para os problemas identificados.

Time Box:

  • aos sábados durando aproximadamente 1 hora.