Je suis à un an de mon diplôme universitaire et je suis vraiment impatient de résoudre des problèmes pratiques. Surtout ceux qui ne sont pas anodins et qui nécessitent un peu de recherche et beaucoup de réflexion.
Mais en même temps, c’est aussi ma plus grande crainte: faire face à un problème que je suis incapable de résoudre, peu importe les efforts que je fais. Et avec la pression de fournir du code dans les délais imminents, cela semble un peu effrayant de le voir depuis les terrains de jeu sécuritaires de l'université (où le pire qui puisse arriver est que vous devez refaire un cours ou un examen).
Donc, pour ceux qui sont dans l'industrie depuis longtemps, que se passerait-il si on vous demandait de résoudre un problème que vous ne pouviez pas? Est-ce arrivé, et si oui, que s'est-il passé? Ont-ils simplement laissé tomber et ont dit "Oh, bon, suppose que nous pouvons faire avec quelque chose d'autre"? Y a-t-il eu des conséquences? Avez-vous été réprimandé ou même renvoyé?
la source
Réponses:
Tout d’abord, votre peur est très saine et normale. Voici mes réflexions après environ 15 ans dans l’industrie du logiciel.
Voici quelques questions à vous poser:
1) Tout d’abord, assurez-vous de bien comprendre le problème. Il n'y a pas de questions stupides. Comprenez-vous ce que votre client / patron vous demande par rapport à ce dont il a besoin?
2) Cela va arriver. "Construis-moi un pont d'ici demain" . Assurez-vous que vous savez pertinemment qu'un problème est insoluble dans le cadre de vos contraintes. Votre client / responsable peut être flexible en termes de temps / budget et ceux-ci peuvent être modifiés pour vous donner plus de temps / budget.
3) Si le problème est compréhensible et que les contraintes sont raisonnables, et qu’il existe une technologie qui peut le résoudre, mais que vous n’en savez pas assez… C’est ce à quoi
StackOverflow
Internet est destiné. Assurez-vous de faire vos recherches en premier. Essayez de poser des questions explicites qui ont des réponses quantifiables. Demandez à vos pairs. Avoir une session de conception.4) Ceci est une variante de la réponse numéro 2. Il semble que votre client / responsable demande l'impossible. Fais quelques recherches. Ne dites jamais que le problème est insoluble, à moins que vous sachiez exactement pourquoi et que vous puissiez clarifier.
5) ROI représente le retour sur investissement. Cela fait référence à un investissement dans le temps. Ton temps!. Le problème est-il suffisamment important à résoudre pour justifier le temps qu'il vous faudra pour faire des recherches et résoudre le problème? Discutez-en avec votre client / patron
6) Est-ce un vrai problème? Les clients, souvent, comprennent ce qu'ils veulent, mais ne comprennent pas nécessairement ce dont ils ont besoin. Essayez de comprendre ce dont votre client / patron a réellement besoin et discutez-en avec lui.
J'espère que ces directives vous aideront.
la source
Deux choses à retenir si vous êtes confronté à un problème apparemment insoluble:
Dites aux autres que vous êtes bloqué le plus tôt possible. Cela les aidera à ajuster l'estimation à temps avant qu'il ne soit trop tard.
Si vous voyez une façon de résoudre un problème ne fonctionne pas - laissez tomber avant d'avoir perdu trop de temps. Demandez de l'aide ou essayez une approche différente. Il ne s'agit pas de prouver que vous êtes dur et intelligent, mais de faire avancer les choses.
la source
Je vais à StackOverflow ;)
Mais blague à part, ne craignez pas l'inconnu. Toute votre carrière sera confrontée à l'inconnu, car si vous l'avez déjà résolue, ce ne sera pas un problème la prochaine fois.
la source
Je vais devoir y aller avec une réponse simple: je demande de l'aide. Tout comme les autres me demandent parfois de l’aide quand ils sont coincés à essayer de trouver une solution à quelque chose.
Edit: je dois mentionner que je trouve souvent la solution simplement en décrivant le problème à un collègue, ou parfois même lorsque je commence à poser une question sur des sites comme StackOverflow.
la source
Regarde sous différents angles
J'ai rencontré cela plusieurs fois, généralement ce qui se passe est:
Enfin, vous optez pour ce que vous ne voulez pas faire ->
"Le sale bidouille"
Cela fonctionne, mais vous vous sentez sale ...
la source
D'habitude, je demande à quelqu'un de plus intelligent que moi de le réparer. Il fait et il est mon patron. Je me sens stupide. Nous passons.
la source
Cela dépend de la raison pour laquelle vous êtes incapable ...
logiquement impossible: discutez-en avec celui qui a rédigé les exigences, il y a peut-être un malentendu. Exemple: à un moment donné, la spécification indique que l'application doit avoir une apparence native sur toutes les plates-formes (Windows / Linux / Mac), et à un autre endroit, elle indique que le programme doit être exactement identique sur toutes les plates-formes.
techniquement impossible: Réévaluez les outils avec lesquels vous travaillez, ils ne sont peut-être pas appropriés. Discutez du problème avec vos pairs et le chef de projet. Exemple: exigences en temps réel dans un environnement où la récupération de place peut arrêter l'exécution pour une durée indéterminée
performances insuffisantes: vous utilisez peut-être le mauvais algorithme ou le problème est trop difficile (par exemple, NP-difficile) et la configuration requise n'en tient pas compte. Réévaluez l’algorithme que vous utilisez, il existe peut-être un moyen plus rapide. Discutez du problème avec vos pairs et le chef de projet. Envisagez de passer à une heuristique suffisamment bonne au lieu d'un résultat parfait. Exemple: optimisation de chemin avec des dizaines voire des centaines de nœuds
vous ne savez tout simplement pas comment faire: demandez à vos pairs, demandez à stackoverflow, recherchez sur Internet. Contactez le support de l'outil / lib que vous utilisez. Discutez-en avec le chef de projet.
cela devrait fonctionner, mais cela ne fonctionne pas, et vous ne savez pas pourquoi: refacturez le programme pour le rendre plus testable. Considérez les conditions de course, elles sont souvent la cause des bogues difficiles à trouver. Demandez de l'aide à vos pairs, quatre yeux en voient plus que deux. Recherchez sur Internet des bogues connus dans les outils / bibliothèques que vous utilisez.
la source
Je pense que d’autres personnes soulignent avec gentillesse comment traiter ce problème de manière professionnelle. Je voudrais dire comment gérer le sentiment personnel comme la frustration, la peur.
En bout de ligne, vous serez fin, même si vous ne résolvez pas les problèmes à temps. La vie continue.
Parfois, le calendrier serait poussé. Le projet serait soit réussi soit échoué. Vous pouvez être viré et avoir ensuite un excellent travail. Tu ne sais jamais.
Ne vous méprenez pas. Cela ne signifie pas qu'il est acceptable de laisser le problème être là. Tout ce que nous pouvons faire, c'est faire de mon mieux et laisser tomber.
Parfois, je pense que la frustration, la peur de ne pas résoudre le problème est ma vie de développeur moyen.
la source
Je ne suis pas sûr que je dirais que je ne pourrais pas résoudre un problème, mais il y a eu des cas où j'ai renoncé à essayer de résoudre un problème. Après avoir passé de nombreuses heures à essayer de corriger un bogue ou d’implémenter une fonctionnalité qui ne me dit rien du tout, je peux en informer un membre de mon équipe, un chef d’équipe ou un responsable: "Je suis bloqué à ce sujet. voulez-vous que je fasse? " afin qu'ils sachent où je suis. Ils pourraient dire: "Continuez, nous pensons que vous l'obtiendrez" ou "Passez à autre chose qui n'est pas si important" ou à quelques autres choses et ensuite je saurai ce que je devrais faire.
J'ai eu des bugs que je n'ai pas résolus et des fonctionnalités qui n'ont pas été réalisées, bien sûr. Bien que je puisse essayer de faire quelque chose, tout n’est pas en mon pouvoir pour le résoudre dans un délai raisonnable. Un point clé dans cette démarche est la communication afin que vos supérieurs sachent où vous vous trouvez.
Cela dit, je me suis souvent heurté à des circonstances assez spéciales:
Lorsque je travaillais dans une grande banque canadienne à Toronto, on me demandait de faire toutes sortes de choses que je ne savais pas faire quand on me confiait cette tâche. Par exemple, on m'a demandé de tester cette méthode de sécurisation des ordinateurs portables où les touches "Esc" et "Entrée" étaient permutées au démarrage et avec la séquence de touches correcte, l'ordinateur portable serait de nouveau utilisable, ce qui semblait étrange d'essayer de comprendre. Comment cela peut-il fonctionner avec les utilisateurs? " Il y avait d'autres tâches pour lesquelles je n'avais tout simplement pas le matériel ou d'autres ressources pour le faire. En même temps, c’était plutôt instructif, car cela me donnait beaucoup de choses à noter sur toute situation future en matière d’emploi afin de prévenir les ennuis. Des choses comme assurer quand je suis payé, comment est mon temps suivi,
Alors que je travaillais chez un fournisseur de services applicatifs à Calgary, j'ai eu pour projet d'essayer de créer une copie d'un autre site Web dans notre application interne que nous vendions en tant que service. Un point important ici est que je n’ai pas été informé de la chronologie ou des suggestions sur ce qu’il faut faire en premier lieu, juste de la recherche générale et un mois plus tard, on me demandait une démonstration alors que j’avais une mauvaise réaction à certains médicaments contre la douleur. Cette réaction a duré une semaine au cours de laquelle j'ai quitté le travail tout à coup, puis la semaine suivante, je suis allée à un événement Microsoft qui était un peu la dernière goutte, le jour suivant. Il convient de noter ici que j’ai eu une relation plutôt médiocre avec mon patron car chaque fois qu’il s’approchait de chez moi, ma pensée immédiate était: «Maintenant, qu’est-ce qui ne va pas?
la source
Comme d'autres l'ont dit, la communication est essentielle: informez les personnes (qui sera touché) lorsque vous êtes bloqué: votre patron, les membres de l'équipe, les clients, etc.
Un collègue acharné m'a une fois inculqué que le succès repose sur deux choses:
J'imagine que le fait d'avoir de bonnes relations dépend de la qualité de la communication et de la définition des attentes dès le départ.
la source
Je suis le principe Polya:
La beauté du principe réside dans le fait qu’à un moment donné, il y aura un problème suffisamment petit et que vous pourrez résoudre ce qui, espérons-le, si vous agissez correctement, vous permettra d’amorcer une solution au problème initial. Ce principe ne m'a pas encore manqué.
la source
Les réponses " demander de l'aide " sont certainement correctes. Il est très peu probable que vous soyez la première personne à rencontrer un problème particulier.
Mais comme expérience, que se passe-t-il s'il n'y a pas d'aide? Que faire si vous devez résoudre le problème vous-même? La capacité la plus importante de résolution de problèmes est la capacité d' identifier et de contester vos propres hypothèses . Si vous pouvez énumérer vos hypothèses sur un problème un par un et les éliminer à tour de rôle, vous finirez par tomber sur l'hypothèse erronée et de nouvelles possibilités de solution s'ouvrent à vous.
(À propos, c’est aussi la meilleure approche lorsque vous ne trouvez pas de réponse à un problème que vous rencontrez dans un entretien d’emploi. Énumérez verbalement vos hypothèses, déterminez laquelle est fausse, puis ré-attaquez le problème. toutes les "questions pièges" sont basées sur des hypothèses naturelles mais erronées).
la source
Demander de l'aide est vraiment la meilleure solution, mais voici un peu plus qui peut être utile.
Oui, ça m'est arrivé, et non, je n'ai jamais été réprimandé ou renvoyé pour ça, parce que ...
Dans l’industrie, il s’agit de savoir si vous résolvez les problèmes dans les délais et dans les limites du budget, et les bons dirigeants comprennent que ce n’est pas toujours possible.
Qu'est-ce qui se passe réellement, c'est que votre manager dit: "J'aimerais que vous fassiez X, que pensez-vous que cela va prendre?" Et vous pouvez donner beaucoup de réponses. Les bons incluent:
C'est au responsable de décider si et comment procéder. S'ils choisissent de procéder, il vous incombe de respecter vos estimations ou d'informer le responsable en cas d'empêchement. Tant que vous faites cela, dans une entreprise raisonnable, il n'y aura pas de conséquences négatives.
Bien sûr, il y a aussi des entreprises déraisonnables qui ne vous donnent pas le temps ni les ressources pour faire votre travail. J'ai travaillé sur certaines de ces tâches et tout le monde s'est vu imposer des problèmes qui ne pouvaient pas être résolus dans les limites des contraintes de l'entreprise. L'un d'entre eux a mis à pied environ 98% du personnel de la programmation au bout de huit mois, ce qui était certainement une conséquence, mais cela ne m'était pas personnellement destiné, et je considère toujours que mon patron et son supérieur sont de bons amis.
la source
Vous rencontrerez de nombreux types de problèmes et beaucoup ont différentes manières de les résoudre.
Un type de problème est l’implémentation de quelque chose que vous n’avez jamais vu auparavant, comme une API de son étrange ou autre. Dans ce cas, je demanderais à SO, sérieusement.
Un autre est un très gros problème à résoudre. Ce type de problème peut être abordé de manière itérative. Ils vous disent "Implement Humongous". Vous le regardez et écrivez autant d'étapes que vous pouvez comprendre. Ensuite, vous décomposez les étapes compliquées en étapes plus petites. Lorsque vous êtes obligé de penser à de plus petites étapes, elles deviennent plus claires. Si vous rencontrez un problème technique, essayez une mise en œuvre de test et demandez-y si nécessaire.
Les requêtes mal spécifiées sont l’un des problèmes les plus ennuyeux. Ils veulent juste quelque chose qui fait "x" et ne vous disent pas comment faire. Pour ceux-ci, une bonne approche consiste à créer un prototype d’interface (généralement une interface graphique) et à laisser l’utilisateur en jouer.
Ensuite, il y a des contraintes de temps qui ne peuvent pas être respectées. Cela implique souvent de modifier les attentes et de fournir des prototypes fonctionnels.
Vous trouverez généralement votre chemin à travers les choses d'une manière ou d'une autre. C'est effrayant, mais une fois que vous y êtes, vous pouvez toujours trouver un moyen de vous en sortir.
Votre meilleur choix peut être de simplement peindre les mots «Ne paniquez pas» à l’extérieur de votre ordinateur portable. Et n'oublie pas ta serviette.
la source
Ma séquence de résolution de problèmes (chaque prochain spet est effectué uniquement si le précédent ne fonctionnait pas):
Les problèmes désagréables sont résolus aux étapes 5 et 6.
Il faut généralement un certain temps pour résoudre les problèmes vraiment graves (l’étape 7 est LA solution à la plupart des problèmes qui semblent "impossibles".). Et je le pense vraiment - passez à une autre tâche pour le reste de la journée et essayez de résoudre le problème le lendemain matin. Cela fait des merveilles.
Et alors seulement vient l'étape 8.
la source
Je n'ai entendu parler d'aucun événement comme celui-ci. Tout d'abord, vous ne rencontrez jamais un problème qui ne peut pas être résolu du tout. Le problème peut être difficile et prendre du temps à résoudre. Quand on vous posera un problème, vous devrez dire que c'est le temps qu'il me faudra. Si, dans vos recherches, vous pensez que ce problème ne peut vraiment pas être résolu, vous devez lever le drapeau et informer votre responsable que ce problème prendra plus de temps ou est vraiment difficile à résoudre. Tout est question de calendrier. Si vous promettez quelque chose et que vous ne pourrez pas livrer, alors c'est un problème. Mais si vous continuez à parler de votre statut et de vos préoccupations, il incombe au responsable de s'en occuper. Il devrait vous rediriger vers la personne appropriée qui peut vous aider, ou ajuster le calendrier.
la source
Il y a de bons conseils ici! Mes deux cents valent; Ne soyez pas submergé par le gros problème, n'oubliez pas que la résolution de ce problème est une tâche passionnante et complexe, elle consiste à le décomposer en une série de sous-problèmes gérables et surtout compréhensibles, qui se décomposent encore et encore en problèmes plus petits. sous-problèmes. Tout bon programmeur le fait généralement minute par minute lors de la création de code (à l’aide de fonctions, méthodes, sous-routines, etc., pour aider à réduire la complexité globale d’une section de code). Cette méthodologie s’applique généralement à tout gros problème que vous rencontrez. visage dans la vie (pas seulement au travail).
la source
Cela dépend évidemment du problème spécifique. Mais la réponse peut être l'une des suivantes:
Le numéro 3 peut nécessiter une pause du problème et le revoir des semaines ou des mois plus tard. Cela aide souvent.
la source
Dans mon expérience, il y a parfois un problème que vous ne pouvez pas résoudre, au moins dans le temps imparti. Donc, demander de l’aide dès que possible, après un effort de résolution, vous avez échoué .
Rappelez-vous la règle de base: regardez toujours la raison pour laquelle le patron vous a engagé. Faites tout ce que vous pensez pouvoir faire pour obtenir le meilleur résultat possible, et il s’agit parfois d’un premier rapport d’échec (bien meilleur qu’un rapport tardif).
En bref, si vous pensez que vous pouvez trouver la solution, n'hésitez pas à essayer, mais donnez à votre chef une estimation du risque et du coût en temps. C'est leur problème maintenant.
la source
Si des projets de plusieurs millions de dollars peuvent échouer, même avec des personnes expérimentées, ne vous inquiétez pas de votre échec, car vous êtes toujours étudiant. J'ai eu un problème sur lequel travailler et j'ai constaté que si c'est quelque chose sur lequel vous êtes bloqué, vous devez enregistrer chaque tentative faite pour le résoudre.
Qui aide:
la source
Mon expérience est qu'un nouveau diplômé n'est pas jeté dans les profondeurs. Au lieu de cela, vous ferez probablement partie d'une équipe qui comprend également des développeurs expérimentés.
Mon conseil serait: utilisez-les. Lorsque vous ne savez pas comment résoudre un problème, ou si vous souhaitez savoir si votre solution va dans la bonne direction, discutez-en avec eux. Et si vous sentez que vous êtes coincé quelque part, attrapez l'un des gars expérimentés, expliquez votre problème et demandez de l'aide.
Le plus souvent, le simple fait d’expliquer votre problème révélera une solution. Expliquer votre solution peut également révéler des défauts.
la source
Cela se produit souvent parce que vous n'avez pas défini le problème correctement et avec précision. Peut-être essayez-vous de résoudre une solution préconçue au lieu du problème lui-même.
Le problème est seulement ce que vous observez, pas ce que vous imaginez.
"Ma voiture sanglante ne démarre pas" est un problème. "La batterie est à plat." est une solution préconçue au problème des démarreurs. Même tester la batterie ne prouve pas que c'est la seule cause du problème. À moins que vous ayez réellement rechargé ou remplacé la batterie et démarré la voiture avec succès, vous n’avez aucune preuve que la batterie est la cause du problème.
Simplifier et continuer à simplifier. Décomposez-le en petites parties. Si vous ne pouvez pas résoudre ces problèmes, écrasez-les. Vous vous sentirez mieux. Puis décomposez-le en différentes petites pièces. Chacune de ces parties doit être un phénomène observable.
la source