Już od jakiegoś czasu dość aktywnie (choć z przerwami) udzielam się na StackOverflow wokół tagów .NET/C#. Pomyślałem, że przekroczenie okrągłych 10k punktów jest dobrą okazją do spisania swoich różnorakich przemyśleń na temat tego serwisu. Oto więc one w kolejności próbującej być od najogólniejszej do drobniejszej, choć trudno je tak precyzyjnie sklasyfikować. I jedna drobna uwaga - z góry przepraszam za psucie polszczyzny ale nijak nie potrafię ładnie przetłumaczyć pojęć upvote i downvote, by nie były to jedynie sztywne "pozytywne i negatywne głosy".
- StackOverflow i cały StackExchange jest mega fajny! - na niektóre pytania odpowiedzi pojawiają się po kilku sekundach, ilość wiedzy jest ogromna, a wiele pytań ma już swoje odpowiedzi. Myślę, że szukanie na SO jest normą w naszej developerskiej pracy i z własnego doświadczenia wiem, że nawet używając po prostu Google, 80% odpowiedzi i tak znajduje się właśnie na SO lub okolicach.
- odpowiadanie na SO jest niesamowitą metodą motywacyjną do nauki - odpowiadanie może po prostu wciągać, tak jak i zdobywanie punktów reputacji. Oczywiście jak zwykle czyha tu zagrożenie, by to nie punkty stały się celem samym w sobie, byśmy nie zostali reputation whore jak to się ładnie określa. Jednak w zdrowej sytuacji wygrywa każdy - ktoś dostaje odpowiedź, a my czegoś się uczymy odpowiadając, na dodatek poprawiamy swoje samopoczucie zdobytymi upvotami.
- odpowiadanie na SO daje zwykłą, ludzką satysfakcję - świadomość, że pomagamy innym, budując tę potężną bazę pytań i odpowiedzi, też wciąga. Ja dla przykładu ostatnio dowiedziałem się, że na moje posty trafiło 83 tysięcy ludzi - nice!
- ekipa StackExchange jest super i robi fajne zabawki - wystarczy wspomnieć Stack Exchange Data Explorer czy ich strona o infrastrukturze.
- są w StackExchange portale niedocenione, jak CodeReview itd. - szkoda, choć widocznie takie są potrzeby i nic na to nie poradzimy.
- nawet jak nie odpowiadasz i nie pytasz - ZAREJESTRUJ SIĘ - dzięki temu będziesz mógł upvotować pytania/odpowiedzi, które Ci się przydały, doceniając czas ludzi, którzy się do nich przyczynili.
- czasem można odnieść wrażenie, że SO jest nieprzyjazne, szczególnie na początku - spróbujcie zadać pytanie po polsku, albo ewidentnie będące pracą domową, albo choćby niejasno sprecyzowane, a zobaczycie jak dużo downvotów można zdobyć w ciągu sekundy, pytanie zostanie zaraz zamknięte, a w komentarzach może pojawić się seria uszczypliwości. To jednak specyfika tego portalu, miejmy na uwadze jego cel - to nie jest forum do dyskusji, ale nieustannie się budujące Q&A, celem jest by pozostawały na nim jedynie wartościowe, konkretne pytania i odpowiedzi, do których ludzie będą wracać.
- nie bójmy się pytać - poziom wiedzy niektórych użytkowników jest naprawdę wysoki więc nawet najtrudniejsze problemy mają szansę być rozwiązane, przy okazji zostanie to zapamiętane jako pomoc dla innych.
- zdobywanie reputacji na SO jest naprawdę wymagające - nie wiem jak jest w innych tagach, ale w tak popularnym obszarze jak .NET i C# poziom jest naprawdę wysoki, dobre odpowiedzi pojawiają się naprawdę szybko i jeśli nie jesteśmy dość bystrzy, ciągle będziemy sfrustrowani brakiem pozytywnego odzewu.
- zrób porządek w tagach lubianych/ignorowanych by się w tym wszystkim połapać - dzięki temu na stronie głównej zobaczyć to co Cię naprawdę interesuje. Dla przykładu to są moje ustawienia (nie w całości, za długo by było):
- jeśli Cię wciąga społeczność SO - pomyśl o zerknięciu czasem w kolejki review - potraktuj to jako wolontariat dla dobra Twojego ulubionego portalu, dzięki czemu uspokoisz swoje sumienie w kwestii bycia reputation whore :)
- gdy w komentarzach pojawia się Jon Skeet, albo już zaczął pisać odpowiedź - odpuść sobie odpowiadanie :) Chyba że chcesz się stresować. Na pogorzelisko po takich walkach możesz spojrzeć przez zapytanie "John Skeet comparison"
- nie bój się odpowiadać - nawet jak dostaniesz downvoty, zostaną anulowane po usunięciu przez Ciebie odpowiedzi, a Ty nauczysz się czegoś na temat odpowiadania. I dalej - nie bój się poprawiać swojej odpowiedzi, walcz o swoje, dyskutuj - wbrew pozorom ludzie potrafią cofnąć swoje downvoty
- u bardzo zaawansowanych użytkowników występuje efekt śnieżnej kuli - podczas gdy zwykły szary człowiek uzbiera z pewnym trudem kilkadziesiąt punktów dziennie, taki John Skeet zbiera o rząd wielkości więcej tylko ze względu na potężna bazę odpowiedzi już udzielonych.
Choć jeszcze raz przestrzegam przed zostaniem reputation whore, wiem że odpowiadanie w sytuacji, gdy zawsze to inni dostają za to pochwały/punkty może być frustrujące i zniechęcające, zatem poniżej kilka moich przemyśleń z własnego doświadczenia stricte dotyczących zdobywania reputacji:
- są przypadki zdobycia mnóstwa punktów dzięki ciekawemu pytaniu - najwyżej punktowane pytanie "Why is processing a sorted array faster than an unsorted array?" ma ponad 10 tysięcy upvotów, czyli zapewniło autorowi 50 tysięcy punktów! W obecnym tempie tyle uciułam za kilka lat. Ja jednak wolę odpowiadać niż na siłę szukać pytań w celu zdobywania punktów, nie idźmy tą drogą.
- największy i najciekawszy "ruch" w pytaniach pokrywa się mniej mięcej z polskimi godzinami pracy - wieczorem jest jeszcze trochę ruchu z USA, w nocy pojawia się trochę hindusów ale ciekawość i poziom pytań drastycznie maleje (sorry!). W weekendy zaś jest podobnie nieciekawie. Jeśli liczycie, że sobie w sobotę wieczorem poprzebieracie w ciekawych pytaniach, raczej się zawiedziecie.
- bardzo warto próbować walczyć o bounty - oczywiście jeśli temat nas jakoś zainteresuje. Nawet jeśli nie do końca jesteśmy przekonani, że znamy odpowiedź, możemy nad problemem "przysiąść" i go rozwiązać, zdobywając ciekawą wiedzę i szansę na sporo punktów, kolejna idealna sytuacja!
- odpowiadaj szybko - choćby jednym zdaniem czy linijką kodu, i sukcesywnie uzupełniaj/rozwijaj odpowiedź. Kluczowe jest by być na "topie" listy odpowiedzi, nie poczujesz się doceniony pisząc idealną odpowiedź 5 minut, podczas gdy inni sukcesywnie zdobywają upvoty wspomnianą metodą. Ostatecznie wylądujesz na dole listy z okrągłym zerem. Niestety, taka jest "wyścigowa" specyfika SO i trzeba się z tym pogodzić. Robi tak nawet John Skeet, ubierając potem odpowiedź w coraz więcej dopowiedzeń.
- im dłuższe pytanie tym mniejsza szansa na dużo upvotów - podejrzewam, że ludziom nie chce się wczytywać w pytanie by stwierdzić czy odpowiedź ma sens czy nie.
- i odwrotnie, im pytanie krótsze i odpowiedź łatwa - tym szybsze i łatwiejsze upvoty.
- w szczególności mega szybkie upvoty są na pytaniach związanych z różnymi LINQ-u kombinacjami typu "jak wybrać z kolekcji co drugi element, który nie jest pusty ale ma jeszcze fajną propertę cośtam spełniającą" - ludzie najwyraźniej lubią LINQ-kombinacje i w miarę szybko oceniają sensowność odpowiedzi.
- zupełnie mi się nie sprawdza próba punktowania za dodatkowe odpowiedzi w starych pytaniach - jest na nich mały ruch i jest to chyba głównie metoda dla fanów inwestowania długoterminowego. Po odpowiedzi na stare pytanie, na chwilę wskakuje ono na główną listę, jednak dość szybko znika. W efekcie mało kto zagląda do oryginalnego pytania i naszej mega przemyślanej, idealnej odpowiedzi.
I to by było na tyle odnośnie moich przemyśleń. Jeśli macie jakieś swoje, bardzo chętnie ich wysłucham w komentarzach. Tymczasem pierwszy, inauguracyjny post na blogu uważam za zamknięty!
EDIT:
Dzięki komentarzom przypomniały mi się jeszcze dwa "triki" w zdobywaniu punktów:
- gdy zdobędziemy już ponad 200 pkt, możemy bardzo łatwo zdobyć kolejne 100 dzięki tzw. association bonus - zakładając kolejne konto na jednym z innych portali StackExchange, np. wspomnianym CodeReview. Wtedy każde konto (w tym StackOverflow), otrzyma bonus 100 pkt.
- gdy przekroczymy 500 pkt, uzyskamy uprawnienie "Access review queues", pozwalające na przeglądanie kolejek oznaczonych przez innych użytkowników pytań i odpowiedzi, dla których można sugerować edycję treści. Dostaniemy 2 pkt za każdą taką zaakceptowaną edycję - maksymalnie 1000 pkt. To dużo, choć istnieje ograniczenie dziennej liczby edycji (bodaj 20).