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. ! "
Réponses:
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 courirmake; 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 fairemake; 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 unecho -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.
la source
MSG="back to work" && xmessage -buttons ok -default ok -nearmouse "${MSG}" 2> /dev/null
;
au lieu de&&
. Votre deuxième exemple ne fonctionnera queshow_message
s’ilmake
ré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. ;)command; alert
et 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.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.
la source
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.
la source
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:
Il n'y a rien à voir avec ça. La seule chose que vous puissiez faire est d’enlever les distractions elles-mêmes:
Dans votre cas, si c'est le compilateur qui vous distrait, essayez de réduire le temps de compilation en:
la source
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.
la source
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.
la source
J'ai un bar attaché à la porte
Je ne peux faire que 5 tractions, donc cela prend moins d'une minute. Ou je fais une tasse de thé.
la source
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.
la source
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
la source
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
la source
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).
la source
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.
la source
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.
la source
Faites un plan au début de chaque journée pour savoir comment utiliser ce "temps libre". Cela pourrait impliquer
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.
la source
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.
la source
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 !
la source
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).
la source
Pendant ces 10-30 secondes, allez faire quelque chose:
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:
Aussi, n'installez pas une alarme sonore pour signaler la fin de la compilation. Vos collègues l'apprécieront.
la source
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 ...
la source
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?
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.
la source
Lorsque je fais du travail ad-hoc dans SAS, je trouve la ligne suivante très utile:
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.
la source