c'est une excellente question. Et je pense que ce n'est pas seulement les programmeurs seniors qui se heurtent à cela - y remédier tôt peut être un excellent moyen pour un apprenant d'accélérer son développement de compétences.
Il y a deux côtés à cette question - une qui est mauvaise et une qui est en fait bonne .
Mauvais - Choisir la mauvaise solution
Voici un exemple - en tant que développeur inexpérimenté, vous devrez peut- être que vraiment résolu deux problèmes avant, les problèmes A et B . À ce stade, vous savez qu'il ya des problèmes que vous ne savez pas, mais étant donné l'objectif de votre propre expérience, beaucoup de ce que vous voyez ressemble à cela pourrait être un ou B .
Vient ensuite un nouveau problème. Pour vous, ce nouveau problème ressemble problème A , donc vous résoudre la façon dont vous résoudre habituellement A . Quelque chose ne se sent pas bien, et il prend plus de temps, et que vous vous travaillez finissent par réaliser c'est un nouveau problème, C . C'est une variation de A dont vous ignoriez l'existence.
Alors, que faites-vous pour ne pas refaire cette erreur? Deux choses:
- Découvrez ce qui était différent dans ce nouveau problème. Découvrez quelles approches peuvent avoir fonctionné différemment et pourquoi.
- Cataloguez ce problème et passez à la résolution de nouveaux problèmes.
Cela devrait vous aider à résoudre naturellement ce problème. Au moment où vous avez 10 ans d'expérience, vous connaissez les problèmes de A à Z et votre répertoire de solutions est vaste.
Bon - efficacité
Dans le monde réel, avec des délais et des ressources limitées, utiliser ce que vous savez n'est pas toujours mauvais:
- Au début du processus de résolution de problèmes, vous comparez le nouveau problème à tous les problèmes que vous connaissez.
- Vous allez essayer de reconnaître les signes et de décider à quel problème cela ressemble.
- Si une correspondance à 100% ne peut pas être établie, un développeur expérimenté évaluera le risque de passer plus de temps à la découverte par rapport aux risques d'une exécution potentiellement défectueuse. Si le risque de perte de temps est trop élevé, vous n'avez qu'à aller de l'avant avec ce que vous savez.
Ce n'est pas une mauvaise chose - il utilise l'analyse des risques pour choisir l' efficacité plutôt que la précision à 100%. C'est fait tous les jours et nous serions tous liés à des choses qui ne nous mèneraient nulle part si nous ne le faisions pas.
Donc, pour répondre à votre question:
En tant que programmeur avec une expérience décente, comment peut-on lutter contre cette tendance à toujours aborder la résolution de problèmes à partir de chemins "éprouvés et réels" à partir de l'expérience passée?
- Continuez à chercher et à cataloguer de nouveaux problèmes
- Mieux à sélectionner la bonne solution pour le problème; au lieu de simplement savoir quelle solution, sachez pourquoi elle est juste.
- Pratiquez et perfectionnez vos compétences en prise de décision. Parfois, l'efficacité est le bon choix, et mieux reconnaître ces temps entraînera des avantages mesurables dans le monde réel.