Após mais de dois anos de trabalho em uma estrutura de departamento de desenvolvimento altamente isolada, "lobo solitário", estamos adotando o Agile SCRUM. Ótimo. Eu gosto de ágil; como desenvolvedor, ele mantém você concentrado, ocupado e produtivo, sem que inúmeras partes interessadas empurram projetos após projetos, com a expectativa de que todos sejam feitos ontem.
Há, no entanto, um aspecto de mudar para o SCRUM versus o nosso "modelo" atual, que acho que as pessoas fora do Desenvolvimento não vão gostar nem um pouco. Essa é a capacidade atual deles de nos fazer pequenas mudanças "enquanto você espera". Uma grande parte do nosso desenvolvimento é apenas para consumo interno, e estamos todos no mesmo prédio. Por isso, é prática comum há anos que um líder ou gerente de departamento em outro lugar chegue ao "proprietário da base de código" de um aplicativo específico e peça coisas pequenas (às vezes não tão pequenas, mas somos muito bons em não assumir três) projetos semanais baseados nesses "drive-bys"). Até nosso chefe às vezes transmite as coisas trazidas a ele dessa maneira. Muitas vezes, se estivermos trabalhando na base de código em questão no momento, podemos simplesmente exibir o arquivo de origem,
Com uma metodologia básica do Agile SCRUM, esses ajustes seriam registrados como defeitos (não atendemos a um requisito especificado em uma matéria anteriormente consumida) ou novas pequenas histórias (atendemos a todos os requisitos declarados, mas esses requisitos eram incompletos, vagos ou incorretos , ou eles foram alterados após a entrega quando os usuários viram os novos recursos). De qualquer maneira, a grande maioria seria um ponteiros na maioria, se não zero, e de prioridade relativamente baixa (o sistema é utilizável em seu estado atual, mas seria assim muito mais frio se ...), tornando-os pouco provável que seja trouxe um sprint ao trabalhar a lista pendente de cima para baixo.
Essa possibilidade foi levantada em uma reunião de desenvolvimento como uma fonte de oposição ativa ao nosso processo Agile por outros departamentos, que o considerariam menos "ágil" do que nossa capacidade atual de fazer pequenos ajustes, mediante solicitação. É uma preocupação válida IMO; as partes interessadas por trás do OP nem sempre concordam com o que é mais importante, porque nem todas têm o mesmo ponto de vista; no entanto, normalmente são apenas os gerentes que tomam a decisão final e, portanto, seu viés é o que mostra na lista de pendências do produto.
Foi então proposta uma solução, que foi provisoriamente chamada de "jarra de doces" (outro termo descartado foi "molheira"). Pequenos ajustes solicitados pelos "pequenos rapazes" nos vários departamentos, que não são defeitos em uma história existente, estimados por consenso ou aclamação dentro da equipe, levam menos da metade de um dia do desenvolvedor, e isso teria um impacto imediato, significativo e positivo na experiência do usuário, na opinião do usuário final, é colocado em uma lista paralelamente ao backlog principal. Eles seriam identificados como "histórias", mas seriam mantidos separados do backlog principal de histórias "grandes" sujeitas a priorização. Se, a qualquer momento durante o progresso normal de um sprint, estivermos trabalhando em uma área do sistema na qual um desses ajustes pode ser feito, Tornando o ajuste trivial, podemos introduzi-lo no sprint e codificá-lo ao longo da história maior. Fazendo issonão deve comprometer a conclusão de uma história maior ou qualquer outro trabalho comprometido. O PO também teria acesso a essa lista e, se eles estivessem trabalhando em uma história de usuário futura, abordando o recurso básico que envolve o ajuste, eles poderiam dobrá-la na história como um requisito e, em seguida, atenderíamos ao requisito como qualquer outro de outros. Pensou-se que isso aumentaria a probabilidade de ajustes mais cedo ou mais tarde.
Isso desencadeou a reação entre nós com o treinamento ScrumMaster de "uh-uh". Há uma lista de pendências. Dois atrasos introduzem a questão de qual item nº 1 é realmente o mais importante, quais itens da lista determinam a velocidade real e em qual dos dois atrasos uma história realmente pertence (qualquer demarcação de tamanho / complexidade terá alguns casos que caem relativamente arbitrariamente para um lado ou para o outro). "Deixe o processo funcionar", dissemos; se a mudança for realmente significativa para os usuários finais, eles farão barulho suficiente para que os chefes de departamento tomem decisões de tempo / dinheiro a bordo, e isso trará à consciência da equipe de desenvolvimento o topo da lista de pendências.
Pensei em colocar a pergunta no plenário: na sua opinião, uma lista paralela de histórias "pequenas" teria valor em obter mudanças pequenas, úteis, mas, em última análise, de baixa prioridade, mais rápidas ou, em geral, é uma decisão melhor dobrá-los no backlog principal e deixar que o processo básico governe sua inclusão em um sprint?
Respostas:
Vou falar sobre alguns pontos que, espero, ajudarão você a encontrar o seu caminho:
Boa sorte :)
fonte
Estruturas de programação como Agile e SCRUM são projetadas para aplicar disciplina e estrutura ao desenvolvimento. No entanto, disciplina e estrutura parecem ser os antônimos de diversão e criatividade. Normalmente, você precisa trabalhar mais para estabelecer e manter a disciplina. É muito difícil encontrar um equilíbrio entre esses conceitos opostos. Portanto, estruturas tendem a evitar o tópico.
No meu último projeto, observamos que os desenvolvedores precisavam de um pouco de tempo todos os dias para atualizar ou limpar a cabeça, etc. Eles receberam um tempo orçado (0,5 horas / dia ou 2,5 horas / semana) no qual eles poderiam fazer qualquer coisa, dentro de razão (com a possibilidade de ser aplicada a algo no trabalho). Para manter as coisas disciplinadas, eles foram solicitados a documentar suas atividades para obter crédito por quaisquer realizações, etc. Ter um orçamento específico para o "pote de doces" se encaixava em nossas linhas do tempo e impedia que as coisas ficassem fora de controle.
Btw, chamamos o nosso "projeto coolness" e acabou sendo a fonte de muitas boas idéias e melhorias nessa empresa.
fonte
Você deve manter as pequenas histórias no backlog principal.
Enfrento problemas semelhantes ao que você está descrevendo, embora não esteja usando o scrum. Vejo que você enfrenta desafios de priorização e eficiência .
Parece que, à sua maneira antiga, qualquer pessoa estava implicitamente autorizada a tornar sua tarefa a atual "principal prioridade" se visitasse o escritório de um desenvolvedor. Isso tem alguns benefícios. O solicitante sente que está sendo atendido e o solicitante e o desenvolvedor obtêm uma "vitória rápida".
A desvantagem é que a inserção freqüente dessas tarefas tende a desacelerar ou inviabilizar as tarefas de prioridade máxima acordadas com o proprietário do produto. (Observação: muitas vezes todos subestimam a quantidade de tempo necessária para essas correções "rápidas".)
Minha experiência é que tentar espremer uma tarefa de baixa prioridade mina os benefícios da priorização. Como desenvolvedor, a priorização valida para mim que estou trabalhando no que o proprietário do produto quer que eu trabalhe. O proprietário do produto deve decidir se deseja assumir o trabalho extra e o risco (por menor que seja) de desistir de uma solicitação de "bom ter".
Muitas vezes, quando peço às partes interessadas que priorizem, me perguntam "Você pode simplesmente apertar isso?". O desejo implícito é que eu complete magicamente a nova tarefa sem afetar a maior prioridade atual.
O que geralmente acontece comigo é que as partes interessadas solicitam LargeImportantProject e SmallLessImportantTask. O dilema é: SmallLessImportantTask deve esperar que LargeImportantProject seja concluído (ou tenha um bloqueio)? Existem trocas, e minha experiência tem sido que o proprietário do produto precisa decidir. (Se o proprietário do produto não decidir, a equipe de desenvolvimento precisa adivinhar.)
Um objetivo do scrum (e do gerenciamento de projetos em geral) é evitar obstáculos para as tarefas de maior prioridade. À medida que você se torna mais eficiente, há menos espaço para extrair um trabalho extra "agradável de ter".
A eficiência pode ser assustadora, mas vi os benefícios superando o custo de duas maneiras importantes.
fonte
Na minha opinião; seu problema é a maneira como as tarefas são priorizadas na lista de pendências. Por exemplo, "prioridade" pode levar em consideração a importância e a rapidez com que pode ser concluída. Algo que não é tão importante, mas pode ser concluído em 10 minutos, pode ter uma prioridade mais alta do que algo mais importante que levará várias semanas para ser implementado.
fonte
Eu trabalhei em agile por um tempo agora. Tudo o que posso dizer é o seguinte - há situações em que insistir em uma metodologia e tudo o que ela incorpora é absolutamente errado. Você precisa ser ÁGIL, e ajustar uma metodologia para situações específicas é, na IMO, obrigatório.
Como disse Avi acima - "SCRUM" é sobre ser ágil. É necessário senso comum. Se a alteração demorar alguns minutos, não acho que você precise de uma lista de pendências.
Se a mudança levar tempo, isso significa que não é tudo "inofensivo" e deve estar bem documentado.
fonte
Com base na sua pergunta inicial e nos esclarecimentos subsequentes, percebi que seus pontos de dor são
O Scrum, se respeitado inicialmente corretamente, deve corrigir muitos desses problemas e, mais importante, trazer à tona outros problemas que devem ser resolvidos.
- Requisitos em constante mudança
Ter um único backlog em que tudo é inserido e priorizado corretamente deve significar que a equipe não deve suportar o peso das mudanças de requisitos enquanto está no meio do desenvolvimento. Se for um ambiente muito dinâmico, sprints menores de 1 ou 2 semanas devem garantir que mudanças de prioridades ainda possam ser facilitadas em um período relativamente curto.
- Incapacidade de desenvolvedores se concentrarem em outras áreas do aplicativo, ou seja. somos heróis em uma parte do aplicativo, mas não queremos tocar em nenhuma outra.
Uma equipe de scrum trabalhando bem em conjunto e apoiando-se mutuamente, com um esforço específico para compartilhar conhecimento dentro da equipe e procurando o desafio de trabalhar em outras partes do aplicativo, procurará garantir que o conhecimento do aplicativo seja compartilhado. Algumas práticas, como a programação em pares, podem ajudar as pessoas a superar o medo de trabalhar no código com o qual não estão familiarizadas, além de aprender e compartilhar esse conhecimento. Isso pode levar alguns sprints antes que o conhecimento do aplicativo seja distribuído entre as equipes e as pessoas se sintam confortáveis trabalhando em qualquer área do aplicativo. Além disso, permitir que as pessoas realizem tarefas de um quadro, ou seja, fazer sua própria escolha sobre o que gostariam de trabalhar, pode incentivar isso.
- Diferentes abordagens de arquitetura, soluções e estruturas adotadas
O Scrum facilita uma melhor comunicação, facilita o trabalho em equipe e melhor tomada de decisão, além de fornecer maior visibilidade ao que está acontecendo. Por sua vez, isso deve facilitar as decisões organizacionais em torno do uso de estruturas, soluções arquitetônicas etc., e o uso de um mecanismo Scrum of Scrums pode ajudar a instilar isso em toda a organização.
- Processo de coleta de requisitos
Novamente, se você seguir estritamente as regras, se um requisito não estiver especificado e pronto para que a equipe seja capaz de entender e estimar o que é necessário para atender ao requisito, ele não deve ser trazido para o sprint. Pegue outro requisito que seja de alta prioridade e tenha sido bem definido ... porque então você sabe que poderá cumpri-lo! Embora possa não corrigir o processo de coleta de requisitos imediatamente, forçará a alteração necessária para consertar esse processo.
Para responder à sua primeira pergunta, não, não deve haver dois registros em atraso separados. A qualquer momento, é do interesse de todos que os desenvolvedores e a organização estejam trabalhando primeiro nos itens de maior prioridade. As prioridades devem se basear principalmente no valor comercial, e é bem possível que muitos dos pequenos ajustes e solicitações agreguem valor comercial. Deixe o proprietário do produto decidir isso.
Sou Scrum Master há mais de 7 anos e ajudei na introdução do Scrum em diversas equipes e empresas. Na minha humilde opinião e pelas minhas observações, sinto que, se o Scrum estiver sendo introduzido em sua organização pela primeira vez, siga-o no livro. Não se desvie. O Scrum requer disciplina para poder se apegar às práticas e processos. É muito fácil abrir exceções para atender a determinadas circunstâncias e, se for feito muito cedo, levará à erosão dos benefícios e valores que ela traz consigo. Faça o básico, faça-o muito bem. Torne-se um especialista em fazer o básico e entender por que eles estão lá e, em seguida, mude o processo para melhor se adequar e impulsionar a melhoria contínua em sua organização.
Existem casos muito válidos para dizer que isso é "Ágil"; portanto, devemos estar dispostos a mudar o processo, mas há uma diferença significativa entre uma equipe auto-dirigida e auto-organizada que entende o processo e discute as mudanças que podem ser feitas para o processo, ao contrário de uma equipe que está apenas começando a seguir o caminho do Agile ou do Scrum. É como tentar correr antes que você rasteje ...
fonte