To świetne pytanie. I myślę, że to nie tylko starsi programiści, którzy wpadają na to - wczesne zajęcie się tym może być świetnym sposobem na przyspieszenie rozwoju umiejętności.
Istnieją dwie strony tego problemu - jedna jest zła, a druga jest naprawdę dobra .
Źle - wybranie niewłaściwego rozwiązania
Oto przykład - jak niedoświadczony programista, można mieć tylko naprawdę rozwiązać dwa problemy przed, problemy A i B . W tym momencie wiesz, że istnieją problemy, których nie znasz, ale biorąc pod obiektyw własnego doświadczenia, dużo, co widać wygląda jak to może być lub B .
Nadchodzi nowy problem. Do was, to nowy problem wygląda jak problemu A , więc go rozwiązać tak, jak zwykle rozwiązać A . Coś jest nie tak, a to trwa dłużej, a podczas pracy w efekcie realizacji jest to nowy problem, C . To odmiana A , o której istnieniu nie wiedziałeś.
Co więc robisz, aby nie popełnić tego błędu ponownie? Dwie rzeczy:
- Dowiedz się, co różniło się w tym nowym problemie. Dowiedz się, jakie podejścia mogły działać inaczej i dlaczego.
- Skataloguj ten problem i przejdź do rozwiązywania kolejnych nowych problemów.
Powinno to pomóc w naturalny sposób rozwiązać ten problem. Kiedy masz 10 lat doświadczenia, znasz problemy od A do Z, a twój repertuar rozwiązań jest obszerny.
Dobra - wydajność
W prawdziwym świecie, z terminami i ograniczonymi zasobami, korzystanie z tego, co wiesz, nie zawsze jest złe:
- Na początku procesu rozwiązywania problemu porównujesz nowy problem ze wszystkimi znanymi problemami.
- Spróbujesz rozpoznać znaki i zdecydować, który zestaw problemów to wygląda.
- Jeśli nie uda się dopasować w 100%, doświadczony programista zważy ryzyko spędzenia więcej czasu na odkrywaniu na ryzyko potencjalnie wadliwego wykonania. Jeśli ryzyko zmarnowanego czasu jest zbyt wysokie, po prostu kontynuuj z tym, co wiesz.
To nie jest złe - wykorzystuje analizę ryzyka, aby wybrać wydajność ponad 100% dokładności. Robi się to każdego dnia i wszyscy bylibyśmy związani rzeczami, które nigdzie nas nie doprowadziłyby, gdybyśmy tego nie zrobili.
Tak więc, aby odpowiedzieć na twoje pytanie:
Jako programista z przyzwoitym doświadczeniem, jak można zwalczyć tę tendencję do ciągłego rozwiązywania problemów z „wypróbowanych i prawdziwych” ścieżek z poprzednich doświadczeń?
- Szukaj i kataloguj nowe problemy
- Lepiej wybierz właściwe rozwiązanie problemu; zamiast po prostu wiedzieć, które rozwiązanie, dowiedz się, dlaczego tak jest.
- Ćwicz i doskonal swoje umiejętności decyzyjne. Czasami wydajność jest właściwym wyborem, a poprawa rozpoznawania tamtych czasów przyniesie wymierne korzyści w świecie rzeczywistym.