A “Equipe Cirúrgica” de Fred Brooks lida efetivamente com o fator de barramento?

10

Minha equipe de 4 desenvolvedores experientes trabalha em um aplicativo Windows grande e modular (aproximadamente 200 KLoC). Concentrei-me na base de código principal desde o início do projeto (há 3 anos) e gradualmente mudei para uma posição de desenvolvedor semi-líder, embora eu não seja o gerente da equipe.

Nossa iteração atual é uma atualização de interface do usuário de alta prioridade solicitada pelo gerenciamento superior, envolvendo cerca de 15 alterações na base de código principal. Quando solicitado pelo gerente, calculei que cada uma das 15 alterações levaria menos de quatro horas para eu concluir , totalizando menos de 7 dias úteis. Eu então me ofereci para realizar o trabalho. Em vez disso, o gerente decidiu dividir uniformemente todas as 15 tarefas para todos os quatro desenvolvedores.

Nos três dias desde que começamos o trabalho, observei duas coisas:

  1. Os outros membros inexperientes da equipe concluíram cerca de 1 ou menos tarefas cada.

  2. Lei de Brook em ação: gastei cerca de metade do meu tempo prestando assistência (tentando treiná-los no uso dos componentes). Como resultado, eu terminei apenas duas tarefas, em vez das 5 ou 6 esperadas.

Entrei em contato com meu gerente com minha preocupação de que estávamos atrasados ​​e, novamente, sugeri que eu concluísse as tarefas restantes. Meu pedido foi gentilmente recusado e os motivos declarados para dividir a carga uniformemente foram duplos:

  1. Limite o fator caminhão / ônibus - intensificando agora outros desenvolvedores com essas habilidades, para que, no futuro, qualquer trabalho possa ser dado a alguém, não apenas a mim.
  2. Para eliminar um "gargalo" (eu) e concluir o trabalho mais rapidamente.

Para ser claro, não tenho problemas com: a) investir tempo ensinando, b) pessoas tocando meu código ou c) segurança no emprego. Na verdade, sugiro regularmente ao líder da equipe que eu treine outros desenvolvedores em certos aspectos da base de código principal para reduzir o risco.

Nesta iteração, também temos uma grande coleção de correções de bugs de alta prioridade direcionadas, portanto parece que mais progresso poderia ser feito se a carga de trabalho fosse redistribuída.

No Mítico Homem-Mês, Brooks sugere uma " Equipe Cirúrgica ", onde cada equipe é composta por uma liderança + uma sub-liderança (o gerente e eu) e alguns papéis menores. Sinto como se estivéssemos naturalmente entrando nessa organização, mas meu gerente está trabalhando contra ela. Eu sinto que o fator de barramento já foi resolvido (o gerente é versado no código principal) e que o gargalo não existe (envolver mais desenvolvedores não tornará o trabalho mais rápido). Penso que, a esse respeito, uma equipe cirúrgica é uma coisa boa.

Esses são meus sentimentos, mas não sou um gerente experiente, nem tivemos que lidar com o fator ônibus (bater na madeira). Brooks estava certo? Você já trabalhou em uma "equipe cirúrgica" onde o fator de ônibus entrou em jogo? Existem técnicas melhores para gerenciar a experiência em distribuição?

Perguntas semelhantes:

Kevin McCormick
fonte
11
Considere treinamento para comunicar suas habilidades à equipe.

Respostas:

5

Na verdade, eu argumentaria que você está seguindo o modelo de "equipe cirúrgica". Por sorte!

Parte do objetivo do referido modelo é que os membros inferiores da equipe tenham um papel de assistente. Quando a equipe não está fazendo cirurgia cardíaca, é bom se mover mais devagar e dar a eles a chance de praticar algumas de suas habilidades ou de treinar responsabilidades.

O trabalho do cirurgião é examinar e gerenciar sua equipe, procurando pontos fracos e resolvendo-os, além de ser o principal desenvolvedor. Você não pode ter um não cirurgião (gerente de negócios) fazendo isso, porque ele não entende as habilidades necessárias, como um aprendiz de um mestre artesão.

Portanto, o gerente está aproveitando essa oportunidade para trabalhar em um de seus outros objetivos. Se durante o curso, alguma falha for revelada na equipe, ele poderá lidar com ela antes que se torne um problema. Digamos, contratando outro desenvolvedor.

Ou, os juniores podem cometer um erro. Este é o momento perfeito para fazê-lo, pois eles têm alguém vigiando por cima do ombro. Oscar Wilde disse

Experiência é simplesmente o nome que damos aos nossos erros.

Se esses juniores nunca tiverem a oportunidade de cometer erros, nunca irão melhorar. Isso não apenas roubará sua equipe de futuros desenvolvedores experientes, mas, de certo modo, rouba a eles uma oportunidade que eles deveriam ter tido.

Spencer Rathbun
fonte
Obrigado pela resposta. Essa experiência já está definitivamente revelando dois pontos fracos de nossa equipe: 1) nossa base de código principal é muito grande e precisa de mais modularização; e 2) quando modulamos mais, outros desenvolvedores precisam assumir a liderança dos novos componentes, em vez de mim. A questão maior, que não é necessariamente parte da minha pergunta original, é que eu tenho um conhecimento muito maior do código do que o gerente (que é o cirurgião "oficial"), portanto ele não está delegando de maneira eficaz como poderia .
22412 Kevin McCormick
@KevinMcCormick - Parece que você deve permitir que seu gerente se preocupe com essas coisas. Ajuste suas estimativas para incluir agora ajudar os membros de sua equipe em suas tarefas. Você tem muita justificativa para fazê-lo.
Ramhound
@ Ramhound, definitivamente verdade, e eu já discuti isso com o gerente e ele concordou com isso no futuro. Parte do desequilíbrio nas habilidades que ele não conhecia, e ele se ofereceu para ajudar. Ele sabe que o projeto depende muito de mim, que estamos trabalhando para resolver.
21412 Kevin McCormick
7

Nossa empresa costumava trabalhar como você está sugerindo. Tínhamos apenas duas pessoas que entendiam uma parte crítica do código. Sempre que surgia uma tarefa nessa parte do código, em vez de passar algumas semanas a atualizar alguém, a tarefa seria atribuída a eles porque eles poderiam concluí-la em alguns dias. Isso realmente funcionou muito bem por um tempo.

O que aconteceu foi que o prato ficou tão cheio que, mesmo que eles possam concluir uma tarefa em 2 dias, levaria semanas para chegar ao topo da lista. Os gerentes teriam batalhas verbais ferozes sobre cuja tarefa era mais urgente. Tarefas dependentes urgentes permaneceriam desfeitas.

Eventualmente, os gerentes se cansaram de esperar e começaram a treinar suas próprias equipes. Sim, ficou muito mais lento por um tempo, mas agora nosso rendimento é muito melhor.

Você pode estar nessa primeira fase agora, onde pode lidar com o trabalho, mas não tem como prever quando entrará na segunda fase. Aqui está uma dica: isso sempre acontece no momento mais inconveniente possível. Seu gerente tem razão em ser atingido quando você ainda tem espaço para respirar.

Sim, é frustrante ver alguém lutar com algo que você poderia fazer muito mais rápida e facilmente. Tente ser pai de uma criança de dois anos em algum momento. Você faz isso porque ajuda toda a equipe a melhorar. O trabalho do seu gerente é se preocupar com o cronograma. Se você está preocupado com os erros de alta prioridade desfeitos, desafie-se a ver com que rapidez você pode corrigi-los.

Karl Bielefeldt
fonte
Obrigado pela resposta! Definitivamente, posso dizer que a "fase 2" é um medo real, uma vez que temos outro funcionário de outro projeto que é um gargalo muito visível e que causou grandes problemas no passado. Não tenho certeza se o nosso projeto tem os mesmos problemas, então estou supondo que haja um empurrãozinho aqui. Independentemente disso, estou aproveitando a oportunidade para compartilhar algum conhecimento e talvez revelar alguns pontos fracos da documentação, modularidade do código etc. E sim, é incrivelmente frustrante! É reconfortante ouvir alguém que se sente da mesma maneira.
22612 Kevin McCormick
6

Você pode não ser um gargalo agora, mas eventualmente o será se continuar fazendo todo o trabalho sozinho. Seu gerente percebe que é importante o suficiente para você aprender a delegar o risco de que seu projeto se atrase - confie nele. Depois que você aprender a deixar ir, seus juniores começarão a aprender e produzir muito mais sob sua orientação.

Matthew Flynn
fonte
Obrigado pela resposta, eu definitivamente concordo que uma pessoa que faz todo o trabalho é um risco alto e que o gerente está ciente disso. Nesse caso, no entanto, não estou fazendo todo o trabalho. Os outros membros da equipe são muito produtivos ao trabalhar em outras tarefas, como corrigir bugs e trabalhar em subcomponentes - não na arquitetura principal do sistema. Seria algo semelhante a sugerir a alguém da equipe do Windows Media Player da MS que faça alterações no kernel do Windows.
22612 Kevin McCormick
@KevinMcCormick - E se o Media Player estiver sendo adicionado ao Kernel do Windows, desculpa válida por fazê-lo. Parece que você não deseja que os membros da equipe se familiarizem mais com a arquitetura do sistema principal, e não vejo o motivo para isso, apenas o ajudaria a longo prazo.
Ramhound
@ Ramhound, sim, é claro, nesse caso, seria definitivamente verdade. Quero que outras pessoas se apropriem das coisas que escrevi, faça alterações e entendam (eu regularmente forneço treinamento e documentação). Apenas não acho que a abordagem "todos trabalhem em tudo no mesmo grau" seja eficaz versus algum nível de atribuição de função, pois todos temos habilidades e conhecimentos diferentes.
21412 Kevin McCormick
3

Você está aplicando uma restrição que pode não estar presente ou ser tão significativa quanto você pensa que é. Especificamente, você está preocupado com o tempo até a conclusão. Seu gerente, por outro lado, não parece preocupado com as restrições de tempo percebidas.

Se você tirar o tempo de entrega da sua pergunta, rapidamente começará a se perguntar por que está fazendo a pergunta em primeiro lugar.

Isso não quer dizer que o tempo esteja sempre disponível e você declarou que essa é uma solicitação de alta prioridade da alta gerência. Mas você não está a par de todas as conversas que seu chefe teve com elas. Ele pode ter negociado por mais tempo para que você gaste esse tempo treinando os outros membros da equipe.

E enquanto você acha que o fator de ônibus já foi abordado, seu chefe pode estar olhando para a próxima solicitação que não se encaixa facilmente nos 7 dias de trabalho de um de seus principais desenvolvedores. É muito mais seguro treinar a equipe em uma iteração menor, em que a magnitude objetiva do risco é muito menor.

Eu já havia sido um gargalo crítico antes; e honestamente, não é um lugar agradável para se estar. No meu caso, eu e o vice-presidente de TI conversamos e criamos um plano para corrigir permanentemente o problema. Doeu, mas doeu muito menos do que eu tinha sido transportada.

É fácil entrar na mentalidade de tudo que precisa ser eliminado o mais rápido possível. Um bom gerente identifica as raras oportunidades em que um pequeno atraso (para treinamento / educação cruzada) pode pagar dividendos significativos posteriormente.


fonte
Obrigado pela resposta! Eu gostaria de poder aceitar todos eles. A restrição de tempo é muito real nesse caso, mas, como já foi dito, nunca há um bom momento para fazer esse tipo de investimento de tempo. Estaria interessado em saber como você resolveu sua situação.
22412 Kevin McCormick
3
+1 Alguns chefes podem ser idiotas, mas muitas vezes seu chefe tem uma perspectiva mais ampla e você só precisa confiar nele.
13333 Phil
@ Phil - Parece honestamente que, nesse caso, o chefe pode realmente ter uma boa perspectiva. Deixe que ele se preocupe com a linha do tempo, se preocupe com o atraso, ele forneceu a estimativa, afinal. Na pior das hipóteses, o tempo de crise acontece e você termina tudo o resto.
Ramhound