Skip to content

Rozwiązywanie problemów

kpc21 edited this page Feb 24, 2021 · 1 revision

"Jak się odblokować" – notatki

TODO:

  1. Dopisać przykłady

diagram

START

Zaobserwowano problem

Nazwać problem

  1. Co się stało?
  2. Co zrobiliśmy?
  3. Czego się spodziewaliśmy?

Przejrzeć materiały

  1. Jeśli są: logi i komunikaty programu – PRZECZYTAĆ UWAŻNIE DWA RAZY, ZE ZROZUMIENIEM a) jeśli logi wydają się nam ubogie w dane i informacje, warto pogooglować bądź popytać, czy nie ma lub nie można wygenerować jakichś innych/innego rodzaju logów b) jeśli wydaje nam się, że logów nie ma – pogooglować bądź popytać, czy przypadkiem ich jednak nie ma, tzn. może jednak są/da się je wygenerować c) w przypadku problemów dotyczących komunikacji przez sieć warto spojrzeć w dump ruchu sieciowego – narzędzia: tcpdump, Wireshark

  2. Dokumentacja

  3. Google

  4. StackOverflow

  5. Github – issues

Czasem problem pojawia się "nagle" – coś działało, po czym nagle przestało, bo wyszła nowa aktualizacja. Może się okazać, że samo zerknięcie do działu issues rozwiąże problem, bo jakieś zgłoszenie z 300 kciukami w górę opisuje jakieś obejście. Dobrze jest przeczytać cały wątek i wklejone linki.

Przy konstruowaniu zapytania:

  1. Usunąć nazwę pliku / projektu / numery linii kodu, jeśli kopiujemy błąd
  2. W przypadku rzeczy służbowych pamiętajmy o wycięciu rzeczy, które mogą stanowić tajemnicę firmową
  3. Unikać "does not work" – co to znaczy że coś nie działa? Zawiesiło się? Nie dostaliśmy danych?
  4. Unikać "please help" – wszyscy tam proszą o pomoc

Napisać przypadek testowy.

https://stackoverflow.com/help/minimal-reproducible-example

Wygodny prototyp do następnego kroku.

Eksperymentować, doczytać dokumentację

"Co robi ten parametr?" "A co jeśli to usunę?" izolowanie problemu (wycinanie fragmentów kodu itp., aż problem zniknie)

Przykłady narzędzi, które mogą pomóc:

  1. Debugger – często działa nie tylko dla naszego kodu, ale także cudzego. "Step into" może pozwolić zrozumieć, czego dana biblioteka lub projekt od nas oczekuje
  2. Narzędzie do śledzenia systemu, np. strace w Linuksie

Ogarnąć nasz syndrom oszuszta

  1. Doczytać o tym, czym jest i skąd się bierze

https://pl.wikipedia.org/wiki/Syndrom_oszusta

Grupy ryzyka: studenci, osoby dyskryminowane, pracownicy firm w których jest toksyczne środowisko pracy (rywalizacja, mobbing, bierna agresja). Jeśli możemy, uciekajmy z miejsc, gdzie jest taka atmosfera (akurat w branży IT łatwo zmienić pracę). Lepiej zarobić odrobinę mniej, ale zachować zdrowie psychiczne.

  1. Kwestionować nasze przekonania – na przykład, czy tak samo ocenialibyśmy kogoś innego?
  2. Pamiętać, że widzimy wszystkie swoje błędy, ale nie cudze
  3. Psychoedukacja pomaga. Warto doszkolić się z umiejętności komunikacyjnych i asertywnego zachowania.
  4. W trudnych przypadkach, rozważyć psychoterapię – z nieleczonym zdrowiem psychicznym bywa jak z nieleczonym zębem: higiena jest ważna i niekoniecznie oczywista, a zaniedbania prowadzą do coraz większych problemów (tyle, że ząb można w ostateczności wyrwać).

Odpocząć

  1. Zmiana kontekstu pomaga

Mózg rozwiązuje problemy także, gdy o nich nie myślimy. Szczególnie tyczy się to myślenia kreatywnego (przykład z olśnieniem pod prysznicem).

  1. Sen jest ważniejszy, niż myślisz
  • Samoocena bardzo zależy od nastroju, a ten zależy od fizycznego samopoczucia.

Polecam książkę "Dlaczego śnimy", choć warto wiedzieć że niektóre fragmenty budzą wątpliwości:

https://guzey.com/books/why-we-sleep/

  1. Odpowiedzi (np. na StackOverflow) nie zawsze pojawiają się natychmiast

Strefy czasowe, urlopy itd. Czasem odpowiedź przychodzi po minucie, czasem po dwóch latach.

Zadać pytanie

  1. Znajomi

Szczególnie dobry pomysł, jeśli boimy się krytyki. Ktoś, kto nas zna szybciej będzie wiedział jak z nami rozmawiać.

Bardzo często już tłumacząc znajomemu, współpracownikowi itp. swój problem wpadniesz na jego rozwiązanie – jest to tzw. metoda gumowej kaczki (przy braku znajomego/współpracownika można zamiennie wykorzystać kaczkę kąpielową – nawet najlepsza kaczka nie zastąpi żywego człowieka, ale lepsze to, niż nic).

  1. Współpracownicy (dla problemów, na które natrafiamy służbowo)

Przydatne szczególnie przy dobrej atmosferze w firmie.

Jeśli firma jest duża (korpo), czasem warto spróbować dotrzeć do ludzi z innych działów, którzy mogą zajmować się podobnymi rzeczami, albo nawet specjalizować się w tym, co my potrzebujemy zrobić przy okazji.

Jeśli ktoś z współpracowników nie jest w stanie nam pomóc, często jest w stanie przynajmniej kogoś polecić.

  1. StackOverflow i powiązane strony (StackExchange: unix, ubuntu, etc)

Narzędzia, których chyba nie trzeba przedstawiać.

Warto wspomnieć, że na Stacku często siedzą też autorzy bibliotek, z których korzystamy. Może to przyspieszyć czas odpowiedzi i poprawić jej jakość. Dobrze jest poprawnie otagować nasze pytanie. Wystawienie tzw. bounty też czasem pomaga.

  1. IRC i inne chaty

Często niedoceniane źródło, ale przy odrobinie szczęścia możemy dostać pomoc natychmiast. Niektóre społeczności są bardziej przyjazne, inne mniej. Przykładowo – kanał IRC języka programowania Rust jest super miły, ludzie z #python najprawdopodobniej nienawidzą cię dlatego, że oddychasz.

Natychmiastowa interakcja pozwala zadawać dodatkowe pytania. Dzięki temu możemy się odblokować nawet, jeśli mamy zły tok rozumowania.

  1. Github

Issues nie zawsze służą tylko do zgłaszania błędów. Prośby o dokumentację, ogólne pytania – niektóre projekty na to pozwalają i to, co nie przeszłoby na stackoverflow przejdzie na GitHubie.

Na Githubie historia kodu może też nam się przydać do ustalenia, kto go napisał.

  1. Reddit

"Internetowy śmietnik", gdzie można znaleźć wszystko i nic. Narzędzie dość ostateczne, ale często próg wejścia jest minimalny, a możliwość dostania odpowiedzi – niewykluczona.

  1. Autor

Jeżeli wstydzimy się podpisywać swoim imieniem i nazwiskiem, warto zastanowić się nad wymyśleniem nowego nicka pod jedno konkretne pytanie. Zapasowa tożsamość może pomóc ominąć problem oszusta.


Syndrom Elektrody

Jeśli wiemy, że miejsce, w którym zadajemy pytanie jest mało przyjazne/nie lubi osób, które nie zadają sobie trudu poszukać rozwiązania na własną rękę, warto opisać nasze dotychczasowe próby znalezienia tego rozwiązania. Warto też sprawdzić, czy na pewno zadajemy je w odpowiednim dziale forum/podgrupie/podkanale itp. i czy nie łamiemy jakiejś niestandardowej zasady obowiązującej w danej społeczności (jeśli niechcący taką złamiemy – nie oszukujmy się, kto czyta regulaminy? – i moderator nam zwróci uwagę, poprosi o zmianę – nie przejmujmy się tym, po prostu to zróbmy; te zasady często mają sens i są podyktowane wcześniejszymi doświadczeniami członków danej społeczności... niestety zdarzają się też czasem moderatorzy-służbiści, którzy nie zastanowią się nad sensem swojej interwencji w danym konkretnym przypadku).

Np. na ww. Elektrodzie nie wolno wstawiać linków do aukcji z Allegro (ogólnie linków do stron, które szybko wygasają), podobnie obrazki należy hostować na ich własnym serwerze zamiast je hotlinkować – po to, by nasz wątek mógł dalej służyć innym, którzy go sobie w przyszłości wygooglują i nie był pozbawiony podstawowych informacji przez niedziałający obrazek czy link.

Nie przejmować się, jeśli ktoś nas odeśle do lmgtfy.com – w ten sposób może po prostu dać nam znać, jak daną rzecz można wygooglować. Nie musi to być wcale oznaka złośliwości. I to naprawdę nie jest Twoja wina, że tego nie wiedziałeś (nikt nie wie wszystkiego, a formułowanie zapytań do wyszukiwarek internetowych naprawdę bywa trudne – żeby coś znaleźć trzeba wiedzieć, czego się szuka, a to nie jest wcale banalna rzecz), nikt też Cię tak nie osądza – po prostu ludzie dzielą się swoją wiedzą na różne sposoby.

Pamiętajmy, że ludzie na tych forach itp. nie chcą nam dokuczyć, tylko są zirytowani masowym zadawaniem tam pytań przez ludzi, którzy przed zadaniem pytania na forum faktycznie nie robią nic. Pokażmy, że my tacy nie jesteśmy i szukaliśmy tego rozwiązania tak, jak umiemy. To na pewno spotka się ze zrozumieniem.

Jeśli jednak się nie spotka – spróbujmy gdzieś indziej, na pewno znajdzie się w Internecie bardziej przyjazne nam miejsce.

Spróbować ponownie

Nawet jeśli nie znamy rozwiązania: czasem mózg rozwiązuje "w tle" i nawet nie wiemy, że mamy już gotowy nowy pomysł.

Nawiązać do anegdot typu "siedziałem nad tym całą noc bez rozwiązania, a następnego dnia rozwiązałem to z biegu".

Zapobiegać

  1. Doszkalać się – zarówno w specjalizacji, jak i poza nią
  2. Networking – polecam Hakierspejs!
  3. Wyciągać wnioski, prowadzić notatki

Często jeśli natknęliśmy się na problem raz, możliwe że trafimy na niego jeszcze raz. Szukanie czegoś w historii wyszukiwania bywa frustrujące – dużo lepiej jest dodać coś do zakładek, kliknąć "zapisz" w sieci społecznościowej itd.

Polecam bullet journalling:

https://bulletjournal.com/

  1. Uczyć innych, pomagać, tworzyć przyjazną atmosferę

Przemigrowano z pada https://pad.hs-ldz.pl/beCl6WDiRVGyN09G4fKyhA. Znajdziesz tam historię edycji sprzed migracji.


Clone this wiki locally