Jedną z najważniejszych umiejętności, jaka ma istotny wpływ na pracę programisty, jest efektywne podejście do rozwiązywania problemów. Bez rozwinięcia tej umiejętności, praca staje się w wielu przypadkach bezskuteczna, szablonowa, a niekiedy nawet daremna.
W dzisiejszym wpisie przedstawię moje sprawdzone sposoby na wzmocnienie tej umiejętności, które nigdy nie zawodzą mnie przy rozwiązywaniu trudniejszych zadań.
Dobrym punktem wyjścia jest poniższy cytat, pod którym również się podpisuję:
Zmiana perspektywy jest warta dodatkowych 80 punktów IQ - Alan Kay
Przyznaję, że ilekroć zmieniłem perspektywę, to zawsze łatwiej było mi uporać się z problemem. Jednak powiedzieć "zmień perspektywę" brzmi niezwykle łatwo. Prawdziwy trud pojawia się wtedy, gdy rzeczywiście próbujemy to wcielić w życie.
Są różne sposoby na zmianę perspektywy. Moim zdaniem, najważniejsze to być zdolnym do porzucenia tego co już znane i z naszej perspektywy oczywiste, by za chwilę rozpocząć poszukiwania odpowiedzi nową metodą.
Poniżej zostawiam moje sposoby wraz z omówieniem, które niejednokrotnie popchały moją pracę do przodu:
- napisz to w innym języku (zmiana języka, wpływa na zmianę sposobu myślenia)
- napisz / narysuj to na kartce
- opisz problem tak jakbyś prosił kogoś o pomoc
- wyjaśnij komuś bieżące rozwiązanie
- spróbuj rozwiązać ten sam problem poza projektem
- zacznij od testów (wtedy łatwiej zwrócić uwagę na przypadki brzegowe)
- zbierz więcej danych, które pozwolą Ci lepiej zrozumieć problem
- wyjdź na spacer, zrób przerwę, wypij dobrą kawę
Książkę jaką mogę polecić w nawiązaniu do całego tematu jest Jak to rozwiązać?

Chociaż książka porusza matematyczne problemy, to większość z nich ma charakter ogólny i znajduje również odniesienie w przypadku programowania. Znajdziesz w niej wiele heurystyk wspomagających efektywne rozwiązywanie problemów.