Esta é uma grande pergunta. E acho que não são apenas os programadores seniores que se deparam com isso - abordar isso com antecedência pode ser uma ótima maneira de um aluno acelerar o desenvolvimento de suas habilidades.
Existem dois lados dessa questão - um que é ruim e outro que é realmente bom .
Ruim - Escolher a solução errada
Aqui está um exemplo - como um desenvolvedor inexperiente, você pode ter apenas realmente resolveu dois problemas antes, problemas A e B . Neste ponto, você sabe que há problemas que você não conhece, mas dada a lente de sua própria experiência, muito do que você vê parece que pode ser uma ou B .
Junto vem um novo problema. Para você, isso novos olhares problemáticas como problema Um , para que resolvê-lo da maneira que você normalmente resolver A . Algo não se sente bem, e leva mais tempo, e como você trabalha você acaba percebendo que este é um problema novo, C . É uma variação de A que você não sabia que existia.
Então, o que você faz para não cometer esse erro novamente? Duas coisas:
- Descobrir o que havia de diferente nesse novo problema. Descubra quais abordagens podem ter funcionado de maneira diferente e por quê.
- Catalogue esse problema e prossiga para solucionar mais problemas novos.
Isso deve ajudá-lo a resolver naturalmente esse problema. Quando você tem 10 anos de experiência, já conhece os problemas de A a Z e seu repertório de soluções é extenso.
Bom - Eficiência
No mundo real, com prazos e recursos limitados, usar o que você sabe nem sempre é ruim:
- No início do processo de solução de problemas, você compara o novo problema a todos os problemas que conhece.
- Você tentará reconhecer os sinais e decidir com qual conjunto de problemas isso se parece.
- Se uma correspondência de 100% não puder ser feita, um desenvolvedor experiente ponderará o risco de gastar mais tempo na descoberta contra os riscos de uma execução possivelmente falha. Se o risco de perda de tempo for muito alto, basta seguir em frente com o que sabe.
Isso não é uma coisa ruim - é usar a análise de risco para escolher a eficiência com mais de 100% de precisão. É feito todos os dias e todos nós estaríamos presos a coisas que não nos levariam a lugar algum se não o fizéssemos.
Então, para responder sua pergunta:
Como programador com uma quantidade razoável de experiência, como combater essa tendência de sempre abordar a solução de problemas a partir de caminhos "experimentados e verdadeiros" da experiência passada?
- Continue procurando e catalogando novos problemas
- Melhor na seleção da solução certa para o problema; em vez de apenas saber qual solução, saiba por que está certa.
- Pratique e aprimore suas habilidades de tomada de decisão. Às vezes, a eficiência é a escolha certa, e melhorar o reconhecimento desses tempos levará a vantagens mensuráveis do mundo real.