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.