Se você apenas considerar a segunda parte da minha pergunta, "Por que um desenvolvedor não deve ser interrompido enquanto trabalha profundamente na codificação", isso já foi discutido várias vezes por pessoas inteligentes. Heck, mesmo o co-fundador da SO, Joel Spolsky, escreveu um post no blog sobre "entrar na zona" e "ser eliminado da zona" e por que leva em média 15 minutos para obter produtividade ao participar de complexos, tarefas relacionadas ao desenvolvimento de software. Então eu acho que o porquê foi estabelecido.
O que me interessa é como explicar tudo isso para alguém que não conhece o Beans (khmm, quero dizer desenvolvimento de software). Como dizer à esposa, ou ao cara engraçado da contabilidade no local de trabalho, ou ao amigo de longa data que o envia por Skype a cada 30 minutos com um "Wazzzzzzup ?!", que todas as interrupções têm um impacto muito mais profundo no seu trabalho do que os óbvios 30 segundos que eles levaram do seu tempo. Obviamente, você não pode explicá-lo com frases como "Eu tenho que manipular muitos nomes de variáveis na minha memória de curto prazo", a menos que você queira ser alvo de olhares em branco ou abuso amigável.
Eu gostaria de poder explicar tudo isso aos não desenvolvedores de uma maneira que os faça entender claramente - sem ser ofensivo, elitista ou muito técnico.
EDIT: Obrigado a todos por suas excelentes idéias. Eu aceitei resposta de EpsilonVector como sua analogia era o mais próximo às minhas necessidades originais. A explicação "adormecer" não é ofensiva nem técnica, quase qualquer um pode se relacionar com ela, e as consequências de ficar perturbado ao adormecer ou estar na zona são muito semelhantes: você sente frustração e "perde" 15 a 20 minutos de tempo.
fonte
Respostas:
Tente as seguintes analogias: Primeira: "Quanto tempo leva para você adormecer?" "X minutos" "Agora imagine que, quando você está quase adormecendo, alguém entra e o interrompe, quanto tempo você demorará para adormecer agora? Esses poucos segundos que você deixou ou terá que começar novamente para ' afundar de volta para onde você estava? " "Vou ter que começar de novo" "Ótimo. A mesma coisa. Assim como adormecer, levo um tempo para 'afundar' no modo de foco e levo um tempo para voltar a ele assim que for interrompido, exceto que também esqueço metade do que estava fazendo ".
Segundo: "Você sabe como, quando está lendo um livro," mergulha nele "; depois de um tempo, nem percebe mais as palavras e bloqueia tudo ao seu redor e fica totalmente imerso nas imagens mentais entende." "Sim." "Quanto tempo leva para você chegar lá?" "Aproximadamente X minutos" "Agora imagine que, quando você está tão imerso no livro, alguém entra e o interrompe, quanto tempo você leva para voltar a isso? Isso acontecerá imediatamente ou você terá que começar novamente para ' afundar de volta para onde você estava? " "Vou ter que começar de novo" "Ótimo. A mesma coisa. Assim como na leitura, levo um tempo para 'afundar' no modo de foco, é tão irritante quando alguém me quebra disso,
fonte
Não acho que o estado de devaneio descrito por Joel seja técnico. É a mesma mudança no cérebro direito que alguém experimenta quando desenha ou cai sob o feitiço de um livro realmente bom. (O desenho do lado direito do cérebro, de Betty Edwards, descreve-o perfeitamente.) Todo mundo experimentou esse senso de concentração em que você não tem consciência da passagem do tempo.
Eu acho que é condescendente logo de cara imaginar que isso é algo que somente as pessoas técnicas entendem, que o conceito precisa ser embaçado para que não desenvolvedores entendam. Apenas explique em linguagem simples - eles entenderão.
fonte
Reencaminhe seu encadeamento interno para E / S verbal, ou seja, vire-o quando o interromper e continue murmurando código e olhando para a distância média até que desista e vá embora. Se eles falam, apenas murmure mais alto.
fonte
Diga a eles que a codificação (ou insira outra atividade de alta concentração aqui) é como ser um artista de circo que faz as placas giratórias agirem .
Primeiro você começa girando um prato no palito, começa a girar um segundo prato, começa, volte para o primeiro prato, gire um pouco mais para mantê-lo, depois comece a girar um terceiro prato , vá em frente e volte ao segundo prato, pouco giro extra, giro extra do primeiro prato, giro extra do terceiro prato e comece a girar em quarto lugar, etc.
Então o telefone toca e todos os pratos caem.
O estado do fluxo se foi. Agora você tem que começar tudo de novo. Obter um prato girando ...
Eu gosto de pensar em cada placa como um pedaço de dados, variável, conceito, estado, etc., que você precisa manter em mente.
fonte
Alguns meses atrás, alguém entrou no meu cubo e puxou meus fones de ouvido enquanto eu estava codificando. Fúria interna à parte, minha abordagem foi explicar que muitas vezes os programadores estão profundamente envolvidos no pensamento lógico, o que requer uma abordagem diferente e concentrada do pensamento e que interromper subitamente pode realmente atrapalhar o processo do pensamento. Isso não aconteceu com a pessoa novamente, então talvez tenha funcionado. Outra coisa que você pode considerar é o sinal de ocupado / livre. Eu tenho um amigo que faz algoritmos e ele tem um sinal de dois lados que diz "Codificação - Não interrompa" de um lado e "Livre para conversar" do outro. Remover a ambiguidade é a chave aqui.
fonte
Ok, estou adicionando minha própria resposta (eu sei que isso é um pouco idiota, mas talvez ele mostre alguma luz extra sobre o que eu estava buscando).
Eu disse o seguinte a alguém que me interrompeu recentemente em um momento ruim: "Desenvolver software é como dirigir um carro em uma estrada muito movimentada pela primeira vez em sua vida. Toda a sua atenção está focada no volante, nos pedais e nos carros. correndo ao seu redor, e você simplesmente não tem atenção extra em um bom bate-papo.Se você começar a se concentrar no que o bate-papo é, é provável que perca o controle sobre o carro e acabará acidente".
Isso era algo com o qual a pessoa poderia se relacionar, mas está longe de ser uma boa analogia. Se eu for interrompido, a consequência será muito diferente de um acidente. Estou desenvolvendo sw há 2 décadas. Por que comparo isso a algo que está sendo feito pela primeira vez? E assim por diante.
fonte
" Mihaly Csikszentmihalyi on flow " é um bom TED Fale sobre essa ideia de ser realmente produtivo sob certas condições que podem ou não atrair as pessoas. Não esqueça que, para algumas pessoas, elas podem nunca querer entender a explicação e, portanto, é como bater no cavalo morto recursivamente ad infinitum.
fonte
Eu chamo isso de transe de programadores. Existem muitas analogias boas aqui, então o que é mais um hein? Como já foi dito, um programador navegará mentalmente em vários fluxos lógicos diferentes até que o caminho certo se apresente. ENTÃO, ele é escrito em código e salvo no computador.
Então, digamos que você esteja escrevendo um trabalho ou documento importante. Os pensamentos estão fluindo em palavras para o computador, mas você ainda não salvou as alterações. Então puf, o poder vai ou o computador trava. Recuperar tudo isso levará mais tempo ou mais e nunca será o mesmo que o original. (Quantos de nós já tivemos isso?)
É o que acontece com o código em sua cabeça quando interrompido. Os pensamentos são tão frágeis quanto a fumaça. Se eles ainda não foram salvos e algo surge para atrapalhá-los, eles se foram.
fonte
Caro colega de trabalho distinto, Em um esforço para tornar mais eficiente estou me concentrando no meu trabalho e estou respondendo a perguntas por e-mail em momentos entre o trabalho para manter a interrupção no mínimo, para melhor atendê-lo e nome da empresa _ . Por favor, envie-me um e-mail e eu voltarei assim que puder. Obrigado.
fonte
Se você ouvir música, coloque uma placa que diga algo ao longo das linhas de
Isso só é eficaz se alguém lê e você nem sempre usa os fones de ouvido.
fonte
Penso nisso como uma grande teia de conexões complexas que tenho que construir em minha mente, uma estrutura de relacionamentos entrelaçados que se afetam de maneiras variadas, nem sempre óbvias, que precisam ser entendidas e mantidas com clareza. em foco enquanto escrevo código. A criação dessa web leva de 5 a 15 minutos em um projeto com o qual estou razoavelmente familiar e várias vezes menos em um íntimo.
Quando minha concentração é interrompida, a web começa a entrar em colapso e, se a interrupção durar mais de alguns segundos, ou sou obrigado a pensar em alguma outra coisa até um pouco complexa ("Quando o servidor caiu na semana passada, o que você fez?" informar o cliente? "), a web entra em colapso total. Quando a interrupção termina, tenho que construir toda a web novamente, basicamente do zero.
Se levar 10 minutos para construir a Web e eu for interrompido por apenas 2 minutos, três vezes por hora, você precisa entender que, em vez de codificar por 50 minutos da hora, estou fazendo apenas 24 minutos de trabalho. Essas três pequenas interrupções reduziram minha produtividade pela metade .
fonte
Neil Ford falou sobre isso no último Devoxx. Ele escreveu um livro sobre isso: o programador produtivo. Ele explica dicas sobre disjuntores de fluxo. Se você estiver no fluxo, estará no seu ponto mais alto de concentração. Mas se você for interrompido, leva + -20 minutos para voltar ao seu fluxo.
Você pode explicá-los se sair do fluxo. A memória de acesso aleatório no cérebro perde os dados sobre o que está funcionando e você precisa de 20 minutos para recuperar os dados na RAM;)
fonte
Normalmente, coloco o seguinte status nos meus clientes de IM:
Pelo menos, parece fazer o truque com o
fonte
Você pode tentar explicar, mas também pode tentar o seguinte:
Você interromper -los , enquanto eles estão fazendo algo que requer concentração profunda, se está lendo, assistindo a um filme, cálculo ou melhor ainda contar alguma coisa. Então, tudo o que você precisa explicar é que é exatamente assim quando você o interrompe. Deve fazer o truque. Só não os incomode enquanto estiverem dirigindo ou algo do tipo :).
fonte
Eu não explico Informe-os gentilmente que a interrupção acabou de adicionar 6 semanas para agendar.
fonte
O que faço no escritório é encontrar pontos de esconderijo em diferentes departamentos do escritório, dessa forma ninguém sabe onde você está e não pode incomodá-lo, mas se isso não for uma opção, basta obter um sinal e explicar que a menos que seja de importância vital, não perturbe!
fonte
Eu não sei o resto, mas para o Skype, pelo menos, sugiro usar o modo "Não perturbe". E se você precisar usá-lo para se comunicar no trabalho, tenha uma segunda conta somente para trabalho que você não compartilha com ninguém e não quer incomodá-lo no trabalho :)
fonte
Não precisa ser complicado. Algo tão simples e não hostil como "Estou trabalhando em algo que exige muita concentração. Isso pode ser colocado em um e-mail? Prometo analisá-lo assim que terminar aqui".
fonte