Comment maintenir le focus lorsqu'un aspect particulier de la programmation prend plus de 10 secondes? [fermé]


141

J'ai beaucoup de difficulté à me concentrer sur ce que je fais (programmation) lorsque quelque chose (compilation, temps de démarrage, etc.) prend plus que quelques secondes. De façon anecdotique, il semble que le seuil soit d’environ 10 secondes (et je me souviens d’avoir lu une étude qui disait la même chose, bien que je ne puisse la trouver pour le moment). Donc, ce qui se passe généralement, c’est que j’effectue un changement puis lance le programme pour le tester. Cela prend environ 30 secondes, alors je commence à lire autre chose, et avant que je sache, 20 minutes se sont écoulées, puis il faut (si j'ai de la chance!) Encore plus de 10 minutes pour faire face au changement de contexte pour revenir à la programmation. .

Il n’est pas exagéré de dire que certaines choses qui devraient me prendre des minutes prennent littéralement des heures.

Je suis très curieux de savoir ce que les autres programmeurs font pour combattre cette tendance (ou si je suis unique et qu'ils n'ont pas cette tendance?). Toute suggestion, de quelque type que ce soit, est la bienvenue - quelque chose de "asseyez-vous sur vos mains après avoir appuyé sur le bouton de compilation", en passant par des astuces mentales, à "s'il faut 30 secondes pour démarrer quelque chose pour tester un changement, alors quelque chose ne va pas dans votre processus de développement. ! "


24
J'ai un problème similaire (d'où ce commentaire :)). J'ai trouvé que ce qui aide vraiment, c'est moins de café le matin, voire aucun. J'essaie également de travailler le matin et d'organiser des réunions l'après-midi. J'espère que ça aide .... oh regarde un chat.
DevSolo

7
Vous avez affaire à une forme de procrastination - l'ennemi des travailleurs du savoir de partout dans le monde.
Aditya MP

130
Arrrg !! Je le fais maintenant - merci pour le rappel - de retour au travail.
Mjhm

8
Je passe habituellement ce temps sur des sites de SE, à lire des questions, à répondre au mieux pour aider d'autres développeurs et à apprendre quelque chose de nouveau au cours du processus.
Bernard

6
Vous devriez commencer à développer pour SharePoint, car vous devez attendre 20 minutes :)
kev

Réponses:


117

J'ai écrit un petit utilitaire de ligne de commande appelé « alerte » qui provoquera l'ordinateur bipe / lecture d' un son / etc Ensuite, quand j'ai une commande longue pour exécuter comme un make, je courir make; alert. Là où je peux, je vais aussi demander à ce qu’il prenne un argument pour qu’il émette un son différent en fonction de cet argument. Ainsi, je peux faire make; alert $?et je saurai a) que la construction est terminée et b) qu’elle a réussi ou échoué. Vous n'êtes pas obligé d'être aussi chic avec cela; juste un echo -e "\a"peut suffire.

Si vous voulez être vraiment chic / ennuyeux, utilisez un logiciel de synthèse vocale et ouvrez une boîte de dialogue.

L'idée principale ici est d'interrompre votre distraction dès que la tâche liée au travail est terminée.


6
Exemple rapide:MSG="back to work" && xmessage -buttons ok -default ok -nearmouse "${MSG}" 2> /dev/null
sakisk

6
@faif Dans ce cas, vous souhaitez utiliser ;au lieu de &&. Votre deuxième exemple ne fonctionnera que show_messages’il makeréussit, ce qui n’est pas tout à fait ce que vous voulez. Pour être clair: j'aime bien l'exemple que vous avez donné, je suis juste pointilleux sur les détails de la mise en œuvre. ;)
retracile

2
J'ai écrit un programme en ligne de commande rapide qui m'envoie un e-mail lorsqu'une tâche est terminée. Si je quitte la pièce pour faire quelques tâches informatiques pendant mon temps d'attente, mon téléphone émettra un bip pour me dire de revenir à mon bureau et de terminer. ce que je faisais
Phil

7
+1 pour vous distraire - combattez feu par feu! De cette façon, vous ne serez pas viré!
CorsiKa

1
Ubuntu a un joli alias d’alerte pour l’installation dans .bashrc. Cela dépend de libnotify, mais si elle est installée, vous pouvez le faire command; alertet cela vous donnera une alerte sur le bureau lorsque vous aurez fini de spécifier la commande qui a été finie. Vraiment utile pour de longues compilations ou des tests.
Leo

104

J'ai le même problème, et la solution pour moi a été de passer du temps à faire quelque chose qui ne vous ferait pas sucer. Pour moi, il s'agit généralement (1) de remplir une bouteille d'eau, ou (2) de se lever et faire une promenade de 30 secondes autour du bureau pour me dégourdir les jambes, qui ont de toute façon besoin de bouger. Vous pouvez vous perdre en naviguant sur Internet. vous vous perdez rarement en marchant dans votre propre box.


37
+1 pour faire une promenade rapide / stretch. C'est quelque chose que nous devrions tous faire plus souvent.
Jon Purdy

2
Cela fonctionne bien en combinaison avec ma réponse ... réglez vos haut-parleurs suffisamment fort pour pouvoir l'entendre dans toute la pièce de votre promenade afin que vous puissiez le couper court. (Par exemple, une construction de 10 minutes qui se termine après 30 secondes en raison d'une erreur de syntaxe.)
retracile

1
+1, faites quelque chose qui ne prend pas plus de 10 secondes. Boisson. Prenez un chewing-gum. Regardez par la fenêtre, si vous êtes assez chanceux, quelque chose pourrait se passer à l'extérieur. Si vous écoutez de la musique, vérifiez ce qui se passe dans votre liste de lecture ou ajoutez des pistes.
Laurent Couvidou

2
J'ajouterai aussi, utilisez les toilettes :) Souvent, lorsque je me lève pour la première fois après une longue session de codage, je constate que j'ai vraiment besoin d'utiliser la plomberie, comme on dit, comme on dit. Utilisez ces pauses pour prendre soin de vous.
eykanal

4
Jusqu'à ce que vous parliez au développeur du siège / cube suivant ... c'est maintenant un chat de 20 minutes au lieu de 20 minutes de navigation.
Steven Evers

29

Faites quelque chose pour votre santé:

Debout, éloignez-vous de votre ordinateur et faites des exercices d'étirement des mains et des bras. Cela prendra 2-5 minutes maximum. Votre futur moi ne souffrant pas de RSI vous en remerciera.

En outre, en ce qui concerne la pause de 2 à 5 minutes, lisez la technique de Pomodoro . Ceci est basé sur l’idée de faire de courtes pauses fréquentes pour vous distraire de votre tâche actuelle et laisser les choses s’immiscer un peu. C'est une pause assez courte pour ne pas perdre complètement le fil de vos pensées, mais suffisamment longue pour permettre à votre cerveau de respirer.


10
Et vous n'avez même pas besoin de vous lever - fermer les yeux pour les reposer pendant 30 secondes aidera à les garder humides et moins fatigués.
JBRWilkinson

1
C'est une excellente réponse (aide à brûler de l'énergie nerveuse) et la technique pomodoro peut fonctionner si vous êtes suffisamment discipliné.
DevSolo

1
+1 Avoir un bureau réglable en hauteur aide aussi. J'ai constaté que lorsque je suis debout, je suis beaucoup plus productif, car pendant ces courtes pauses (compilation, etc.), je m'avance un peu en pensant à ce sur quoi je travaille et dès que la tâche est terminée, j'y vais De retour au travail. Peut-être que c'est juste moi, mais j'aime beaucoup bouger quand je réfléchis et que la stimulation aide.
Paperjam

1
Je n'ai jamais entendu parler de Pomorodo, mais je suis depuis longtemps un partisan de l’idée que vous devez prendre des pauses occasionnelles pour donner à votre esprit plus conscient le repos et laisser vos brûleurs de dos régler certaines choses pendant un moment. Il y a une raison pour laquelle de nombreux moments a-ha se produisent dans la douche et la salle de bain.
Erik Reppen

25

Le développement est un processus créatif. Vous ne pouvez pas être constamment productif, surtout s'il y a beaucoup de distractions dans votre bureau. C'est pourquoi le test de Joël suggère des conditions de travail calmes.

Joel Spolsky explique également ce que signifie "ne pas être dans la zone" . Chaque fois que quelque chose vous empêche de faire votre travail, vous devez passer dix minutes, souvent plus, pour revenir dans la zone et redevenir productif.

Il y a beaucoup de distractions:

  • Un coup de téléphone de votre femme,
  • Un appel téléphonique à l’homme d’affaires dans l’espace de travail à proximité du vôtre,
  • Un collègue vous demandant de l'aide,
  • Avoir faim,
  • Ayant des problèmes personnels,
  • Devoir travailler sur du code hérité écrit par un développeur inexpérimenté il y a dix ans et qui n'a jamais été refactorisé,
  • Avoir un PC lent ou une connexion Internet lente,
  • Avoir un long processus de compilation,
  • etc.

Il n'y a rien à voir avec ça. La seule chose que vous puissiez faire est d’enlever les distractions elles-mêmes:

  • Pas de téléphone dans votre bureau,
  • Des conditions de travail calmes,
  • Accès rapide à l'ordinateur et à Internet,
  • Processus de compilation rapide,
  • etc.

Dans votre cas, si c'est le compilateur qui vous distrait, essayez de réduire le temps de compilation en:

  • Réduire la taille de votre programme (certains IDE, par exemple, vous permettent de décharger certains projets d'une solution, ce qui réduit fortement le temps de compilation),
  • Utiliser des compilations nocturnes et en compiler moins pendant votre travail,
  • Achat d'une machine plus rapide (s'il n'y a rien d'autre à faire),
  • etc.

9

Je suppose que je serai le seul à le dire, mais vous devriez simplement vous asseoir et attendre que cela se termine.

Vous devez vous recycler pour ne pas ressentir le besoin d'être constamment actif et de faire des choses. C'est un problème très préjudiciable qui affecte non seulement les développeurs, mais tout le monde. La société est devenue obsédée par le besoin de stimulation constante (visuelle, audio, mentale). Il semble que personne ne puisse supporter d'être inactif plus de 30 secondes sans sortir son téléphone et envoyer des SMS, surfer sur le Web, consulter Facebook, etc.

Si vous appuyez sur Compile et que cela va prendre une minute, considérez cela comme une excellente occasion de vous asseoir et de laisser votre cerveau se détendre. Résistez à l'envie de faire quelque chose de stimulant et profitez simplement d'un moment de non activité.

Avec le temps, cela deviendra plus facile et vous constaterez que votre expérience de travail sera bien meilleure si vous cessez de garder votre cerveau en feu à 100% toute la journée.


Je me demande si la mise au point sur le multitâche est vraiment justifiée, ou si c'est peut-être un malentendu mais de génération en génération. Bien sûr, les études ont révélé une perte de productivité en multitâche, mais peut-être est-ce simplement une compétence que certaines personnes ont développée. Pour toute nouvelle technologie ou processus, je suis certain que des études ont montré que leur productivité était mauvaise, avant que les gens ne

@JonofAllTrades Il ne s'agit pas de technologie ou d'apprentissage, c'est un fait reconnu que le cerveau humain n'est pas conçu biologiquement pour nous permettre de multitâche continuellement des flux de pensées multiples. Nous sommes en mesure de jongler avec un couple de pensées déconnectées pendant de courtes périodes, mais au-delà, tout l’équilibre s’écroule. Ce n'est pas sain car vous vous épuiserez mentalement et physiquement. Vous êtes-vous déjà demandé pourquoi tant de gens sont malades et fatigués? Nous travaillons tous trop fort.
Alan Barber

Ah, mais se concentrer sur une chose est aussi épuisant, et notre attention se perd rapidement. Comme toujours, il y a un juste milieu. Je suppose qu’une fois, on peut mieux apprendre à effectuer plusieurs tâches en même temps et que le flux de travail idéal pour, par exemple, un homme de 40 ans né en 1950 est différent de celui de 40 ans né en 1990. Je n’achète pas que nous plus malade et fatigué maintenant qu'il y a 100 ans; si quelque chose, nous pouvons nous permettre le luxe d'être conscients de cela!

8

Je suis d'accord avec ce que @retracile suggère, mais notez que, selon les règles de programmation Zen, vous ne devez vous concentrer que sur une tâche à la fois. Répondre à des appels téléphoniques, naviguer sur le Web, sur les réseaux sociaux ou même effectuer plusieurs tâches à la fois réduira votre productivité. Utilisez le court délai d’attente pour réfléchir à la tâche / solution existante et à ce que vous pouvez faire pour l’améliorer.


8

J'ai un bar attaché à la porte

entrez la description de l'image ici

Je ne peux faire que 5 tractions, donc cela prend moins d'une minute. Ou je fais une tasse de thé.


combien de programmeurs sur terre peuvent tirer je me demande pour de vrai
kommradHomer

2
On pourrait en faire plus si au moins ils essayaient de tirer chaque compilation.
Esko Luontola

3
Donc, si votre IDE est moins intelligent, vous êtes en meilleure forme. Des conclusions intéressantes peuvent en résulter.

Je me suis fait beau en utilisant un ancien Mac avec une carte mère qui surchauffait constamment. J'ai travaillé en attendant qu'il refroidisse.

J'aime cela! Plus le développeur est optimiste, plus le niveau est ses outils.
Erik Reppen le

6

Pour moi, la meilleure façon de rester concentré est de rester impitoyable pour maintenir un espace de travail propre, quel que soit cet espace de travail. Tout ce qui ne fait pas partie de mon projet actuel est le bruit dans le rapport signal / bruit épuré. Un élément essentiel du maintien de la focalisation consiste à maintenir le rapport signal sur bruit élevé.

Lorsque je suis en train de coder, cela signifie fermer des programmes que je n’ai pas utilisés récemment, élaguer régulièrement les onglets de mon navigateur et éviter que mon bureau ne contienne des éléments qui ne sont pas immédiatement pertinents pour mes projets actuels. J'utilise les dix secondes de retard pour "faire le tour", pour ainsi dire - fermer des onglets, fermer des programmes, supprimer des fichiers temporaires et archiver ce qui doit être archivé, etc.

Prendre l'habitude de "faire le tour" aide également à éviter les traînées de lapins, car cela me force à évaluer en permanence - et à me rappeler - toutes les tâches en cours.

Il y a un petit prix à payer lorsque vous devez rouvrir un onglet que vous avez déjà ouvert 5 fois aujourd'hui ou relancer une invite de commande avec des privilèges élevés pour la 15ème fois, mais l'utilisation d'accélérateurs tels que les raccourcis clavier peut réduire ce risque à 15%. un très petit prix en effet.


1
Le problème avec la fermeture des onglets du navigateur (ou des programmes, etc.) est qu’il est trop facile d’être distrait par ceux-ci lorsque vous les fermez. Comme revenir à une question Stackoverflow après avoir implémenté la réponse, puis voir un lien intéressant dans la barre latérale et cliquer dessus ....
Bobson

6

Je trouve qu'il est utile de suivre le temps que je passe à ne pas travailler

Vous pouvez utiliser n'importe quel nombre de choses pour cela. Je sais qu'il existe de nombreuses applications gratuites que vous pouvez télécharger pour le faire à votre place (je ne peux en penser à aucune idée pour le moment, mais si quelqu'un m'en donne, je les ajouterai à cette réponse), ou c'est très facile de créer le vôtre. J'utilise généralement celui que j'ai créé, qui est une petite fenêtre dans le coin de mon écran avec des boutons pour Working/ NotWorking, et je clique simplement sur celui sur lequel je suis allumé chaque fois que je change de focus.

Une horloge d'échecs fonctionne aussi

Le simple fait de suivre votre temps vous rend plus conscient du temps que vous perdez et que vous devriez consacrer au travail. Je trouve que cela me rend plus productif, car je me force à quitter cette question ou ce blog super intéressant. article, et se remettre au travail


5

Pour garder mon attention, j'utilise des gribouillis. J'ai toujours un stylo et un bloc-notes derrière mon clavier et griffonnent. Il ne s’agit pas plus que de trébucher sur une feuille de papier sans aucune signification, mais cela retient mon attention suffisamment pour ne pas me distraire et je peux donc revenir immédiatement à ce sur quoi je travaillais.

J'ai fait cela inconsciemment toute ma vie, mais j'ai récemment trouvé un wiki à ce sujet: http://en.wikipedia.org/wiki/Doodle


4

Quoi que vous fassiez, n'allez sur aucun des sites StackExchange. Ils vont vous sucer :)

Plus sérieusement, naviguer sur le Web en attendant que quelque chose se termine n'est pas bon pour la productivité (à moins que vous ne cherchiez quelque chose en rapport avec la tâche en cours).

Je fais habituellement quelques tâches mineures qui ne prendront pas plus de 1-2 minutes. (nettoyer quelque chose, écrire des commentaires, des notes).


1

Dans votre cas, levez-vous et promenez-vous un peu. S'il est difficile de revenir dans "la zone", c'est probablement parce que vous êtes trop loin. Faire des choses sur le Web n'est qu'une autre zone et il est facile de perdre du temps. Donnez à votre cerveau la pause qu'il veut clairement et aller faire une promenade, faire un wiz, idéalement dans une toilette, ou parler à un collègue au hasard. Nous faisons beaucoup de choses en coulisse sur le pilote automatique. Les pauses ne sont pas mauvaises pour le codage, elles sont bonnes, mais l’idée est d’arrêter de tirer pendant un moment et de voir ce que votre dos brûle pendant que la partie la plus consciente de votre esprit la repose. Les bons développeurs ne sont pas des calculatrices humaines. Laissez les parties de votre cerveau qui effectuent toutes les tâches intuitives et de correspondance de motifs du pilote automatique agir pendant un moment.

S'il ne s'agit pas simplement d'un problème de codage, vous pouvez envisager d'ajouter.


1

Les suggestions pour se lever et se promener, etc. sont bonnes si vos cycles sont longs (environ une heure). Mais lorsque les temps de cycle sont courts et que je me trouve à faire des allers-retours entre vim et faire toutes les quelques minutes, je reste dans la zone en restant dans le pipeline: pendant que la suite de construction ou de test est en cours d'exécution, j'ai tendance à revenir en arrière et Passez en revue le code, puis commencez à travailler sur le prochain morceau que je ferais quand même si la construction ou les tests réussissent.


1

Faites un plan au début de chaque journée pour savoir comment utiliser ce "temps libre". Cela pourrait impliquer

  • rattrapage sur certaines tâches de documentation,
  • élaborer des cas de tests unitaires pour la classe que vous allez écrire ensuite,
  • étudier une nouvelle technologie que vous vouliez apprendre,
  • écrire une lettre à votre tante préférée,

ou à peu près n'importe quoi vraiment.

Laissez cette tâche secondaire toujours ouverte dans une fenêtre quelque part sur votre bureau. Dès que vous appuyez sur le bouton "Compiler" (ou tout ce qui vous prend plus de 30 secondes), passez à la tâche secondaire et prenez suffisamment de temps pour avancer, ce qui peut prendre quelques minutes. ou pourrait être moins.

Pendant que vous accomplissez la tâche secondaire, gardez à l'esprit que ce n'est pas sur quoi votre cerveau devrait se concentrer. Continuez à penser à la programmation. Ce n'est pas facile vous souffrirez toujours plus souvent du changement de contexte.

Si vous faites cela, même si vous perdez plusieurs fois le contexte, votre temps perdu n'est pas réellement du temps perdu, et vous avez quelque chose à montrer à la fin de la journée. Mais le plus important est de planifier, au début de la journée, quelle sera la tâche secondaire de la journée.


1

Je suppose que nous pouvons utiliser le temps de compilation pour documenter le code, le nettoyer, l’aligner correctement, afin de ne pas nous éloigner de notre IDE et d’améliorer encore la qualité du code.


1

D'habitude, j'essaie simplement de rechercher des bugs, des fautes de frappe ou des moyens d'améliorer le style du code entre-temps. Cela me fait regarder le code, mais je ne suis pas toujours distrait par quelque chose d'intéressant. Aussi, ça !


1

Il est concevable que vous ayez un peu de TDAH. Beaucoup de gens le font. Les mécanismes d'adaptation sont tels que décrits dans les autres réponses (ou éventuellement les médicaments).


1

Pendant ces 10-30 secondes, allez faire quelque chose:

  • cela ne nécessite pas beaucoup d'activité mentale
  • ouvrez le code que vous compilez et vérifiez-le à nouveau (vous pourriez trouver quelque chose qui ne va pas, ou un moyen de l'améliorer)

Pendant ce temps, ne faites pas de choses qui vous fassent perdre du temps (sauf si vous pouvez vous permettre de passer du temps) comme:

  • commencer à lire un livre
  • lire des courriels si vous savez que cela peut vous prendre beaucoup de temps
  • etc

Aussi, n'installez pas une alarme sonore pour signaler la fin de la compilation. Vos collègues l'apprécieront.


12
Personnellement, consulter ses emails est une idée terrible. Vous voyez, cela peut devenir tellement insensé que vos 30 secondes peuvent facilement devenir 30 minutes.
Adrian

La vérification des courriels au début et à la fin de la journée est l’une des astuces que beaucoup de types de dirigeants aiment donner. Cela dépend de la taille de votre entreprise, je suppose.
Erik Reppen

S'il vous faut 30 minutes pour consulter votre courrier électronique, ne le faites pas. Je ne vais pas dans un bureau de poste pour récupérer mes courriels, donc pour moi, le temps de fonctionnement est de 30 secondes - 3 minutes.
Février

1
@ErikReppen, si je le faisais, je n'aurais pas de travail.
HLGEM

0

Pour les distractions sur Internet pendant le travail en général, je suggère le plug- in Pomodoro si vous utilisez Google Chrome.

Personnellement, je pense que vous ne pouvez pas être productif pendant tout votre temps de travail! puisque vous êtes en train de compiler, cela signifie que vous avez fait suffisamment d’efforts pour reprendre votre souffle ... pour ne pas abuser du contexte ni sortir du contexte, continuez à penser à la prochaine étape si la compilation ne génère pas d’erreurs ... Ou nettoyez votre travail zone: bureau, onglets, explorateur ...


0

Ce que vous décrivez est parfaitement normal.

Lorsque nous réalisions des études de convivialité, nous examinions les retards par ordre de grandeur. Lorsqu'un utilisateur clique sur un bouton, combien de temps doit-il attendre?

  • 0,1 s: aucun retard perçu
  • 1 seconde: pas de changement de focus
  • 10 secondes: attention perdue
  • 1 min: l'utilisateur passe à une autre tâche
  • 10 min: l'utilisateur va se lever et partir

Il existe de nombreuses exceptions, telles que les opérations composées, telles que la frappe.

Lorsque nous travaillions sur la performance, nous posions souvent la question "à quelle vitesse l'opération X devrait-elle être?" La réponse est que tant que l'utilisateur peut percevoir un retard, mieux ce serait plus vite.

Dans votre cas, vous atteignez le seuil des 10 secondes et votre attention se dissipe. La meilleure chose à faire est de réduire le délai. Plus le délai est court, plus votre productivité est grande. Imaginez que vous ayez le code à gauche de votre écran et l'application en cours d'exécution à droite. Lorsque vous modifiez le code, l'application change en temps réel. Jusqu'à ce que vous soyez là, vous avez une marge d'amélioration.

Voir aussi le récent article de blog de Jeff (les tonnes de bon contenu auquel il aboutit): http://www.codinghorror.com/blog/2012/03/visualizing-code-to-fail-faster.html

Si vous voulez passer à autre chose, choisissez quelque chose qui n'engage pas votre cerveau de la même manière que le travail que vous faisiez. Nettoyez votre bureau, méditez, étirez-vous, faites des pompes, regardez par la fenêtre.


0

Lorsque je fais du travail ad-hoc dans SAS, je trouve la ligne suivante très utile:

dm log 'postmessage "Code finished"' continue;

Cela produit une boîte de dialogue contextuelle une fois que tout le code précédent a été exécuté. Je suis sûr qu'il y a des équivalents dans d'autres langues. J'aurais posté ceci comme un commentaire pour la réponse de retracile mais je n'ai pas assez de réputation.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.