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?
fonte
Respostas:
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.
fonte
À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.
fonte
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.
fonte
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).
fonte
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.
fonte