Pulando para trabalhar em diferentes recursos quando você fica paralisado, é uma fonte de falhas no projeto?

16

Em projetos pessoais (ou trabalho), se alguém ficar preso em um problema ou esperar para descobrir uma solução para o problema, se você pular para outra seção do seu código, não acha que será um bom motivo para sua aplicação será de buggy ou pior, mas nunca será concluído?

Supondo que você não esteja usando git e codifique cada recurso para uma ramificação específica, as coisas podem ficar fora de controle, pois você tem três recursos diferentes nos quais está trabalhando e possui problemas não resolvidos em cada um.

Então, quando você termina o trabalho, fica estressado porque tem esses problemas pendentes e um código incompleto.

Qual é a melhor maneira de evitar esse problema? (se você tiver isso)

Suponho que usar algo como git e criar um ramo por recurso é a maneira mais segura de evitar esse mau hábito.

Alguma outra sugestão?

codecompleting
fonte
Você tem esse problema para si mesmo? Ou você observa isso por alguns de seus colegas de equipe?
Doc

Respostas:

33

Isto não é um problema. Afastar-se temporariamente de um problema desconcertante é uma das melhores maneiras de descobrir esse problema (mais tarde, quando você está pensando sobre isso ou na próxima vez em que se senta com uma nova perspectiva / mente).

Sempre certifique-se de utilizar a ramificação do controle de origem corretamente e não precisará se preocupar com as meias soluções no código. Algumas pessoas nunca cometem intervalos, mas isso é apenas uma escolha pessoal. Você nunca deve realmente fazer pausas para compartilhar com outras pessoas.

smp7d
fonte
+1 para a ramificação do controle de versão. Vimos commits que corrigem 10 problemas em um diff, mas um era ruim; portanto, não há como isolar a alteração ruim.
JBRWilkinson
8

Como o smp7d mencionou , pular por aí pode lhe dar uma boa pausa mental do problema em questão. No entanto, é importante não esquecer que o código em que você estava trabalhando ainda está incompleto. Certifique-se de saber de onde parou.

Como o smp7d mencionou, controle de origem e ramificação é uma ótima maneira de dividir seu novo código de recurso e ver como ele difere da base de código principal.

Uma sugestão que tenho é que, se você estiver trabalhando em um método específico, verifique se há um teste de unidade bem nomeado em torno desse método. Dessa forma, ao trabalhar com esse código no dia / semana / mês / ano seguinte, você poderá dizer claramente o que o método deve fazer, mesmo que atualmente não passe no teste.

John Bubriski
fonte
1
+1 pela sua idéia muito pragmática de ter um teste de unidade com falha (por exemplo, em vez de um comentário TODO) para garantir que você se lembre do problema que adiou.
quer
3

Isso é um problema? Não quando lhe ocorre 10% dos recursos que você está tentando implementar. Às vezes, você fica mais claro quando faz algo diferente primeiro.

Obviamente, é um problema quando você fica paralisado por 90% dos recursos que tenta implementar - então você precisa da ajuda de outras pessoas ou de um ligeiro chute do seu chefe para concluir o que você criou (é claro, o último será ser contraproducente se você ficou preso devido a problemas técnicos reais).

A melhor opção para esse caso geralmente é tentar dividir o recurso em que você está trabalhando em sub-recursos menores ou "trechos de recursos", que podem ser implementados, testados e depurados um a um. Para mim, ajuda escrever essas fatias de recursos, questões em aberto, partes a serem feitas em uma lista, dar-lhes prioridades (A, B, C é suficiente) e trabalhar as coisas com maior prioridade primeiro.

Doc Brown
fonte
Bom ponto. Pular por aí não deve ser a norma.
smp7d
3

Tem sido minha experiência que "pular por aí", ou mais claramente "Pular aleatoriamente" é um sintoma de um problema mais urgente, um dos objetivos mal definidos.

Se você tiver uma ideia muito clara, por escrito, se post-its no lado do monitor ou em especificações formais anexadas ao rastreador de problemas de sua escolha, você quase sempre sabe exatamente em que trabalhar a seguir . Se você estiver sempre trabalhando em uma dessas próximas coisas, terá uma boa chance de ter sucesso no projeto.

Se, por outro lado, sua idéia do que é a próxima coisa mais importante é obscura, é muito mais difícil encontrar algo para trabalhar que realmente resolva o problema que seu projeto pretende resolver ou, mais especificamente, é muito menos e seco ao decidir que essa alteração específica está completa e resolve um problema específico.

Se você tem um objetivo como "tornar a interface do usuário mais fácil de usar", bem, é quase impossível dizer qual será a próxima correção ou quando você terminar de "corrigir a interface do usuário" e poderá passar para outra coisa. Se, por outro lado, você tiver um objetivo como "combinar esses menus suspensos em um campo de pesquisa com preenchimento automático" e "'foo' 'for concluído automaticamente como' Fooly Brand Baring '", é totalmente óbvio quando você corrigiu Esse problema.

Não escreva nenhum código até ter uma ideia muito clara de quando parar e, se não tiver uma ideia clara, trabalhe para obter um desses em vez de iniciar outro ramo para algum recurso geral.

Se você tem uma especificação de trabalho tão boa (mesmo para projetos pessoais), então "pular" é totalmente bom, seguro e útil.

SingleNegationElimination
fonte
0

Embora fugir de um problema possa ajudá-lo a resolvê-lo, lembre-se de que há um custo para alternar contextos. Você deve tentar fazer isso apenas quando estiver realmente preso ou quando uma tarefa crítica surgir (por exemplo, um cliente está inoperante).

Se você estiver alternando constantemente entre as tarefas, poderá acabar com vários recursos pela metade e muito tempo perdido. É por isso que práticas como o kan-ban o incentivam a definir um limite de trabalho em andamento. Dessa forma, você pode se concentrar em concluir, no máximo, apenas algumas tarefas por vez, aumentando assim a taxa de transferência.

jhewlett
fonte
0

Às vezes, pode ser útil limitar o número de recursos implementados em paralelo. Recuse-se a começar a implementar um recurso extra se esse limite for excedido até que outro recurso seja concluído. Essa abordagem é chamada Kanban

k3b
fonte