Rozwiązywanie problemów w trzech prostych krokach

2011-11-23 23:59

Od początków istnienia Internetu, jedną z jego głównych funkcji było zadawanie pytań odpowiednio sprofilowanemu gronu słuchaczy – np. grupom dyskusyjnym Usenetu – i otrzymywanie na nie odpowiedzi. Narzędzia i sposoby komunikacji się zmieniają (mamy teraz fora, strony typu StackExchange, a nawet serwisy społecznościowe), ale ich przydatność w rozwiązywaniu programistycznych problemów pozostaje co najmniej niezmienna.

Odpowiednią pomoc możemy często znaleźć, przeszukując po prostu archiwum dyskusji. Niekiedy jednak musimy (lub chcemy) zadziałać aktywniej i założyć nowy wątek, opisując nasz problem. I tu podobno otwiera się przed nami całe uniwersum detali, o których powinniśmy pamiętać, i które zwykle zostały “wygodnie” zebrane do postaci kilometrowych poradników takich jak ten. Część z nich jest techniczna i często przestarzała (80 znaków w wierszu?…), a reszta nie jest dostatecznie poglądowa, aby uchwycić istotę sprawy.
A ta jest – według mnie – zupełnie nieskomplikowana i łatwa w praktycznym stosowaniu. Skuteczne prośby o pomoc w sprawach technicznych można bowiem rozważać jako proces obejmujący tylko trzy proste kroki – uniwersalne i niezależne od medium komunikacji.

Pierwszym z nich jest opisanie tego, co chcemy osiągnąć. W naturalny sposób powinny tu się tu pojawić nazwy używanych przez nas technologii (języków programowania, bibliotek, frameworków, itp.), a być może także pewne informacje dotyczące kontekstu (aplikacji, systemu, projektu), w którym je stosujemy. Nie powinno też zabraknąć najważniejszej części: opisu zadania, jakie chcemy wykonać, i które z jakiegoś powodu aktualnie nam nie wychodzi.
Tę wstępną część można nierzadko załatwić jednym, niezbyt długim zdaniem. Nadmierna rozwlekłość nie jest zresztą wskazana; liczy się zwięzłość i odpowiednio duża gęstość informacji. Oto dobre przykłady, zaczerpnięte ze znanego serwisu StackOverflow:

Używam biblioteki do C++, która wymaga przekazania danych jako vector charów. Potrzebuję przekazać jej stringa… (źródło)

Mając w Pythonie ciąg znaków w rodzaju "http://www.domain.com/?s=some&two=20
"
, jak mogę pozbyć się z niego wszystkiego od &, otrzymując "http://www.domain.com/?s=some"? (źródło)

Szukam sposobu na pobranie poprzez jQuery domyślnej wartości pola tekstowego HTML po tym, jak strona została odświeżona… (źródło)

Drugą częścią jest określenie tego, co próbowaliśmy zrobić. W przypadku problemów programistycznych nieodzowny jest tu odpowiedni kawałek kodu. Przygotowanie takiego fragmentu jest w pewnym sensie sztuką samą w sobie, ale poziom trudności tego zadania jest zazwyczaj nieporównywalnie mniejszy niż oryginalnego problemu.
Cel tego kroku (zwykle najobszerniejszego) jest trojaki. Oprócz pokazania własnej inicjatywy, prezentacja próby rozwiązania sama w sobie stanowi dobry opis problemu i założonych intencji pytającego. Ponadto może ona być gotową podstawą poprawnej odpowiedzi, jeśli nasz sposób podejścia do zagadnienia wymaga tylko niewielkich korekt.

Na koniec powinniśmy jeszcze wspomnieć o rezultatach naszych prób. Zwykle wymienia się tu takie dane jak: logi, teksty wyjątków wraz ze stosem wywołań, komunikaty o błędach kompilacji – i tak dalej. Ogólnie chodzi jednak o wszelkie zjawiska, które okazały się niezgodne z naszymi zamiarami opisanymi na wstępie. Ostatecznie bowiem to właśnie ta niezgodność jest powodem, dla którego szukamy pomocy w sieciowej społeczności, więc powinniśmy opisać ją wystarczająco szczegółowo.

“Chciałem A, zrobiłem B, a wyszło X” – tak chyba najkrócej można streścić opisaną wyżej metodę przedstawiania problemów technicznych szerszemu gronu odbiorców, a więc w konsekwencji także ich rozwiązywania. Być może istnieją łatwiejsze i/lub lepsze sposoby, ale skuteczność tego widziałem już wystarczająco wiele razy, żeby móc go polecić wszystkim.

Tags: , , ,
Author: Xion, posted under Computer Science & IT »


3 comments for post “Rozwiązywanie problemów w trzech prostych krokach”.
  1. Wem:
    November 24th, 2011 o 14:18

    Ciekawy artykuł. Większość z nas podchodzi do takiego opisu problemu intuicyjnie i często jest on poprawy, natomiast zdarza się, że ma z tym kłopot początkujący(nie każdy oczywiście). Początkujący, którego można nazwać “niezrównoważonym”. Pytanie tylko, czy wycelowałeś w odpowiednią grupę społeczną. Uważam, że jest to blog, który trzyma poziom(zarówno Ty, jak i Twoi czytelnicy). Taki artykuł bardziej nadawałby się na fora programistyczne, o dużej popularności, i częstym występowaniu początkujących(tych wyróżnionych wcześniej)

  2. Krzysztof Szumny - noisy:
    November 24th, 2011 o 16:40

    @Wem:

    od teraz na forach zawsze możesz wklejać ten link. Dzięki temu co niektóre osoby będą mogły przeczytać ten jak i inny wpis, obcując tym samym (jak to sam nazwałeś) z czytelnikami trzymającymi poziom ;)

Comments are disabled.
 


© 2017 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.