Como você pode alcançar e manter o fluxo durante a programação em pares?

17

Fluxo é um conceito introduzido por Mihaly Csikszentmihalyi; em suma, significa entrar na "zona". Você se sente imerso em sua tarefa, focado; a tarefa pode ser difícil, mas desafiadora ao mesmo tempo. Quando as pessoas atingem o fluxo, sua produtividade aumenta. A programação requer muito foco mental, porque muitas vezes precisamos manipular várias coisas em nossas mentes ao mesmo tempo. Muitos gostam de trabalhar em um ambiente silencioso, onde podem direcionar toda a atenção para a tarefa. Se forem interrompidos, pode levar alguns minutos ou até horas para voltar ao fluxo.

Entendo que existe uma prática em desenvolvimento ágil e programação extrema chamada programação em pares. Isso significa que você coloca toda a equipe de desenvolvimento de software em uma sala para que a comunicação seja perfeita. Você escreve código com o seu par, porque dessa forma você obtém análises instantâneas e menos bugs.

Eu sempre tive problemas para obter fluxo ao fazer a programação em pares por causa de interrupções constantes. Estou pensando profundamente sobre um problema e, de repente, alguém me faz uma pergunta de outro par. Minha linha de pensamento está perdida.

Como você pode alcançar e manter o fluxo durante a programação em pares?

siamii
fonte
4
Não concordo que outros pares possam entrar em conflito a qualquer momento.
Jeffo
3
Uma alternativa ao Flow é identificar e manter a posição no Ballmer Peak . Isso pode levar uma boa quantidade de experimentação, tempo e uísque para ser alcançado.
Hovercraft Cheio De Enguias
Estou distraído ao ler esta pergunta quando deveria escrever um código. Se eu estivesse programando em pares com alguém, não teria aberto essa pergunta para lê-la e provavelmente estaria fazendo mais.
TehShrike

Respostas:

15

Edit: Disclaimer - É assim que eu defino "a zona": A state of extreme focus, in which one is able to understand how many intricate details connect together, regardless of whether these do so elegantly (or simply) or not.

Tento evitar esse estado porque, embora eu possa produzir o código correto na zona, eu e outros desenvolvedores teremos dificuldade em entendê-lo mais tarde. Para resumir: a leitura do código que foi escrito na zona pode exigir que o leitor esteja na zona. Essa restrição é o meu problema.

Há um capítulo adorável sobre O codificador limpo, em que o tio Bob explica de maneira convincente por que "entrar na zona" é uma idéia ilusoriamente ruim.

Aqui está uma alternativa possivelmente melhor do que "entrar na zona": pense direito e considere com calma e profissional o que você está fazendo. Comunicar. Compartilhe pensamentos com seu (s) parceiro (s). Identifique os problemas reais. Discuta possíveis soluções. Você pode não se sentir sobrenaturalmente focado, mas é provável que tome boas decisões e designs acessíveis.

Se você e seu parceiro podem discutir o problema sem que ambos estejam extremamente concentrados, é provável que você tenha resumido o problema à sua natureza mais simples. Isso sugere que você poderá entendê-lo novamente sempre que precisar.

Por outro lado ... Se você só precisa de um tempo sozinho para endireitar a cabeça (todos nós às vezes precisamos), aguarde. Junte seus pensamentos. Resolva o problema em sua cabeça primeiro.

Mas o problema é que, se você fizer - não use esse tempo para escrever o código de produção. Em vez disso, brinque com código de amostra e protótipos. Tente entender o problema, sem pensar em soluções ainda. Depois de esclarecer tudo e escrever tudo, discuta-o com sua equipe e seu parceiro, ou mesmo com o pato de borracha em sua mesa. Se você ainda não consegue articular, ou eles não conseguem entender, refine suas idéias. Depois de definir tudo isso - integre todo esse pensamento e código de exemplo em uma solução real e funcional.

Yam Marcovic
fonte
2
Eu votaria um milhão de vezes, se pudesse, os profissionais aprendem a trabalhar, estejam eles "na zona" ou não. Os profissionais podem trabalhar com as pessoas que as interagem para fazer perguntas, com barulho ao seu redor, e junto com outras pessoas conversando sobre como realizar qualquer tarefa em que estejam trabalhando juntas. Não estou interessado em trabalhar com prima donnas que precisam ter condições especiais de trabalho para se concentrar.
HLGEM
7
@HLGEM - Eu não acho que ter acesso a um local adequado para trabalhar quando necessário seja pedir muito.
JeffO 19/11/11
2
@HLGEM: Obviamente, um profissional deve ter produtividade média em condições de trabalho médias. Mas, por outro lado, seria do interesse do empregador deixar o mesmo profissional trabalhar de maneira muito concentrada, porque isso pode aumentar enormemente a produtividade e a qualidade.
Giorgio
2
"Parece-me que as pessoas tratam" a zona "como se fosse uma solução mágica rápida para resolver bem os problemas, como um chapéu pensante.": Não, mais trivialmente, a zona é um estado de concentração em que você é mais produtivo porque você está focado em sua tarefa sem distrações. A zona não o torna todo-poderoso, apenas o torna mais produtivo.
Giorgio
2
@Yam Marcovic: Este não é o tipo de produtividade que eu tinha em mente (produzindo mais código de qualidade inferior): se alguém usa o isolamento como desculpa para fazer o que quer, eles não estão sendo mais produtivos. Para mim, fluxo não significa mexer e escrever muito código, mas trabalhar sistematicamente em uma tarefa específica sem ser interrompido por outras tarefas não relacionadas.
Giorgio
5

Às vezes, a programação em pares requer períodos de isolamento do seu parceiro.

Exemplo

Vocês estão trabalhando juntos em uma classe específica e percebem que precisam escrever um método que exija um pensamento profundo de alguma lógica complexa, mas que, de outra forma, retorne um resultado mundano. Vocês trabalham juntos na criação de testes de unidade para esse método e adiam a gravação desse método para um período de tempo em que estão trabalhando isolados. Quando o método é concluído, você volta a se reunir como um par e avalia os resultados.

Robert Harvey
fonte
Por que a implementação não deve ser feita na programação em pares?
try-catch-finalmente
5

Descobri que há uma pequena classe de problemas para os quais a programação em pares funciona. Por exemplo, se você estiver trabalhando em um produto de plataforma cruzada e o cara Winders implementou um recurso que requer código específico do SO, ele pode ajudar o cara Mac a implementar o mesmo recurso no código Mac enquanto o cara Mac dirige.

No entanto, na minha experiência, a programação de pares resulta extraordinariamente em uma perda líquida de produtividade. Muitas vezes parece que estamos pagando dois desenvolvedores para fazer o trabalho de um.

Sim, reduz a possibilidade terrível de que um desenvolvedor faça uma pausa na troca de pilhas durante o dia de trabalho.

IMHO, seria mais barato para as empresas que desejam policiar seus desenvolvedores apenas emparelhar todos os desenvolvedores com um guarda de segurança privado para ficar atrás do desenvolvedor e acertar o desenvolvedor com um cassetete se ele diminuir a velocidade ou tentar atingir o pico de forma não essencial página da web.

Jim In Texas
fonte
1
O ponto da programação de pares não está impedindo um ao outro de relaxar; isso nem seria eficaz. O ponto é ter uma revisão de código em tempo real.
Lev
3
@ Lev: Ter uma revisão de código antes de confirmar é muito mais eficiente: a revisão leva de alguns minutos a meia hora, em vez de um dia inteiro de trabalho.
Giorgio
@ Giorgio Não é bem assim. Por exemplo, pode acontecer que você cometa um erro, perca tempo capturando-o e só então revise e confirme seu código. Se você tivesse programado um par, seu parceiro teria notado o erro e economizado o tempo de depuração.
Lev
1
@ Lev: "Se você tivesse programado um par, seu parceiro teria notado o erro e economizado o tempo de depuração.": Não há garantia de que um erro seja observado na programação de pares ou nas revisões de código. Por exemplo, após seis horas de programação em pares, pode-se estar tão cansado que se esquece facilmente dos bugs.
Giorgio
Obviamente, não há garantia, mas pode ajudar.
Lev
3

Como um desenvolvedor tentando entrar na zona, você tentará se isolar da melhor maneira possível para se sentir confortável e limpar sua mente. Por que a programação de pares deve ser diferente?

Você e seu parceiro devem encontrar um ambiente de indução de zona que funcione para os dois. Isso provavelmente exigirá comprometimento em algumas coisas, mas meu ponto principal é que o ambiente de pares deve ser semelhante ao solo. Desligue o mundo externo. O par está programando juntos; outros pares (outros colegas de trabalho em geral) não devem interromper (exceto problemas críticos que deixam você fazer o que está fazendo).

Sarumont
fonte
0

O fluxo é um ótimo estado para se estar quando você conhece as etapas exatas para resolver um problema. isto é, algumas incógnitas desconhecidas. Você se senta em um canto quieto e elimina a solução. No entanto, a maioria dos problemas / histórias / recursos não é muito clara quando você começa a programá-los. Sempre haverá uma "lacuna" entre o estado final esperado e como o seu cérebro o "planejou". Você aprende muitas coisas quando realmente "faz". Seu cérebro faz malabarismos

  • Design de código

  • Digitando

  • Aprendendo coisas novas sobre o domínio e o código

Quando programa sozinho, luto para equilibrar essas coisas. Costumo entrar em "buracos de coelho", onde minha falácia de custo irreversível me impede de dar um passo atrás e olhar para o cenário geral e mudar meu design. Também é difícil para mim falar com um pato de borracha imaginário ou de verdade. Afinal, estou no "fluxo".

Porém, quando estou emparelhando produtivamente a programação, recebo períodos alternados de digitação, seguidos de períodos de pensamento e reflexão. É aqui que muitas coisas ocultas se revelam e um design diferente pode surgir. Se eu estiver entrando em uma toca de coelho, meu parceiro pode me puxar para fora dela. Falar / explicar algo a um ser humano real tem esse efeito maravilhoso de tornar seus pensamentos mais claros. Às vezes, sinto falta de estar no "fluxo", mas acho que contribuo muito mais para a minha equipe quando pareço o programa do que quando sozinho. Depois de toda a programação! = Digitando. A programação acontece no cérebro e uma melhor programação acontece quando dois cérebros colaboram e criticam um ao outro.

uttamkini
fonte