Stack Overflow - czy warto się udzielać?

Wprowadzenie

Mówi się, że branża finansowa opiera się na Excelu. Podobnym filarem, ale dla branży IT jest platforma Stack Overflow. Zdaję sobię sprawę, że nikomu z branży nie trzeba jej przedstawiać. Jest ona błogosławieństwem dla każdego programisty (i nie tylko). Czas, który dzięki niej oszczędzamy jest wręcz nieoceniony. Myślę, że warto nawet pokusić się o stwierdzenie, że ciężko o taki problem, który nie zostałby już na Stacku - chociaż w minimalnym stopniu - poruszony.

Sam korzystam z jego dobrodziejstw od samego początku mojej "kariery" w IT. Każdego dnia moja przeglądarka wręcz ugina się od zakładek i zawsze przynajmniej jedna z nich to Stack. Zdecydowana większość z nas zna tę platformę z perspektywy szukających pomocy lub rozwiązania danego problemu. W tym wpisie chciałbym podzielić się spostrzeżeniami dotyczącymi tej platformy z perspektywy osoby, która nie tylko szuka zbawienia ale również pomaga innym z ich problemami technicznymi. Oczywiście daleko mi do bycia "Guru" z setkami tysięcy punktów ale to nie ma znaczenia. Każdy jest w stanie dołożyć swoją cegiełkę do tej społeczności i gwarantuję wam, że ma to swoje plusy.

Korzystanie z platformy jako "kontrybutor"

Jak to się zaczęło?

Mój sposób korzystania ze Stacka ewoluował w czasie i mogę go podzielić na kilka etapów.

Etap 1:

Na tym etapie moja aktywność na platformie ograniczała się do szukania rozwiązań moich codziennych bolączek związanych z kodem. Nie miałem konta więc nie "upvotowałem", nie "downvotowałem", nie zadawałem pytań i nie odpowiadałem na nie.

Etap 2:

W pewnym momencie każdy z nas natrafia na ścianę. Twój problem wydaje się być tak specyficzny i złożony, że nawet nie masz pomysłu gdzie szukać przyczyny. Nie wiesz nawet co dokładnie wpisać w Google. Frustracja rośnie i jedyne co udaje Ci się znaleźć w internecie to szczątkowe informacje, które w żaden sposób nie przybliżają Cię do znalezienia rozwiązania. Ostatnia deska ratunku - przeszukujesz Stacka. Ku Twojemu zdziwieniu nie znajdujesz tam odpowiedzi. Zdesperowany postanawiasz założyć konto i zadać swoje pierwsze pytanie na Stack Overflow.

Etap 3 (opcjonalny):

Znaczna większość użytkowników Stacka zatrzymuje się na poprzednim etapie. W moim przypadku pewnie byłoby podobnie ale kiedyś zdarzyła się sytuacja, że przypadkiem natrafiłem na dość specyficzne pytanie zadane przez jednego z użytkowników. Był to całkowity zbieg okoliczności ale dokładnie znałem odpowiedź na to pytanie. Dosłownie kilka dni wcześniej miałem taki sam problem. Mimo dającego o sobie znać "syndromu oszusta" postanowiłem odpowiedzieć na to pytanie. Minęło kilka godzin i zauważyłem zielone powiadomienie obok swojego avatara. Okazało się, że moja odpowiedź pomogła autorowi pytania i została oznaczona jako "ta właściwa". Są to te odpowiedzi oznaczone zielonym checkmarkiem. Dokładnie te, których szukamy przeglądając dany wątek :). Dostałem 15 punktów i bardzo miły komentarz z podziękowaniami od autora pytania. Muszę przyznać, że było to dość satysfakcjonujące i prawdopodobnie ten moment sprawił, że regularnie zacząłem udzielać się na platformie.

Niestety - jak to w życiu bywa - nie wszytko jest piękne i kolorowe a pomaganie na Stacku nie jest w tym przypadku wyjątkiem.

Na co się przygotować?

Pewne aspekty Stacka nie są satysfakcjonujące i przyjemne. Jest to dość specyficzna platforma ze specyficznym rodzajem użytkowników i z bardzo restrykcyjnymi zasadami. Poniżej postaram się przedstawić kilka aspektów, które warto wziąć pod uwagę.

Czas

Nie oszukujmy się, wgryzienie się w jakikolwiek problem będzie od nas wymagało mniejszej lub większej inwestycji czasowej. Kod trzeba przeczytać, błąd trzeba zrozumieć a czasami nawet trzeba zadać kilka pomocniczych pytań, zwłaszcza kiedy intuicja podpowiada nam, że problem może być związany z innym fragmentem kodu niż ten udostępniony przez autora. Na sam koniec, jak uda nam się dany problem rozwiązać i chcemy podzielić się wnioskami to musimy poświęcić jeszcze trochę czasu na sformułowanie sensownej i czytelnej odpowiedzi (więcej na ten temat trochę niżej). Biorąc pod uwagę powyższe - zdarzało mi się spędzić nawet kilka godzin na próbie pomocy. Jak sami wiecie - rozkminianie kodu bywa wciągające.

Brak gratyfikacji

Niejednokrotnie zdarzyła mi się sytuacja, w której spędziłem godziny na próbie pomocy i napisaniu odpowiedzi i nie zostało to w żaden sposób docenione. Odpowiedź nie została zaakceptowana, nie dostaliśmy żadnego komentarza, upvote-a ani nawet podziękowania. Żeby była jasność - nie pomagam na Stacku tylko po to żeby czytać podziękowania i czuć poklepywanie po plecach. Chodzi mi tylko o to, że całkowicie normalne jest to, że nasza pomoc zostanie zignorowana i nie dowiemy się nigdy czy nasze rozwiązanie pomogło autorowi. Dla niektórych taki stan rzeczy może okazać się denerwujący, ale pamiętajmy, że nie o zbieranie punktów tu chodzi, a o chęć pomocy i wkład w społeczność.

Każdy uwielbia banalne pytania

Ten punkt jest bardzo rozczarowujący, ale niestety prawdopodobieństwo znalezienia wsparcia drastycznie maleje jeśli problem jest bardzo skomplikowany. Pytania proste cieszą się natychmiastowym i dużym zainteresowaniem. Te, które wymagają od czytelnika dość znaczącej ilości czasu muszą poczekać trochę dłużej. Bardzo prawdopodobne jest, że kompletnie nikt nie zareaguje na taki wpis.

Restrykcje platformy

Stack ma jasno sprecyzowane zasady dotyczące użytkowania zarówno dla szukających wsparcia jak i wspierających. Przykładowo - jeśli zadasz pytanie i nie zweryfikujesz wcześniej czy takie samo pytanie nie zostało już zadane to musisz być przygotowany na to, że admin zamknie Twój post i oznaczy go jako duplikat. Jeśli Twoje pytanie będzie zbyt ogólnikowe i jedyne co znajdzie się w jego treści to prośba o pomoc i snippet z problematycznym kodem to możesz być pewien, że odzew będzie negatywny. Nikt nie lubi cwaniaków, którzy oczekują, że ktoś inny wykona za nich całą robotę. Dobre pytanie powinno zawierać informację czego już próbowałeś żeby dany problem rozwiązać. Możesz nawet umieścić niedziałający kod, który bezkutecznie próbowałeś napisać. Jest to znacznie lepsze niż goły snippet kodu i prośba o pomoc. Jak sami widzicie, nawet zadanie dobrego pytania nie jest takie proste.

Dodatkowe utrudnienie polega na tym, że każdy świeży członek nowy użytkownik ma dość ograniczone możliwości i nie jest w stanie korzystać ze wszystkich funkcjonalności platformy. Znacznie więcej napiszę na ten temat poniżej, w sekcji z zaletami platformy ponieważ restrykcje na Stacku są w większości przemyślane i sensowne.

Zalety

Nagradzanie zaangażowania

Interesującym mechanizmem jest tkzw. "reputacja". Są to punkty, które dostajesz (lub tracisz) gdy Twoje odpowiedzi są "upvotowane". Te punkty nie są całkowicie bezwartościowe. Reputacja pozwala zespołowi Stacka ocenić którzy użytkowanicy są godni zaufania i angażują się w społeczność. Im więcej masz punktów reputacji tym większe są Twoje możliwości na platformie.

Dla przykładu:

  • Po zdobyciu 15 pkt. reputacji dostajesz możliwość upvotowania.
  • Po zdobyciu 125 pkt. reputacji dostajesz możliwość downvotowania
  • Po zdobyciu 200 pkt. widzisz mniej reklam na platformie
stack benefits min

Jakość dyskusji / feedbacku / komentarzy

Nawet downvote nie jest pozbawiony konsekwencji. Jeśli klikniesz strzałkę w dół przy odpowiedzi, która Twoim zdaniem nie jest poprawna albo zawiera złe praktyki/sugestie to dostaniesz 2 punkty ujemne. Jest to mechanizm walki z trollami, którzy nadużywaliby tej funkcjonalności dla swojego "widzimisie". Jeśli chcemy uniknąc straty tych punktów musimy upewnić się, że zostawimy komentarz pod konkretną odpowiedzią i dopiero wtedy klikniemy downvote. Ma to w pewnym sensie zmusić do konstruktywnej krytyki w komentarzu i unikanie bezsensownego nadużywania przycisku downvote. Osobiście uważam, ze ma to pozytywny wpływ na jakość dyskusji i komentarzy na platformie.

Umiejętność czytania cudzego kodu

Pomaganie innym na Stack Overflow niewątpliwie wpłynęło na moją umiejętność czytania i pracy z cudzym kodem. Zazwyczaj istnieje wiele sposobów na rozwiązanie danego problemu, dlatego taka umiejętność może okazać się bardzo pomocna - zarówno podczas nauki jak i w komercyjnym projekcie.

Dodatkowy plus podczas rekrutacji

Zdarzyło mi się czasami dostać pytanie na rekrutacji dotyczące mojego wkładu w społeczność programistyczną. Nie był to element kluczowy ale takie pytanie padło więc zakładam, ze cenili sobie pracowników wykazujących jakiegolwiek ponadprogramowe zaangażowanie. Nie jest tajemnicą, że oczekiwaną odpowiedzią w tym przypadku będzie wylistowanie projektów open-source, które się współrozwija. Niestety, nie udzialałem się w tego typu projektach. Postanowiłem jednak obrać nieco inną strategię i wspomniałem o moim zaangażowaniu an Stack Overflow. Ku mojemu zaskoczeniu, zostało to bardzo pozytywnie odebrane i zdecydowanie pomogło mi zapunktować podczas rekrutacji.

Stack.. nie tylko Overflow

Większość ludzi kojarzy Stacka z szaroko rozumianą branżą IT. I słusznie bo jest to zdecydowanie najliczniejsza społeczność na tej platformie. Najliczniejsza, ale nie jedyna. Tak się składa, że Stack Overflow jest częścią kolosa zwanego Stack Exchange. Co to tak naprawdę oznacza? Myślę, że najlepiej zobrazuje to poniższy zrzut ekranu.

stackExchange min

Platforma Stack Exchange oferuje Ci znacznie więcej możliwości niż CI się wydawało. Interesujesz się awioniką, fizyką, językami obcymi? A może chemią? Nie ma żadnego problemu, wystarczy, że wybierzesz odpowiedznie community i możesz śmiało zacząć zadawać pytania i dzielić się wiedzą.

"Po co mi Stack? Przecież mam ChatGPT"

W dobie cholernie szybko rozwijającej się sztucznej inteligencji, zostajemy dosłownie zasypywani wszelkiego rodzaju narzędziami. Jednym z takich narzędzi jest ChatGPT. Jest to model językowy, który niesamowicie sprawnie radzi sobie z wieloma problemami programistycznymi. Z wieloma sobie również nie radzi. Jedno jest pewne - ChatGPT na ten moment (przynajmniej w darmowej wersji) nie ma informacji o najnowszych zmianach jakie zaszły w konkretnych technologiach. Jeśli czegoś nie wie to wygeneruje Ci kompletny stek bzdur, który tylko z pozoru ma sens. Tak właśnie działa - zawsze musi coś "wypluć", nawet jeśli jego odpowiedź jest kompletnie błędna.
Tutaj Stack ma pewną przewagę. Jeśli znajdziesz się w sytuacji, w której problemy sprawia najnowsza wersja jakiejś biblioteki, najbardziej prawdopodobne jest to, że rozwiązanie znajdziesz w dyskusji na Stacku, pod jednym z wątków. Czy ChatGPT kiedyś całkowicie wyeliminuje Stacka z gry? Nie wiem, może tak. Pewnym jest jednak, że na ten moment Stack nadal jest niesamowicie wartościowym miejscem i istną skarbnicą wiedzy. Jeszcze nie czas na pożegnania.

Podsumowanie

Stack niewątpliwie wpłynął na moją "karierę". Pomógł mi uporać się z problemami niezliczoną ilość razy. Może i nie jestem detektywem ale coś mi się wydaje, że nie jestem w tej kwestii wyjątkiem. Jeśli szukasz sposobu na dodanie swojej cegiełki w społeczność programistyczną i równie bardzo jak ja lubisz rankingi i zbieranie punktów na różnego rodzaju platformach to zdecydowanie powinieneś spróbować swoich sił na Stacku. Pamiętaj tylko, że nie chodzi tutaj o samo zbieranie punktów ale o faktyczną pomoc. Zabierze Ci to część wolnego czasu ale pomaganie innym jest bardzo satysfakcjonujące i dodatkowo pozwala Tobie na utwalenie wiedzy.

Na koniec, możesz jeszcze rzucić okiem na poniższego mema. Jeśli to cię nie przekona to już raczej nic nie zdoła tego zrobić

coffin meme min