Vous avez déjà essayé d'implémenter quelque chose de simple, mais pour une raison étrange, cela ne fonctionne pas.
Vous essayez donc une solution possible mais quelque chose d'autre ne fonctionne pas. Vous continuez à essayer différentes solutions, mais à chaque fois, quelque chose de différent ne fonctionne pas.
Chaque fois que vous vous rapprochez d'un pas, vous obtenez également un (ou plusieurs) pas de plus pour résoudre ce problème et cela fait maintenant 3 heures que cela aurait dû vous prendre 10 minutes. Et ce n'est toujours pas résolu.
Personne dans votre entreprise ne peut vous aider et vous êtes sur le point de passer votre poing à travers votre écran.
À ce stade, vous êtes tellement frustré que vous ne pouvez plus penser clairement au problème. Que devriez-vous faire à ce stade? Ou que pouvez-vous faire pour éviter d'atteindre ce point?
la source
Réponses:
Bien que ce soit un problème réel, il n’est pas spécifique à la programmation. Cependant, il est à mon humble avis qu’il mérite une place sur ce forum.
Mes suggestions: faites une pause . Promenez-vous, méditez, dormez, faites de l'activité physique * - faites quelque chose de complètement différent pour permettre à votre cerveau de se détendre et de sortir de l'ornière mentale , tout en laissant votre subconscient régler le problème en paix. Habituellement, les résultats sont étonnamment rapides - il vous suffit de vous en informer. Mais si votre esprit conscient répète désespérément les mêmes cycles de pensées encore et encore, il ne pourra écouter rien d'autre.
Les techniques de relaxation et de pleine conscience sont essentielles pour surmonter les réactions de stress et permettent à votre esprit de se concentrer clairement. Et les pratiquer rapporte vraiment. Quand quelqu'un a de l'expérience dans ces domaines, il peut déjà remarquer que le niveau de stress augmente avant que la frustration ne prenne le dessus . Ensuite, on peut interrompre le cycle de pensées, par exemple en prenant quelques respirations profondes ou en pratiquant quelques minutes de relaxation. C'est peut-être tout ce qui est nécessaire à ce stade.
* embrasse ton partenaire, caresse ton animal de compagnie - suggestions de ma femme :-)
la source
Le mot magique est devrait . Frappe ça de ton vocabulaire.
Qui a dit que cela devrait prendre 10 minutes? Qui spécifiquement? Quelle était la base factuelle de leur demande?
Si vous l'avez déjà fait 3 fois auparavant, et chaque fois que vous aviez près de 10 minutes, vous avez une base rationnelle pour un devrait .
Si vous ne l'avez jamais fait auparavant, dire devrait, c'est vous préparer à l'échec. Vous devriez arrêter d'utiliser devrait aujourd'hui.
la source
Trouvez quelqu'un à utiliser comme caisse de résonance
Même si personne n’a une expertise précise de votre travail, c’est une bonne idée de parler de ces sujets fréquemment. Le simple fait d'utiliser quelqu'un comme caisse de résonance peut faire tourner votre esprit. Vous allez penser à de nouvelles choses à essayer. Cela vous permettra également d’éviter un peu de stress et de vous faire un nouvel ami. En général, il est également sain que l’équipe se sente à l'aise de partager et de se sentir compatissante pour créer une atmosphère d’équipe propice à la résolution de ce type de problèmes.
la source
Éloignez-vous un moment et faites autre chose. Passez une bonne nuit de sommeil et revenez au problème le matin.
Aussi, ne vous en faites pas. Votre estimation de dix minutes est clairement incorrecte et cela se produit tout le temps.
la source
J'ai quelques pas quand j'atteins ce point. Normalement, je peux trouver une solution si je prends le temps de prendre du recul et de réfléchir.
Étape 1: Éloignez-vous du problème et effacez votre esprit. Revenez quand vous n'êtes pas frustré et que vous pouvez le regarder avec un esprit neuf.
Étape 2: Retournez au code et voyez s’il vous manque quelque chose. Demandez à quelqu'un de faire un deuxième regard si vous ne pouvez tout simplement pas en faire la tête ou la queue.
Étape 3: Supprimez le code de l'équation. Quel est le problème que vous essayez de résoudre? Écrivez-le sur un morceau de papier ou un tableau blanc. Discutez du problème avec quelqu'un pour obtenir son opinion sur le problème et sa solution.
Étape 4: Contactez la communauté pour voir si elle a une solution ou si quelqu'un d'autre a déjà heurté le même mur.
Celles-ci peuvent être résumées comme suit: «Arrêtez le piratage et sortez du code».
la source
Je voudrais poser une question ici et demander à la communauté de vous aider à la résoudre. Moins stressant de cette façon.
la source
J'ai un autre type de solution - Dormir !!
Lorsque vous êtes frustré par un problème, vous ne pouvez pas en sortir facilement. Il est donc préférable que vous deveniez si fatigué d’essayer de résoudre le problème et de vous endormir.
Lorsque vous vous réveillez, vous ressentez un sentiment de fraîcheur et vous pouvez à nouveau penser clairement au problème. Je le fais parfois.
la source
Ce que j’ai tendance à faire lorsque j’atteins ce stade, c’est trouver quelque chose qui puisse m'aider à regagner un peu de confiance. Cela peut être résoudre un casse-tête Sudoku ou Kenken, effectuer une tâche administrative insensée, telle que remplir ma feuille de temps ou se promener. La clé ici est pour moi d’avoir un sentiment de réussite dans cette distraction, c’est d’aider à me remonter le moral pour pouvoir remonter à cheval et remonter dans le bleu sauvage, y mélanger quelques métaphores.
Pour ce qui est d'éviter de devenir aussi mauvais, je suggérerais probablement une stratégie de boxe chronométrée, de sorte que si vous croyez que quelque chose prend 10 minutes et que c'est soudain une heure plus tard, avec peu de progrès, je m'arrêterais pour une petite pause plutôt que d'essayer de continuer à me cogner la tête contre le mur.
la source
J'ai un nom spécial pour ce genre de situation: bataille de programmation épique .
Si je n'ai pas eu au moins une bataille épique de programmation avec un langage ou un outil de programmation spécifique et si j'ai résolu le problème, je ne peux pas me dire si je peux utiliser un tel langage ou un tel outil de programmation.
Voilà donc ma solution: la mentaliser comme une bagarre et une épreuve de courage et d’endurance . Si je ne peux pas résoudre le problème, alors je " vis pour me battre un autre jour ".
Il peut sembler un peu ridicule, mais ce sera plus amusant et gratifiant de penser en ces termes (comme il était une sorte de jeu , vous devez gagner) au lieu de souffrir tout le chemin parce que vous devez faire face au fait que vous ne sais pas tout .
la source
Eh bien ... Je pense que vous avez besoin d'une nouvelle carrière ou d'un ensemble d'attentes complètement nouvelles. Bien que cela ne soit certainement pas fréquent, prendre 3, 4, 8, 10 ou 40 heures pour faire ce que vous pensiez initialement être un travail de 10 minutes n’est certainement pas inhabituel dans le secteur des logiciels. Je suis sûr que la plupart des développeurs qui travaillent sur des projets de complexité même modérée ont eu des tâches de 2 jours qui se sont transformées en tâches de 1 mois une fois qu’ils ont approfondi et compris le problème.
Pour être un bon développeur, il faut faire preuve de patience, sinon l'ordinateur va gagner et vous allez intégrer une sorte de solution rapide qui semble à peine fonctionner mais qui va inévitablement faire échouer un projet auquel vous n'aviez pas pensé. Si des retards mineurs vous causent beaucoup de stress, alors vous ne devriez probablement pas travailler dans ce domaine.
la source
Deux suggestions:
La personne la plus intelligente que je connaisse, qui a deux doctorats et porte le titre "Chercheur", dans une petite entreprise privée, dit ceci
Si vous y réfléchissez depuis 15 minutes et que vous n'avez pas la réponse, vous vous y trompez.
Arrêtez d'y penser.
Faire une sieste. (faire une promenade ou quelque chose)
La réponse sera là quand vous vous réveillez.
Obtenez le livre "Debugging" de David J Agan . Il vous en apprendra probablement plus sur le débogage afin que, lorsque les choses ne fonctionneront pas, vous pourrez le déboguer rapidement.
la source
Quand je suis confronté à quelque chose qui ne fonctionne pas, je me souviens toujours de cette citation:
la source
faisant écho aux recommandations des autres:
et en ajoutant:
la source
Parfois, il est préférable de ne pas simplement essayer de résoudre un problème. Prenez le temps nécessaire et écrivez dans un pseudo-code ce que vous devez faire. Je sais que des pressions sont exercées pour que les choses soient faites le plus rapidement possible, mais d'après ce que j'ai vu, ce style de codage conduit au type de situation que vous décrivez. Si quelqu'un écrit du code qui ne fonctionnera qu'en fonction d'un petit ensemble de conditions et des modifications apportées, le code se cassera ou fera des choses inattendues.
Aussi (je déteste admettre que mes professeurs avaient raison sur ce point ...), la documentation et les tests unitaires aident. Cela rendrait plus facile de savoir ce qu'une section de code afficherait en fonction de l'ensemble des entrées. Ensuite, il serait plus facile de voir quel effet une modification apportée à cette entrée de section causera.
la source
La fatigue ou le manque de sommeil ne sont jamais un problème avec moi. Je suis plus frustré par le manque d'organisation au sein de l'industrie dans son ensemble et par les normes peu élevées que nous nous sommes fixées. Voici cinq choses qui me frustrent:
Des API compliquées dans leur conception. C'est comme apprendre un tout nouveau langage de programmation. En fait, certaines API sont beaucoup plus difficiles à apprendre que l’apprentissage de nouveaux langages de programmation. J'admire votre intelligence, mais vous auriez pu me faire gagner du temps en indiquant que j'avais besoin d'un doctorat en génie logiciel ou en informatique pour la comprendre.
Manque de bonne documentation. Je ne peux jamais oublier le fait que tant de concepteurs d'API passent beaucoup de temps à créer une API uniquement pour la publier avec une documentation minimale. Merci, mais comment puis-je l'utiliser? que-faire dans cette situation? etc.
Implémentations propriétaires. Certaines mises en œuvre propriétaires sont acceptables, mais si des normes existent, veuillez respecter ces normes dans l’intérêt de l’humanité. Rien de plus frustrant que de passer du temps à se demander pourquoi quelque chose ne fonctionne pas uniquement pour découvrir que la mise en œuvre ne respecte pas les normes habituelles.
Sandboxed environnements / Restrictions. Ok, peut-être que cela aide à garder les mauvais, mais à mon avis, les restrictions sur ce qu'un programmeur peut faire ne limitent que la créativité et le progrès technologique. Beaucoup des bonnes idées que j'ai eues ont été mises au rebut après avoir découvert que je ne suis pas autorisé à faire quelque chose. L’industrie de la programmation est vraiment faite pour la création d’applications quotidiennes, et non de logiciels novateurs. Donc, si vous décidez d’être un programmeur, vous choisissez vraiment d’être un jeune homme moderne, à moins que vous ne souhaitiez devenir un universitaire solitaire.
Discussions modernes. Les gens d'aujourd'hui discutent encore de la laideur de la parenthèse Lisp, du mérite de la propreté des pythons, ou de la disparition de certaines langues comme le cobol ou le fortran, etc. Vraiment les gens? C'est ce dont on discute? Parlons de parallélisme, ou de meilleures façons de concevoir des systèmes plus sûrs, ou de la façon dont la programmation logique peut améliorer nos vies. Cessons de penser comme des codeurs et commençons à penser comme des designers du monde de demain.
Donc, personnellement, je ne programme plus beaucoup à cause de ces frustrations. Jusqu'à ce que le secteur décide qu'il veut faire plus que simplement créer le prochain Facebook ou réinventer le traitement de texte, je suis prêt à tout. Je vais vous laisser les gars. Honnêtement, aucune offense ne voulait dire, c'est de l'argent bien.
la source