Eu nem sei se essa pergunta faz sentido ... mas deixe-me deixá-la grudar ...
imagine ... Você está totalmente absorvido por algum pensamento / idéia / conceito de programação, seu cérebro está em seu estado mais ativo pensando em uma solução para um problema, ou como Joel Spolsky coloca - você está profundamente na sua "zona" "- E, de repente, alguém ou algum evento interrompe seu apego - algo que você simplesmente não pode evitar, algo que deve atender. ... imaginação completa .. de volta à realidade
Algo que pode quebrar sua concentração pode ser ...
- você é convocado para uma reunião urgente
- seu código quebrou a compilação diária e seu colega está ligando para você
- você acabou de se lembrar de algo que tinha que fazer, mas esqueceu de fazê-lo
- seu companheiro de equipe tem notícias emocionantes e insiste em que você ouça
- sua namorada (ou namorado) acabou de chegar
Agora, suponha que você tenha apenas 5 a 10 minutos antes de sair do que estava profundamente envolvido e distrair a interrupção.
Minha pergunta é: como você "salva" rapidamente o estado de espírito em que estava quando a diversão chegou? Você escreve em "alguma forma" em um papel ou computador ou apenas "lembra" de alguma forma. Como você salva esses pensamentos exatos dentro de 5 a 10 minutos, para que mais tarde, quando você voltar, possa recuperar o atraso do "ponto" que você deixou.
Muitas vezes acontece comigo que eu simplesmente não consigo lembrar exatamente os pensamentos que estava pensando antes do golpe - e sinto que perdi uma boa idéia ou soluções para um problema. tento pensar retroativamente tentando chegar ao mesmo estado cognitivo que me deixou empolgado com uma idéia - mas fico frustrado por não conseguir "chegar lá".
Acontece algo assim com você. como você "se recupera" disso?
Minha principal preocupação não é o código - são essas "idéias abstratas" que ainda não foram convertidas em código que eu preciso "salvar" de alguma forma.
- atualização -
Depois de muitos anos, posso dizer com confiança, que NÃO há maneira possível de fazer isso. Nenhuma quantidade de rabiscar seu estado cognitivo em um pedaço de papel permitirá restaurá-lo exatamente do jeito que estava. Nossos cérebros são muito mais complexos do que um mero rabisco de trecho, quando se trata das informações que ele mantém ativamente a qualquer momento.
A melhor maneira é evitar a distração, não importa quão importante seja, a menos que seja uma situação de vida ou morte. Nada é mais importante do que estar na zona e terminá-la.
Se seu local de trabalho é ingênuo o suficiente para não apreciar a presença de alguém na zona, é hora de procurar um novo local de trabalho. YMMV embora. E com as relações pessoais, são as habilidades sociais e uma pitada de articulação que podem fazer um mundo de bem.
fonte
Respostas:
Antes de sair do PC, escrevo o que estava fazendo em um post-it ou em um pedaço de papel. Normalmente, estou fazendo isso de qualquer maneira como parte de uma correção ou análise de bug. É realmente útil quando um bug é (re) aberto mais tarde , você ainda pode ver suas linhas de pensamento de um mês atrás e descobrir o que precisa fazer muito mais rapidamente.
Além disso: defina alguns indicadores no seu código. Quando você voltar, poderá ver o que estava fazendo, visualizando os marcadores que definiu.
fonte
Pego o aplicativo de bloco de notas local e escrevo meu plano de coisas futuras.
Eu encontrei isso para ajudar mais. Em 100% do tempo, não consigo me lembrar do que planejava fazer quando voltasse; as idéias são fáceis de serem encontradas, mas você se lembra dos passos reais que estava realizando?
Eu uso algo como;
Salvei na área de trabalho e mantenho o arquivo aberto.
Eu descobri que, para mim, tem esses benefícios;
fonte
Além da excelente sugestão de escrever, esta é uma habilidade que pode ser desenvolvida com ...
Prática.
Eu costumava ser o pior do mundo em multitarefa. As pessoas costumavam temer me interromper porque eu era muito desagradável com isso. Então eu percebi que realmente não era como uma CPU com múltiplos núcleos paralelos, era como uma interrupção nas opções de tarefas. Então comecei a me treinar para relaxar e aceitá-lo como parte necessária da vida.
Uma década depois, eu uso um sistema semelhante ao Pomodoro, onde simplesmente faço uma pausa quando o cronômetro dispara. É incrivelmente fácil voltar "à zona" em um ambiente descontraído depois de alguns minutos - estou ansioso por isso! E para interrupções mais longas, essas anotações são inestimáveis. Posso restaurar quase todo esse "estado da CPU" mental com bastante facilidade agora, a menos que mais de um dia se passe.
Além disso, como agora estou mais acostumado a lidar com interrupções, não sou mais tão irritado quando as pessoas fazem isso. Também fiquei muito melhor dizendo simplesmente: "Espere um momento enquanto faço uma anotação". É incrível o quão mais agradável minhas interações sociais são!
O cérebro é como um músculo mental, e melhora em coisas como multitarefa se você fizer exercícios progressivamente mais difíceis.
fonte
Isso acontece o tempo todo! Quando estou escrevendo código, posso dizer a 90% das pessoas que esperem alguns segundos - elas sabem que é do seu interesse não me incomodar. Durante esses segundos, eu intencionalmente misturei algumas teclas na linha do código em que estava trabalhando e marquei a linha acima com XXX (isso é bem destacado no vim).
O esmagamento do código é feito para que o programa não seja compilado e sou forçado a olhar para essa linha. Para a maioria dos meus idiomas em que escrevo, isso é suficiente para eu olhar para onde parei e colocar minha memória em seu estado produtivo rapidamente.
Também aprendi que estar na "zona" agora é um luxo hoje em dia (lidando com interrupções constantes). Embora definitivamente não seja o ideal em termos de produtividade, obriga você a aproveitar ao máximo o que tem.
fonte
Descobri que sempre que trabalho com o git, tenho menos problemas em deixar o trabalho para trás (e mais importante, continuar trabalhando nele). Não é por causa do git em si, mas pelas práticas que adotei ao aprender os fluxos de trabalho do git. Estou falando de tópicos .
Se você fizer todos os "significados" significativos em seu desenvolvimento em um ramo de tópico dedicado, é muito mais fácil voltar ao seu trabalho. Aqui está o porquê.
Se você tem disciplina, esse modo de trabalhar facilita muito o abandono do trabalho e buscá-lo mais tarde.
Quando estou trabalhando em alguma coisa, sempre trabalho com algo relacionado ao meu tópico atual. Mais uma vez, ter uma disciplina compensa. Ou termine seu trabalho atual. Se você não puder (geralmente tenho esse 'problema' - 'Preciso corrigir isso agora' etc.), basta criar um novo ramo de tópico para a correção (ou refatoração, melhoria, qualquer que seja). Mesmo que o seu espaço de trabalho atual não esteja pronto para ser comprometido, basta fazer
git stash
o pequeno trabalho em seu próprio tópico epop
do stash para voltar ao seu trabalho real.fonte
Por preservar o estado da tarefa e mudar para outro, eu absolutamente amo a preservação do contexto Mylyn . O que o Mylyn faz é armazenar e depois restaurar o estado exato do seu IDE (perspectiva aberta, arquivos abertos, localização nesses etc.).
Para as coisas que eu estava fazendo, coloquei comentários do TODO. O Eclipse os mostra automaticamente como lista de tarefas.
fonte
Eu desenvolvo em uma VM. E quando sou interrompido (final do dia, almoço, reuniões etc.) e não quero perder minha linha de raciocínio, basta escrever um comentário no código, algo como:
Às vezes, esses comentários continuam por algumas linhas, se for complicado. Mas eu apenas escrevo o comentário no código, no IDE, deixo o IDE aberto e use o comando "Suspend and Exit" na VM. Então, quando eu puxo de novo, há um comentário na minha frente imediatamente, o que me ajuda a voltar rapidamente ao que estava pensando antes.
fonte
Comecei a usar o software de mapeamento mental (atualmente FreeMind). Eu o uso para tudo, mas relevante para isso, inclui uma lista de tarefas para cada projeto em que estou trabalhando. Enquanto estou pensando em uma solução para um determinado problema da lista, começo a digitá-la no meu mapa mental. É aí que guardo minha solução, mesmo enquanto estou trabalhando nela, em vez de tentar manter tudo na minha cabeça.
Vamos concentrar-me nos detalhes da implementação do código, sem perder a visão geral. Isso também significa que as interrupções têm um efeito mínimo no meu trabalho, porque mantenho as etapas que planejo seguir gravadas em algum lugar.
O software ou método de rastreamento específico que você usa é irrelevante. Essa idéia seria igualmente útil no bloco de notas ou com um pedaço de papel. O conceito relevante é que você está registrando suas idéias como as possui, para que estejam sempre disponíveis.
fonte
Se você estiver em um ambiente de alta interrupção, acho que manter um diário a cada hora (anote algumas balas a cada hora) é muito útil. Uso uma combinação de TiddlyWiki e papel (Tiddly para documentação / pesquisa, papel para raciocínio rápido).
Comecei a fazer isso ao trabalhar em casa com uma criança e isso aumentou minha produtividade em geral. Isso ajuda no problema imediato de redescobrir meus pensamentos e tem um bom efeito colateral de aumentar minha autoconsciência (passei uma hora modificando um método de troca de bits de 10 linhas na semana passada para torná-lo mais legível. Provavelmente não é o melhor uso do meu tempo).
fonte
o primeiro é seguro contra interrupções, retrocede e se repete mais tarde, enquanto o último é essencial para retomar de onde você parou
fonte
Eu mantenho um comentário corrente em um bloco de notas ao meu lado. Tentei fazer isso em um arquivo de bloco de notas, mas por algum motivo não funciona tão eficazmente quanto anotá-lo. Se você estiver razoavelmente organizado sobre o que você nota como trabalho, você efetivamente tem um núcleo de seus pensamentos abstratos para retornar.
fonte
O que eu achei ajudou muito (mesmo para "OK, agora eu vou para casa e volto para o trabalho amanhã") estava constantemente anotando vários pensamentos em minha mente e fazendo coisas dessa lista.
Mas definitivamente depende de (i) processar ativamente essa lista - no mínimo, eliminá-la em vez de terminar com centenas de "listas de tarefas" semi-prontas para as quais você deseja voltar e (ii) praticar o suficiente para ter a experiência para saber o que você precisa escrever e o que não sabe - quais tarefas têm o "botão adicionar barra de ferramentas" e os detalhes do design que você pode recriar da sua mente da próxima vez e quais tarefas você já realizou metade do planejamento sem percebendo e você precisa anotar isso em si.
Além disso, obviamente, tente evitar distrações desnecessárias; é sempre bom poder continuar com uma distração e sempre haverá algumas, mas não incentive muitas.
fonte
Na verdade, eu causei vários erros como resultado de ser interrompido às pressas e abruptamente nos intervalos para o almoço em uma antiga empresa. Acabei pedindo mais alguns minutos ou apenas saindo sem mim, apenas para que eles me pressionassem a entrar, então deixei o código meio escrito, o pensamento meio completo, apenas para retornar ao código uma hora depois e perder. rastrear e errar as coisas.
Acabei começando a compensar isso fazendo anotações e escrevendo listas de tarefas enquanto eu continuava e apenas mantendo uma "pilha mental mais superficial", por assim dizer. O TDD também ajuda, pois os testes expressam o que você está tentando fazer com um design, além de garantir que você esteja fazendo isso.
Também desenvolvi uma linguagem que está entre o que intuitivamente me parece codificação e linguagem humana. Consiste em sons como " Nyargh! Bloobly-bloop! ", E eu faço esses sons algumas vezes se as pessoas estão tentando falar comigo enquanto estou ocupado. Enquanto eles não entendem esses sons, ele comunica que estou em um estado incapaz de me comunicar adequadamente com os seres humanos no momento; nesse momento eles se afastam e me permitem retomar o pensamento e a escrita do código.
Dito isto, minha esposa se acostumou com a ideia de que ela poderia falar comigo e eu poderia estar concordando e assim por diante e não processou mentalmente uma única palavra que ela disse. É como se eu pudesse ver a boca dela se mover e ouvir sons saindo, mas na verdade não está sendo traduzido corretamente nas instruções da máquina. Ela meio que aprendeu a perceber minhas respostas quando isso acontece enquanto eu estou absorto em pensamentos.
Às vezes, também processo parcialmente o que ela disse e apenas o empurro para a fila simultânea, como se ela me fizesse uma pergunta; nesse momento, não posso processá-lo completamente até que tirei tudo da minha fila mental (o que é muito ineficiente mecanismos de travamento para segurança da linha). Então ela se acostumou a me fazer uma pergunta com apenas um aceno de cabeça e sem resposta ou uma resposta sem sentido como "sim" ou "bloobly-bloop" para "o que você quer fazer hoje à noite?" apenas para processá-lo dez minutos depois e responder à pergunta como se eu tivesse acabado de ouvi-la um segundo atrás.
Também não sei vocês, mas fico muito distraído quando estou perdido em pensamentos de programação. Acabei procurando minhas meias uma vez por séculos, esquecendo onde as colocava. De alguma forma, coloco na geladeira. Eu acho que estava tentando pegar uma bebida ou algo com minhas meias na mão e de alguma forma colocar as meias na geladeira e esqueci de pegar a bebida. Em outro momento, fui a um depósito de lixo depois de estacionar meu carro com as chaves do carro na mão e tentei jogar um invólucro que eu tinha no lixo. Em vez disso, acabei jogando as chaves do meu carro no depósito de lixo e nem percebi isso até tentar destrancar o carro com o invólucro de plástico, momento em que tive que mergulhar no lixo pelas minhas chaves. De qualquer forma, minha esposa está acostumada a esse tipo de coisa, com minhas coisas aparecendo em lugares estranhos.
Só para essa parte, um namoro e um romance são difíceis com a programação. Eu tinha muitos relacionamentos anteriores em que o namoro foi maravilhoso até que começamos a viver juntos e eles viram esse lado de mim perdido em pensamentos o tempo todo, enquanto ficava sentado o dia todo no computador e passeava em pensamentos enquanto respondia com " bloobly-bloop! ", E perdeu o interesse. É difícil encontrar alguém com paciência para isso. Eu tive muita sorte com minha esposa que aguenta isso.
fonte