Como você mantém o foco quando um aspecto específico da programação leva mais de 10 segundos para ser concluído? [fechadas]

141

É 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. ! "

Jer
fonte
24
Eu tenho um problema semelhante (daí esse comentário :)). Descobri que o que realmente ajuda é menos café da manhã ou nenhum. Também tento trabalhar de manhã e agendar reuniões à tarde. Espero que ajude .... oh, olhe um gatinho.
precisa saber é o seguinte
7
Você está lidando com uma forma de procrastinação - o inimigo dos trabalhadores do conhecimento de todo o universo.
Aditya MP
130
Arrrg !! Estou fazendo isso agora - obrigado pelo lembrete - de volta ao trabalho.
Mjhm
8
Normalmente, passo esse tempo nos sites do SE, lendo perguntas, respondendo o que posso para ajudar outros desenvolvedores e aprendendo algo novo no processo.
Bernard
6
Você deve começar a desenvolver para SharePoint b / você c há realmente tem que esperar 20 minutos :)
kev

Respostas:

117

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 corro make; alert. Onde eu puder, também solicitarei um argumento para emitir um som diferente, dependendo do argumento. Assim, eu posso fazer make; 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 um echo -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.

retrátil
fonte
6
Exemplo rápido:MSG="back to work" && xmessage -buttons ok -default ok -nearmouse "${MSG}" 2> /dev/null
sakisk
6
@faif Nesse caso, você deseja usar em ;vez de &&. Seu segundo exemplo será executado apenas show_messagese for makebem-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. ;)
retracile
2
Eu escrevi um programa rápido de linha de comando que me envia um e-mail quando uma determinada tarefa é concluída. Portanto, se eu sair da sala para fazer algumas coisas de TI no meu tempo de espera, meu telefone emitirá um bipe para que eu diga para voltar ao meu escritório e terminar o que eu estava fazendo
Phil
7
+1 por distraí-lo da distração - combater o fogo com fogo! Dessa forma, você não é demitido!
corsiKa
1
O Ubuntu possui uma boa configuração de alias de alerta no .bashrc. Depende da libnotify, mas se estiver instalado, você poderá fazê 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.
Leo
104

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.

eykanal
fonte
37
+1 para fazer uma caminhada / alongamento rápidos. É algo que todos devemos fazer com mais frequência.
quer
2
Isso funciona bem em combinação com a minha resposta ... ajuste os alto-falantes alto o suficiente para ouvi-lo do outro lado da sala em sua caminhada, para que você possa abreviá-lo. (. Tal como a compilação de 10 minutos que termina após 30 segundos devido a um erro de sintaxe)
retracile
1
+1, faça algo que não leva mais que 10s. Beber. Pegue uma goma de mascar. Olhe pela janela, se você tiver sorte o suficiente, algo pode estar acontecendo lá fora. Se você estiver ouvindo música, verifique o que está chegando em sua lista de reprodução ou adicione algumas faixas.
Laurent Couvidou
2
Também vou acrescentar, usar o banheiro :) Muitas vezes, quando me levanto depois de uma longa sessão de codificação, percebo que realmente preciso usar o encanamento, como eles dizem, como dizem. Use essas pausas para cuidar de si mesmo.
eykanal
4
Até você falar com o desenvolvedor no próximo assento / cubo ... agora é um bate-papo de 20 minutos em vez de 20 minutos de navegação.
precisa
29

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.

ZweiBlumen
fonte
10
E você nem precisa se levantar - apenas fechar os olhos para descansá-los por 30 segundos ajudará a mantê-los úmidos e menos cansados.
precisa saber é o seguinte
1
Esta é uma ótima resposta (ajuda a queimar energia nervosa) e a técnica de pomodoro pode funcionar se você for disciplinado o suficiente.
DevSolo
1
+1. Ter uma mesa de altura ajustável também ajuda. Descobri que, quando estou em pé, sou muito mais produtivo, pois durante essas pequenas pausas (compilação etc.), passo um pouco pensando no que estou trabalhando e, assim que a tarefa é concluída, eu vou de volta ao trabalho. Talvez seja só eu, mas gosto de me movimentar bastante quando penso e o ritmo ajuda.
usar o seguinte texto
1
Nunca ouvi falar de Pomorodo, mas sou um defensor da ideia de que você precisa fazer intervalos ocasionais para dar um descanso à sua mente mais consciente e deixar as coisas de trás para trás resolverem algumas coisas por um tempo. Há uma razão pela qual muitos momentos do a-ha acontecem no chuveiro e no banheiro.
amigos estão dizendo
25

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:

  • Um telefonema da sua esposa,
  • Uma ligação para a pessoa de negócios no espaço de escritório próximo ao seu,
  • Um colega pedindo ajuda,
  • Estar com fome,
  • Tendo problemas pessoais,
  • Tendo que trabalhar no código legado escrito por um desenvolvedor inexperiente há dez anos e nunca refatorado,
  • Ter um PC lento ou uma conexão lenta à Internet,
  • Tendo um longo processo de compilação,
  • etc.

Não há nada a ver com isso. A única coisa que você pode fazer é remover as próprias distrações:

  • Não há telefones no seu escritório,
  • Condições de trabalho silenciosas,
  • Computador rápido e acesso à Internet,
  • Processo de compilação rápido,
  • etc.

No seu caso, se é o compilador que o distrai, tente reduzir o tempo de compilação:

  • Reduzindo o tamanho do seu programa (alguns IDEs, por exemplo, permitem descarregar alguns projetos de uma solução, reduzindo fortemente o tempo de compilação),
  • Usando compilações noturnas e compilando menos durante o trabalho,
  • Comprar uma máquina mais rápida (se não houver mais nada a fazer),
  • etc.
MainMa
fonte
9

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.

Alan Barber
fonte
Eu tenho que me perguntar se o ódio à multitarefa é realmente justificado, ou se é talvez apenas um mal-entendido geracional. Certamente, os estudos descobriram uma perda de produtividade durante a multitarefa, mas talvez seja simplesmente uma habilidade que algumas pessoas tenham desenvolvido. Para qualquer nova tecnologia ou processo, tenho certeza que não havia estudos que encontraram-los a ser terrível para a produtividade, antes que as pessoas realmente aprendi como usá-los de forma eficaz
@ JonofAllTrades Não se trata de tecnologia ou aprendizado, é um fato conhecido que o cérebro humano não é projetado biologicamente para nos permitir multitarefa continuamente de fluxos de pensamentos de consciência múltipla. Somos capazes de manipular alguns pensamentos desconectados por curtos períodos de tempo, mas além disso todo o equilíbrio se desintegra. Não é saudável, pois você se desgastará mental e fisicamente. Você já se perguntou por que tantos estão doentes e cansados? Todos nós trabalhamos duro.
Alan Barber
Ah, mas concentrar-se em uma coisa também é cansativo, e nossa atenção se desvia rapidamente. Como sempre, há um meio feliz. Eu suspeito que uma vez possa aprender a realizar multitarefas melhor, e que o fluxo de trabalho ideal para, digamos, uma pessoa de 40 anos nascida em 1950 é diferente de uma pessoa de 40 anos nascida em 1990. Eu não acredito que somos mais doente e cansado agora do que há 100 anos; se alguma coisa, podemos nos dar ao luxo de estar conscientes disso!
8

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.

sakisk
fonte
8

Eu tenho um bar preso ao batente da porta

insira a descrição da imagem aqui

Eu posso fazer apenas 5 flexões, então leva menos de um minuto. Ou eu faço uma xícara de chá.

Lukasz Madon
fonte
quantos programadores na terra pode não puxar para cima eu quero saber de verdade agora
kommradHomer
2
Mais poderia fazer, se pelo menos tentassem fazer uma compilação a cada compilação.
Esko Luontola
3
Portanto, se seu IDE for menos inteligente, você estará em melhor forma. Conclusões interessantes podem levar a isso.
Fiquei bastante entusiasmado usando um Mac antigo com uma placa-mãe que superaquecia constantemente. Malhei enquanto esperava que esfriasse.
Eu amo isto! Quanto mais lustroso o desenvolvedor, o nível! @ # $ São suas ferramentas.
Erik Reppen
6

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.

Caleb
fonte
1
O problema ao fechar as guias do navegador (ou programas, etc.) é que é muito fácil se distrair com elas quando você as fecha. Tais como o retorno a uma pergunta Stackoverflow depois de implementar a resposta, em seguida, vendo um link interessante na barra lateral, e clique sobre ele ....
Bobson
6

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

Rachel
fonte
5

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

Pieter B
fonte
4

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).

Christian P
fonte
1

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.

Erik Reppen
fonte
1

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.

stevegt
fonte
1

Faça um plano no início de cada dia sobre como usar esse "tempo livre". Isso pode envolver

  • atualizando algumas tarefas de documentação,
  • elaborando casos de teste de unidade para a classe que você escreverá a seguir,
  • estudando alguma nova tecnologia que você pretende aprender,
  • escrevendo uma carta para sua tia favorita,

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.

Dawood ibn Kareem
fonte
1

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.

saiy2k
fonte
1

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 !

Sansão
fonte
1

É 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).

Mike Dunlavey
fonte
1

Durante esses 10 a 30 segundos, faça algo:

  • que não requer muita atividade mental
  • abra o código que está compilando e verifique novamente (você pode encontrar algo errado ou uma maneira de melhorá-lo)

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:

  • começando a ler um livro
  • leia e-mails se você souber que pode demorar muito
  • etc

Além disso, não instale algum alarme de áudio para sinalizar o final da compilação. Seus colegas vão gostar.

BЈовић
fonte
12
Pessoalmente, verificar e-mails é uma péssima idéia. Veja bem, isso pode se tornar tão demorado que seus 30 segundos podem facilmente se tornar 30 minutos.
Adrian
Verificar o e-mail no início e no final do dia é uma dessas dicas que muitos executivos gostam de dar. Depende do tamanho da sua empresa, suponho.
Erik Reppen
Se você demorar 30 minutos para verificar seu e-mail - não faça isso. Não vou a uma agência postal buscar meus e-mails, portanto, para mim, é uma operação de 30 segundos - 3 minutos.
BЈовић
1
@ErikReppen, se fizesse isso, não teria emprego.
HLGEM
0

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 ...

M3HD1
fonte
0

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?

  • 0,1 s: sem atraso percebido
  • 1 s: sem alteração de foco
  • 10 s: atenção perdida
  • 1 min: o usuário muda para outra tarefa
  • 10 min: o usuário se levanta e sai

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.

Jay Bazuzi
fonte
0

Ao fazer um trabalho ad-hoc no SAS, acho a seguinte linha muito útil:

dm log 'postmessage "Code finished"' continue;

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.

user46745
fonte