Uma lista de pendências de tarefas "tamanho pequeno" paralelamente à lista de pendências de recursos "principal"?


16

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?


5
Quão bem está funcionando o atual estilo de cafeteria? Se todos estão felizes com isso e podem viver com a incerteza de prazos em constante movimento, por que adotar o scrum? Esta não é apenas uma pergunta retórica; o principal motivo pelo qual você deseja adotar o scrum é eliminar precisamente a qualidade do seu estilo de desenvolvimento atual que seus stakeholders parecem valorizar. Você deve estar contemplando o scrum porque percebe um problema que o scrum resolverá; esse problema foi comunicado de forma adequada e convincente às partes interessadas?
Robert Harvey

Temos vários problemas com o sistema atual; primeiro, as pessoas que "possuem" as bases de código de vários aplicativos internos são enterradas por "drive-bys" solicitando recursos adicionais. É difícil ou impossível seguir em frente e focar em outra coisa. Isso, por sua vez, basicamente torna cada desenvolvedor o "guru" do código que eles escreveram, em vez de cada aplicativo ser um esforço de equipe com o qual todos os desenvolvedores estão pelo menos um pouco familiarizados. Não estou dizendo que qualquer propriedade de código é ruim, mas uma propriedade forte de código, sim, queremos parar com isso.
KeithS

Este sistema também impede amplamente a comunicação; todos nós apoiamos os aplicativos para os quais ainda somos os que trabalharam com eles e não temos tempo para aprender o que as outras pessoas estão fazendo. Isso resultou na adoção de diferentes estruturas, dependendo do que esse codificador está mais familiarizado, tornando a interoperabilidade entre bases de código um pesadelo (e vivemos e morremos como empresa por nossa habilidade em integração de sistemas).
KeithS

Por fim, há algumas coisas que simplesmente não podem ser feitas por um cara, não importa quão bom. Queremos poder alavancar toda a nossa equipe de maneira coordenada em grandes projetos, em vez de esperar meses para que um cara consiga digitar todo o LoC em nosso NBT. Isso requer um sistema que permita esse tipo de coordenação sem passar por nosso chefe para tudo. Até agora, não nos incomodávamos, nem ao ponto de contratar novas pessoas com o único objetivo de oferecer a elas algo novo para desenvolver e possuir.
KeithS

Ah, e por último, por último; o sistema atual de entrega de requisitos é basicamente esses "drive-bys". Se por acaso eu estiver cotovelo em uma base de código completamente diferente, e não anotar o que você deseja com detalhes suficientes para lembrar o que você realmente queria quando veio ao meu cubo para me perguntar, é provável que escorregue rachaduras inteiramente. A coleta de requisitos para projetos maiores é mais organizada, mas sempre há mais uma coisa, e atualmente não há um repositório central para essas coisas.
KeithS

Respostas:


10

Vou falar sobre alguns pontos que, espero, ajudarão você a encontrar o seu caminho:

  1. " 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 demorar mais de duas horas, acho que você deve pensar melhor. Nem tudo que é fácil de ganhar deve ser feito. No SCRUM, você trabalha por prioridades. Eu acho que o PO deve obter as informações sobre o que você ganha com a adição e o esforço necessário. Somente então o OP pode decidir se é importante ou não. Mudando para o SCRUM, às vezes vem muitas perguntas e os desenvolvedores costumam dizer "mas isso leva apenas algumas horas". E daí? Poucas horas são tempo, nem tudo o que é curto precisa ser incluído.
  2. Certa vez, trabalhei em um projeto onde tínhamos "backlog de engenharia" . Esse backlog continha itens sugeridos pelos desenvolvedores para melhorar o produto. Esses itens não tinham um valor explícito do usuário (mas tinham um valor implícito do usuário). Por exemplo: refatorando um componente no código. Nós descrevemos a mudança, o esforço e o ganho (nesse caso, você não pode apresentar nada ao usuário. Mas se essa refatoração fizer com que o desenvolvimento de novos recursos seja mais rápido, é definitivamente um ganho para o usuário). Nosso PO decidiu que, durante a versão, investiríamos 10% de cada sprint (em média) nesses itens. Antes de cada sprint, quando o OP decidia sobre o backlog do sprint, ele se certificava de que tínhamos 10% dos itens de backlog da engenharia. Então versão 2 backlog -> 1 sprint backlog.
  3. Buffers - Ao começar a trabalhar no SCRUM, as pessoas geralmente esquecem que, como engenheiros de software, deixamos um mundo de incertezas. Não há problema em contar 1 dia de trabalho como 6 horas em vez de 8. Digamos que você tenha um sprint de 15 dias, o que significa que você tem 30 horas extras para as reuniões, para coisas que demoraram muito e sim - também para aqueles pequenos coisas pequenas demais para serem lembradas, mas que fazem parte do nosso dia-a-dia.
  4. Mantenha o foco - Por último, mas não menos importante, no SCRUM é importante manter o foco. Decida quanto do seu esforço total e qual é a prioridade para investir nessas tarefas e lembre-se de investir esse tempo e esforço. Não comece a trabalhar em "pequenas coisas" só porque são pequenas. Você tem um pedido para ajudá-lo a decidir e tem bom senso.
  5. Mantenha-se ágil - e, no final, não se esqueça de tentar métodos diferentes para abordar o problema, questione-se se esse é realmente o melhor caminho. Melhore no caminho.

Boa sorte :)


1
+1 para o backlog de engenharia. Isso também pode ser usado para solicitações de usuários que, de outra forma, nunca são executadas.
Bart van Ingen Schenau

3

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.


3

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.

  1. À medida que você se torna mais eficiente, você aumenta a capacidade de sua equipe para concluir um trabalho valioso, que inclui solicitações de "bom ter".
  2. Se uma solicitação é realmente "agradável de ter", provavelmente é perfeitamente legítimo aguardar até que sejam abordadas as prioridades comerciais mais importantes.

Bons pontos. Ao contrário do consenso até agora, mas foi por isso que fiz a pergunta; para obter todos os pontos de vista.
KeithS

Tudo o que Aaron diz é verdade ... mas tudo leva à dinâmica da "grande empresa". É necessário pular muitos obstáculos para que o usuário final consiga o que deseja. Assim, eles acabarão parando de propor os pequenos ajustes que acabam obtendo uma boa ferramenta e apenas usam a ferramenta "crummy" como está.
Dunk

2

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.


1
Este é um bom ponto; O "ROI" deve ser considerado ao definir a prioridade. Faça o que mais lhe proporciona melhorias mais rapidamente. Isso pode ser incentivado ao configurar a lista de pendências (estamos muito adiantados em nossa adoção do Agile).
KeithS

2

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.


0

Com base na sua pergunta inicial e nos esclarecimentos subsequentes, percebi que seus pontos de dor são

  • Requisitos em constante mudança
  • 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.
  • Diferentes abordagens de arquitetura, soluções e estruturas sendo adotadas
  • O processo de coleta de requisitos não parece funcionar

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 ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.