É muito difícil me concentrar no que estou fazendo (em termos de programação) quando algo (compilação, tempo de inicialização etc.) leva mais do que apenas alguns segundos. Curiosamente, parece que esse limiar é de cerca de 10 segundos (e lembro-me de ler sobre um estudo que disse a mesma coisa, embora não o encontre agora). Então, o que normalmente acontece é que eu faço uma alteração e depois executo o programa para testá-lo. Isso leva cerca de 30 segundos, então eu começo a ler outra coisa e, antes que eu perceba, 20 minutos se passaram e depois leva (se tiver sorte!) Mais 10 minutos para lidar com a mudança de contexto para voltar à programação .
Não é exagero dizer que algumas coisas que devem me levar minutos literalmente levam horas para serem concluídas.
Estou muito curioso sobre o que outros programadores fazem para combater essa tendência (ou se sou único e eles não têm essa tendência?). Sugestões de qualquer tipo são bem-vindas - qualquer coisa, desde "sente-se em suas mãos depois de pressionar o botão de compilação", até truques mentais, "se demorar 30 segundos para iniciar algo para testar uma alteração, algo está errado com seu processo de desenvolvimento. ! "
fonte
Respostas:
Eu escrevi um utilitário de linha de comando pequena chamado 'alerta', que fará com que o computador emite um sinal sonoro / reproduzir um som / etc Então, quando eu tenho um comando demorado para executar tais como
make
, eu corromake; alert
. Onde eu puder, também solicitarei um argumento para emitir um som diferente, dependendo do argumento. Assim, eu posso fazermake; alert $?
e saberei a) a construção está concluída eb) passou ou falhou. Você não precisa ser tão chique com isso; apenas umecho -e "\a"
pode ser suficiente.Se você quiser ser realmente chique / irritante, use algum pacote de conversão de texto em fala e acione um pop-up de diálogo.
A idéia principal aqui é interromper sua distração assim que a tarefa relacionada ao trabalho for concluída.
fonte
MSG="back to work" && xmessage -buttons ok -default ok -nearmouse "${MSG}" 2> /dev/null
;
vez de&&
. Seu segundo exemplo será executado apenasshow_message
se formake
bem-sucedido, o que não é exatamente o que você deseja. Para ser claro: eu gosto do exemplo que você deu, só estou sendo exigente quanto aos detalhes da implementação. ;)command; alert
-lo e fornecerá um alerta na área de trabalho quando terminar de especificar qual comando foi finalizado. Realmente útil para longas compilações ou testes.Eu tenho o mesmo problema, e a solução para mim foi passar o tempo fazendo algo que não o deixaria sugado. Para mim, isso geralmente é (1) encher uma garrafa de água ou (2) levantar e dando uma caminhada de 30 segundos pelo escritório para esticar minhas pernas, que precisam de qualquer movimento. Você pode se perder navegando na internet; você raramente se perde andando pelo seu próprio cubículo.
fonte
Faça algo pela sua saúde:
Em pé, afaste-se do computador e faça alguns exercícios de alongamento de mãos e braços. Isso leva de 2 a 5 minutos no máximo. Seu futuro eu que não sofre de RSI agradecerá por isso.
Além disso, em relação ao intervalo de 2 a 5 minutos, leia a técnica Pomodoro . Isso se baseia na idéia de ter pausas curtas frequentes para tirar sua mente da tarefa atual e deixar as coisas afundarem um pouco. É uma pausa curta o suficiente para não perder completamente sua linha de pensamento, mas o tempo suficiente para respirar o cérebro.
fonte
Desenvolvimento é um processo criativo. Você não pode ser constantemente produtivo, especialmente se houver muitas distrações em seu escritório. É por isso que o teste Joel sugere condições de trabalho silenciosas.
Joel Spolsky também explica o que significa "não estar na zona" . Cada vez que algo impede você de fazer seu trabalho, você precisa gastar dez minutos, muitas vezes mais para voltar à zona e se tornar produtivo novamente.
Existem muitas distrações:
Não há nada a ver com isso. A única coisa que você pode fazer é remover as próprias distrações:
No seu caso, se é o compilador que o distrai, tente reduzir o tempo de compilação:
fonte
Eu acho que vou ser o único a dizer isso, mas você deve apenas sentar lá e esperar que termine.
Você precisa se treinar para não sentir a necessidade de estar constantemente ativo e fazendo as coisas. Esse é um problema muito prejudicial que afeta não apenas os desenvolvedores, mas todas as pessoas. A sociedade ficou obcecada com a necessidade de estímulo constante (visual, áudio, mental). Parece que ninguém aguenta ficar ocioso por mais de 30 segundos sem puxar o telefone e enviar mensagens de texto, navegar na web, verificar o facebook etc.
Se você clicar em compilar e levar um minuto ou mais, considere uma ótima oportunidade para apenas sentar e deixar seu cérebro relaxar. Resista ao desejo de fazer algo estimulante e apenas desfrute de um momento de não atividade.
Com o tempo, ficará mais fácil e você descobrirá que terá uma experiência de trabalho muito melhor quando parar de tentar manter o cérebro disparando a 100% o dia todo.
fonte
Concordo com o que o @retracile está sugerindo, mas observe que, de acordo com as regras de programação do Zen, você deve se concentrar em apenas uma tarefa por vez. Responder a chamadas telefônicas, navegar na Web, redes sociais ou até mesmo fazer multitarefa provavelmente reduzirá sua produtividade. Use o pequeno atraso de espera para pensar sobre a tarefa / solução existente e o que você pode fazer para melhorá-la.
fonte
Eu tenho um bar preso ao batente da porta
Eu posso fazer apenas 5 flexões, então leva menos de um minuto. Ou eu faço uma xícara de chá.
fonte
Para mim, a maneira de manter meu foco é ser implacável em manter um espaço de trabalho limpo, qualquer que seja esse espaço de trabalho. Qualquer coisa que não faça parte do meu projeto atual é ruído na relação sinal-ruído consagrada. Uma parte vital da manutenção do foco é manter a relação sinal / ruído alta.
Quando estou codificando, isso significa fechar programas que não usei recentemente, remover regularmente as guias do navegador e manter a área de trabalho livre de itens que não são imediatamente relevantes para meus projetos atuais. Eu uso os atrasos de dez segundos para "fazer as rondas", por assim dizer - fechar guias, fechar programas, excluir arquivos temporários e arquivar o que precisa ser arquivado, etc.
Adquirir o hábito de "fazer as rondas" também ajuda a evitar rastros de coelho, porque me força a avaliar continuamente - e ser lembrado - de qualquer tarefa atual.
Há um pequeno preço a ser pago quando você precisar reabrir uma guia que já abriu cinco vezes hoje ou reiniciar um prompt de comando com privilégios elevados pela 15ª vez, mas alavancar aceleradores como atalhos de teclado pode reduzir isso um preço muito pequeno, de fato.
fonte
Acho que ajuda a rastrear o tempo real em que não trabalho
Você pode usar qualquer número de coisas para isso. Eu sei que existem muitos aplicativos gratuitos por aí que você pode fazer o download para fazer isso por você (não consigo pensar em nada no momento, mas se alguém me der alguns, eu os adicionarei a esta resposta) ou é muito fácil criar o seu próprio. Normalmente, uso uma que criei, que é uma pequena janela no canto da tela, com botões para
Working
/NotWorking
, e clico em qualquer uma que eu esteja sempre que mudo o foco.Um relógio de xadrez também funciona
O próprio ato de rastrear seu tempo faz com que você fique mais ciente de quanto tempo está perdendo para gastar trabalhando, e acho que isso me torna mais produtivo porque me forçarei a deixar essa pergunta super interessante sobre o stackoverflow ou o blog artigo e volte ao trabalho
fonte
Para manter minha atenção, eu uso rabiscos. Eu sempre tenho uma caneta e um bloco de notas atrás do teclado e rabisco. Não é mais que rabiscar em um pedaço de papel sem qualquer significado, mas mantém minha atenção apenas o suficiente e não me distrai para que eu possa voltar ao que estava trabalhando.
Eu fiz isso toda a minha vida inconscientemente, mas recentemente encontrei um wiki sobre isso: http://en.wikipedia.org/wiki/Doodle
fonte
Faça o que fizer , não vá a nenhum site StackExchange. Eles vão te chupar :)
Mais seriamente, navegar na Web enquanto aguarda a conclusão de algo não é bom para a produtividade (a menos que você esteja pesquisando algo relacionado à tarefa atual).
Normalmente, faço algumas tarefas menores que não demoram mais que 1-2 minutos. (limpando alguma coisa, escrevendo comentários, anotações).
fonte
No seu caso, levante-se e ande um pouco. Se é difícil voltar para "a zona", provavelmente é porque você está muito longe. Fazer coisas na web é apenas outra zona e fácil de perder a noção do tempo. Dê ao seu cérebro a pausa que ele claramente quer e dê um passeio, faça um wiz, de preferência em um banheiro ou converse com um colega de trabalho aleatório. Nós fazemos muitas coisas nos bastidores no piloto automático. As pausas não são ruins para a codificação, elas são boas, mas a idéia é parar de disparar em todos os cilindros por um tempo e ver o que os queimadores criam, enquanto a parte mais consciente da sua mente descansa. Os bons desenvolvedores não são calculadoras humanas. Deixe as partes do seu cérebro que executam todas as coisas intuitivas e de correspondência de padrões no piloto automático por um tempo.
Se esse não é apenas um problema de codificação, considere ADD.
fonte
As sugestões para se levantar e caminhar etc. são boas se os seus ciclos forem longos (uma hora ou mais). Mas quando os tempos de ciclo ficam curtos e eu me pego alternando entre o vim e o faço a cada poucos minutos, permaneço na zona permanecendo no pipeline: enquanto o conjunto de compilação ou teste está em execução, eu tendem a voltar e revise o código e comece a trabalhar no próximo bloco que eu faria de qualquer maneira, se a compilação ou os testes forem bem-sucedidos.
fonte
Faça um plano no início de cada dia sobre como usar esse "tempo livre". Isso pode envolver
ou praticamente qualquer coisa realmente.
Tenha esta tarefa secundária sempre aberta em uma janela em algum lugar da área de trabalho. Assim que você pressionar o botão "compilar" (ou o que estiver demorando mais de 30 segundos), alterne para a tarefa secundária e dedique tempo suficiente para realmente avançar, o que pode levar alguns minutos, ou poderia ser menor.
Enquanto você estiver realizando a tarefa secundária, lembre-se de que não é nisso que o seu cérebro deve se concentrar. Continue pensando em programação. Isso não é fácil; você ainda sofrerá com a mudança de contexto com mais frequência.
Se você fizer isso, mesmo se perder o contexto muitas vezes, seu tempo perdido não será realmente um desperdício de tempo e você terá algo para mostrar no final do dia. Mas o mais importante é planejar, no início do dia, qual será a tarefa secundária do dia.
fonte
Suponho que podemos usar o tempo de compilação para documentar o código, limpar o código, alinhar o código corretamente, para que não nos afastemos do IDE e ainda melhoremos a qualidade do código.
fonte
Normalmente, apenas tento procurar bugs, erros de digitação ou maneiras de melhorar o estilo do código enquanto isso. Isso me faz olhar o código, mas eu (sempre) não me distraio com algo interessante. Além disso, isso !
fonte
É concebível que você tenha um pouco de TDAH. Muitas pessoas fazem. Os mecanismos de enfrentamento são dados nas outras respostas (ou possivelmente na medicação).
fonte
Durante esses 10 a 30 segundos, faça algo:
Durante esse período, não faça coisas que você saiba que vão levar muito tempo (a menos que você possa gastar algum tempo), como:
Além disso, não instale algum alarme de áudio para sinalizar o final da compilação. Seus colegas vão gostar.
fonte
Para distração da Internet durante o trabalho em geral, sugiro o Pomodoro Plugin se você estiver usando o Google Chrome
Pessoalmente, acho que você não pode ser produtivo durante todo o seu tempo de trabalho! desde que você está compilando, significa que você fez esforços suficientes para respirar ... para não abusar ou sair do contexto, continue pensando no próximo passo se a compilação não gerar erros ... Ou limpe seu trabalho área: Desktop, Guias, Explorer ...
fonte
O que você está descrevendo é perfeitamente normal.
Quando estávamos fazendo estudos de usabilidade, veríamos os atrasos por ordem de magnitude. Quando um usuário clica em um botão, quanto tempo ele precisa esperar?
Existem muitas exceções, como operações compostas, como digitar.
Quando estávamos realizando um trabalho de desempenho, frequentemente fazíamos a pergunta "Quão rápida deve ser a operação X?" A resposta é que, desde que o usuário perceba um atraso, mais rápido seria melhor.
No seu caso, você está atingindo esse limite de 10s e sua atenção se afasta. A melhor coisa que você pode fazer é reduzir o atraso. Quanto menor o atraso, maior sua produtividade. Imagine que você tinha o código no lado esquerdo da tela e o aplicativo em execução no lado direito. Conforme você edita o código, o aplicativo muda em tempo real. Até chegar lá, você tem espaço para melhorar.
Veja também a publicação recente no blog de Jeff (as toneladas de conteúdo bom que ela leva): http://www.codinghorror.com/blog/2012/03/visualizing-code-to-fail-faster.html
Se você quiser mudar para outra coisa, escolha algo que não envolva seu cérebro da mesma maneira que o trabalho que você estava fazendo. Limpe sua mesa, medite, estique, flexões, arte, olhe pela janela.
fonte
Ao fazer um trabalho ad-hoc no SAS, acho a seguinte linha muito útil:
Isso produz uma caixa de diálogo pop-up quando todo o código anterior terminar de executar. Tenho certeza de que existem equivalentes em outros idiomas. Eu teria postado isso como um comentário à resposta do retracile, mas não tenho reputação suficiente.
fonte