Co jsem se naučil za 10 let na Stack Overflow

Co jsem se naučil za 10 let na Stack Overflow
Blíží se mi desáté výročí Stack Overflow. V průběhu let se můj přístup k používání stránek a jejich vnímání hodně změnil a chci se s vámi podělit o své zkušenosti. A píšu o tom z pohledu běžného uživatele, který není příliš zapojen do života komunity webu nebo jeho kultury. V těchto dnech jsem pouze odpovídal na otázky týkající se VS Code, produktu, na kterém pracuji. Dříve jsem se však aktivně účastnil diskuzí na širokou škálu témat. Za 10 let I položil asi 50 otázek a dal 575 odpovědí, prohlédl si nespočet komentářů ostatních lidí.

Jon Skeete popsal kulturu Stack Overflow mnohem lepší a autoritativnější, než kdy budu schopen. Jeho zveřejnění ovlivnilo některé kapitoly v tomto článku, ale celkově se jedná o mé vlastní upřímné úvahy o mých zkušenostech s Stack Overflow, o tom, co je na webu dobré a co špatné, a jak se dá použít dnes. Tato diskuse bude poměrně povrchní, aniž by se hlouběji ponořila do fungování webu nebo jeho historie.

Zde je to, co jsem se naučil za 10 let používání Stack Overflow.

Musíte umět klást otázky

Na první pohled nemůže být nic jednoduššího: do textového pole zadejte pár slov, klikněte na „Odeslat“ a internet vám magicky pomůže vyřešit všechny vaše problémy! Ale trvalo mi skoro 10 let, než jsem přišel na to, jaká slova zadat do toho zatraceného pole, abych skutečně dosáhl výsledků. Vlastně se o tom stále učím každý den.

Kladení dobrých otázek je skutečně podceňovaná dovednost (stejně jako psaní dobré zprávy o problému). Za prvé, jak vůbec určíme, zda je otázka „dobrá“? Stack Overflow nabízí nápověda, který uvádí následující vlastnosti dobré otázky:

  • Odpovídá to tématu webu?
  • Znamená objektivní odpověď.
  • Zatím nebyl dotázán.
  • Bylo prozkoumáno.
  • Jasně popisuje problém, obvykle s minimálním, snadno reprodukovatelným příkladem.

Dobře, ale jak vypadá „jasné prohlášení o problému“ v praxi? Jaké informace jsou relevantní a které ne? Někdy mám pocit, že když chcete položit dobrou otázku, musíte nejprve znát odpověď.

Zde bohužel nepomáhá malé textové pole. Je tedy divu, že tolik uživatelů posílá nekvalitní otázky? Někdy jedinou odpovědí, kterou dostanou, je odkaz na nějakou matoucí dokumentaci. A ještě budou mít štěstí. Mnoho nekvalitních otázek je prostě tiše odhlasováno a mizí v nekonečné niti otázek.

Kladení dobrých otázek je dovednost. Naštěstí se to dá rozvinout. Většinou jsem se učil tak, že jsem si přečetl spoustu otázek a odpovědí a poznamenal, co fungovalo a co ne. Jaké informace jsou užitečné a co otravné? I když se stále budete bát nabyté znalosti využít v praxi a ptát se. Zkuste to nejlepší a poučte se z výsledků. Musím přiznat, že já sám jsem z některých svých raných ignorantských otázek trochu v rozpacích, i když to možná dokazuje, že jsem se od té doby, co jsem se ocitl na této stránce, hodně zlepšil ve svých dotazovacích schopnostech.

Špatné a ne příliš dobré otázky nejsou totéž

Nebudu cukrovat pilulku: některé otázky jsou prostě špatné.

Otázka sestávající ze snímku obrazovky a fráze „PROČ TO NEFUNGUJE!?!“ - špatný. Proč? Je vidět, že si autor nedal téměř žádné úsilí. Nejde ani tak o otázku, jako spíše o požadavek: "Udělej tuto práci za mě!" Proč bych to dělal? Můj čas je příliš cenný na to, abych plýtval tím, že pomáhám někomu, kdo se nechce učit a moji pomoc si neváží. Přečtěte si, co je Stack Overflow.

Nyní se zamyslete nad otázkou nazvanou „Jak odstranit modré okraje na mé stránce“, která se skládá z několika odstavců textu, které hovoří o vlastnosti CSS outline, ale bez explicitního zmínky o slovech „CSS“ nebo „outline“. I když taková otázka může být v rozporu s mnoha pokyny Stack Overflow, nesouhlasím, není to špatná otázka. Autor se alespoň pokusil podat nějaké informace, i když nevěděl, co dát. Pokus se počítá, stejně jako ochota vnímat a učit se.

Mnoho přispěvatelů Stack Overflow však pravděpodobně bude s oběma otázkami zacházet stejně: hlasovat proti a zavřít. To je frustrující a odradí mnoho nezkušených uživatelů dříve, než se naučí klást lepší otázky a vůbec pochopí, jak web funguje.

Opravdu špatné otázky nestojí za váš čas. Ale je třeba si uvědomit, že kdo klade nepříliš dobré otázky, tak to dělá neúmyslně. Chtějí se dobře ptát, jen nevědí jak. Když nováčky slepě a bez vysvětlení trestáte, jak se to naučí?

Dobrá otázka nezaručuje odpověď

Stack Overflow obvykle poskytuje rychlejší odpovědi na jednoduché otázky, na které může odpovědět mnoho lidí. Máte dotaz ohledně binárního vyhledávání v JavaScriptu nebo HTML? Báječné! Získejte pět odpovědí za méně než hodinu. Ale čím složitější nebo konkrétnější je otázka, tím menší je pravděpodobnost, že dostanete odpověď, bez ohledu na kvalitu formulace.

Pravděpodobnost, že dostanete odpověď, také časem rychle klesá. Když se otázka dostane několik stránek hluboko do kanálu, ztratí se. O týden později se můžete jen modlit, aby na vaši otázku narazil (nebo na ni velkoryse klikl) někdo se správnými znalostmi.

Možná se vám nebudou líbit správné odpovědi

Každý měsíc dostávám několik záporných hlasů za takzvané nepopulární odpovědi. Jedná se o druhy odpovědí, které v podstatě říkají: „Důvodem je, že je to tak navrženo“, nebo „není to možné, protože...“ nebo „je to chyba, kterou je třeba nejprve opravit“. Ve všech výše uvedených případech autoři nedostanou řešení nebo dokonce řešení. A mám podezření, že když se lidem nelíbí, co odpověď říká, hlasují proti. Dokonce jim rozumím, ale to neznamená, že odpovědi jsou špatné.

Platí to samozřejmě i opačně: dobré odpovědi vám nutně neřeknou to, co chcete slyšet. Některé z nejlepších odpovědí nejprve odpovídají na původní otázku, ale poté popisují další přístupy k řešení problému. Někdy odpovím na otázku uživatele a pak napíšu dlouhý text o tom, proč se to nedoporučuje.

Kdykoli se vyjádření postoje zjednoduší na hlasy nahoru a dolů nebo na podobné tlačítko, ztratí se důležité rozdíly. K tomuto problému dochází často na Internetu. Kolik sociálních sítí vám umožňuje rozlišovat mezi „podporuji to“ a „myslím, že je to dobře řečeno, i když se mi to nelíbí nebo s tím souhlasím“?

Celkově, navzdory měsíčním záporným hlasům, věřím, že komunita Stack Overflow hlasuje spravedlivě. Této cesty se budeme držet.

Na Stack Overflow se skoro vůbec neptám

Čím déle jsem tento web používal, tím méně často jsem na něj kladl otázky. Částečně je to dáno mým profesním růstem. Mnoho problémů, se kterými se v práci potýkám, je příliš složitých na to, aby je bylo možné vyjádřit jednoduchými otázkami, nebo jsou příliš konkrétní na to, aby mi někdo vůbec pomohl. Uvědomil jsem si omezení webu, takže se vyhýbám otázkám, na které téměř jistě nedostanu dobrou odpověď.

Ale jen zřídka jsem se zde ptal, i když jsem se učil nový jazyk nebo rámec. Ne proto, že by byl takový génius, právě naopak. Je to tak, že když mám po letech na Stack Overflow otázku, dospívám k hlubokému přesvědčení, že pravděpodobně nebudu první, kdo ji položí. Začnu pátrat a téměř vždy zjistím, že se na totéž už někdo ptal před pár lety.

Pozorování dotazů ostatních lidí je skvělý způsob, jak se o svém produktu dozvědět nové věci.

Nyní pracuji na VS kód, takže jsem si zvyknul dívat se na otázky označené vscode. Je to skvělý způsob, jak zjistit, jak se můj kód používá v reálném světě. S jakými problémy se uživatelé setkávají? Jak lze zlepšit dokumentaci nebo API? Proč něco, co jsem považoval za naprosto jasné, způsobuje tolik nedorozumění?

Otázky jsou důležitým signálem, který ukazuje, jak je váš produkt používán. Ale nejde o to odpovědět a jít dál, ale pokusit se nejprve pochopit, proč má ten člověk otázku. Možná je problém v produktu, který vám není znám, nebo nějaké předpoklady, které jste nevědomky učinili? Otázky mi také pomohly objevit mnoho chyb a inspirovaly mě k další práci.

Pokud udržujete produkt pro vývojáře, nepovažujte Stack Overflow za smetiště (nebo v horším případě za hřbitov otázek). Pravidelně kontrolujte, jaké otázky a odpovědi se objevily. To neznamená, že musíte na každou otázku odpovídat sami, ale signály z Stack Overflow jsou příliš důležité na to, abyste je ignorovali.

Hranice mezi otázkou, zprávou o chybě a požadavkem na funkci jsou rozmazané.

Poměrně mnoho otázek o VS Code na Stack Overflow bylo ve skutečnosti hlášení o chybách. A mnoho dalších jsou vlastně požadavky na nové funkce.

Například otázka s názvem „Proč VS Code havaruje, když...?“ - toto je hlášení o chybě. VS Code by neměl padat v různých situacích. Odpovídání na otázky, které jsou hlášeními o chybách, je kontraproduktivní, protože autoři mohou být spokojeni s řešením a nikdy nepodají skutečné hlášení o chybě. V situacích, jako je tato, obvykle žádám uživatele, aby podali hlášení o chybě na Github.

V jiných případech mohou být rozdíly méně zřejmé. Například otázka "Proč JavaScript IntelliSense nefunguje ve VS Code?" V závislosti na tom, jak JavaScript IntelliSense nefunguje, může problém spadat do jedné ze tří kategorií:

  • Pokud se jedná o problém s uživatelskou konfigurací, pak je to opravdu otázka pro Stack Overflow.
  • Pokud by v popsaném případě měl IntelliSense fungovat, ale nefunguje, jedná se o hlášení o chybě.
  • Pokud by v popsaném případě neměl IntelliSense fungovat, pak je to požadavek na novou funkci.

Na konci dne většinu uživatelů tyto nuance nezajímají – chtějí pouze, aby JavaScript IntelliSense fungoval.

A i když jsou tyto rozdíly pro mě jako osobu zodpovědnou za projekt důležité, obecně by mi na nich neměly záležet. Protože otázky, hlášení chyb a požadavky na funkce jsou způsoby, jak vyjádřit jednu myšlenku: uživatel od mého kódu něco očekává a nedostane to. Pokud by byl produkt dokonalý, uživatelé by se na něj nikdy neptali, protože by jim bylo vše jasné a dělal by přesně to, co chtějí (nebo jim alespoň jasně řekl, proč nemůže).

I vývojáři jsou lidé

Lidé jsou emotivní. Lidé jsou iracionální. Lidé jsou kreténi. Ne vždy, samozřejmě, ale někdy! A věřte nebo ne, i vývojáři jsou lidé.

Existuje fantazie, kterou si my vývojáři rádi říkáme: „Pracujeme s počítači, takže musíme být racionální. Rozumíme záhadným symbolům, takže musíme být chytří. Software ovládl svět, takže musíme být cool! Chladný! Vpřed!!!"

To je špatně. A kdyby tomu tak bylo, pak Bůh pomáhej ostatním lidem. I na Stack Overflow, tomto nástroji pro profesionály navrženém jako objektivní znalostní báze, dokonce i v mém vlastním, vysoce specifickém koutě VS Code, se nadále setkávám s nejrůznějšími nehoráznostmi: logickými omyly, urážkami, stádní mentalitou atd.

Nedělejte si legraci: pravděpodobně nejste tak dokonalí, jak si myslíte. To ale neznamená, že bychom se svých nedostatků neměli snažit zbavit.

Kámo, já jsem ten, kdo to vytvořil

Jsem taky člověk a to, co se děje na Stack Overflow, mě čas od času štve. Například když uživatel sebevědomě napíše nesmysly nebo jednoduše odpoví chybně na otázku související s VS Code, produktem, který jsem vytvořil a který velmi dobře znám. Kupodivu se zdá, že čím chybnější odpověď, tím větší pravděpodobnost, že ji někdo označí za nezpochybnitelný fakt.

Když se to stane, chovám se jako na obrázku a napíšu správnou odpověď.

Co jsem se naučil za 10 let na Stack Overflow

A několikrát to vedlo k dlouhým vláknům: běda, že jsem se odvážil zpochybnit jejich znalosti o tom, co jsem vytvořil! Přestaňte se neustále snažit mít pravdu, vy zatraceně chytří kluci! Protože mám pravdu!!!

V této beznaději je snadné stát se cynickým

Když čelíte nekonečnému proudu nekvalitních otázek, je snadné se stát cynickým. Nikdy neslyšel o Googlu? Ví vůbec, jak sestavit souvislé věty? Co jsi, pes?

Někdy se podívám na desítky nových otázek za den. Neustálé pozorování všech těchto nekvalitních otázek riskuje sklouznutí k pohrdání nebo cynismu. Tento cynismus se může přelít na stránky, jak potvrdí každý, kdo se setkal s přehnaně horlivým moderátorem nebo strávil pár hodin zkoumáním a sestavováním otázky, jen aby na oplátku dostal negativní odpovědi a zmizel v zapomnění bez jakéhokoli vysvětlení.

Samozřejmě existují uživatelé, kteří nevynakládají ani špetku úsilí a pokládají špatné otázky. Ale věřím, že většina nekvalitních otázek pochází od lidí s dobrými úmysly (i když hloupými). Vždy se snažím vzpomenout si, co to znamená být nováčkem. Když právě začínáte, nechápete, jak tady všechno ve skutečnosti funguje. V některých případech ani nevíte, jakými slovy správně vyjádřit svůj problém. Věřte mi, je těžké být v této pozici. A je nepříjemné, když vás polije hloupost jen proto, že se na něco zeptáte.

Přestože Stack Overflow udělal hodně pro pomoc nováčkům, je toho ještě mnohem víc, co je potřeba udělat. Snažil jsem se najít rovnováhu mezi dodržováním standardů stránek a shovívavostí vůči nezkušeným uživatelům. To může zahrnovat vysvětlení, proč jsem hlasoval pro uzavření otázky, nebo zveřejnění komentáře vybízejícího uživatele k poskytnutí dalších informací. Pořád mám kam růst.

Na druhou stranu neváhám dát přednost uživatelům s reputací 50 000, kteří posílají otázky jako „Jaké je nejlepší rozložení VS kódu pro vývoj JavaScriptu?“ nebo kteří nahrávají namydlené screenshoty kódu místo textu.

Někdy ti chci jen poděkovat

Na Stack Overflow je slabá kultura vděčnosti. Pamatuji si, že kdysi web z otázek automaticky vyškrtával slova „ahoj“ a „děkuji“. Možná se to stále dělá, nezkontroloval jsem to.

Dnes každý, kdo pracoval na zákaznické podpoře, dobře ví, že přílišná zdvořilost může překážet a dokonce se zdát vynucená. Občas vám ale někdo na těchto stránkách udělá něco velmi důležitého a jediný způsob, jak mu poděkovat, je dát mu plus. Je to na hovno.

Efektivita nevyžaduje, abychom se stali bezduchými roboty. Postranní kanál může poskytnout autentičtější komunikaci mezi lidmi, pokud to samozřejmě uživatelé sami chtějí.

Někdy chci vědět, co se stalo po obdržení odpovědi

Stack Overflow funguje na transakčním principu: někteří lidé kladou otázky, jiní odpovídají. Co se stane po obdržení odpovědi? Kdo ví? Někdy se tomu divím. Byla moje odpověď užitečná? Jakému skromnému projektu pomohl? Co se tazatel dozvěděl?

Tuto zvědavost samozřejmě nelze uspokojit. Požadovat, aby uživatelé odpovídali za to, jak budou používat informace, které obdrží, by bylo velmi problematické, i když byste to mohli udělat. Ale je zajímavé o tom přemýšlet.

Gamifikace je účinná...

…při přeměně procesů na hry.

Stále mám trochu obavy, když ve stavovém řádku vidím malou ikonu +10 nebo +25. Možná jsou tyto drobné doteky gamifikace důvodem, proč se na stránky vracím již 10 let. Ale v průběhu let jsem také začal přemýšlet, co je to za hru Stack Overflow a co znamená vyhrát.

Jsem si jist, že systém byl vytvořen s těmi nejlepšími úmysly: odměňovat lidi za užitečné otázky a odpovědi. Ale jakmile přidáte vysoké skóre, vstoupí v platnost Goodhartův zákona někteří uživatelé začnou upravovat své akce, aby nedosáhli maximální hodnoty, ale aby získali maximální hodnocení. A to je důležité, protože...

Pověst neznamená to, co si myslíte.

Reputace není ekvivalentem technické způsobilosti, komunikačních dovedností nebo porozumění tomu, jak Stack Overflow funguje nebo by měl fungovat.

Nechci říct, že pověst je zbytečná. Jen to neznamená, co znamenají administrátoři Stack Overflow nebo co má znamenat slovo „reputace“. Uvědomil jsem si, že reputace je měřítkem vlivu. Zvažte dvě hypotetické odpovědi zveřejněné na webu:

  • Jedna o běžné git operaci. Napsal jsem třířádkovou odpověď za dvě minuty pomocí Googlu.
  • Druhý je o teorii propletených grafů. Na to dokáže odpovědět snad jen sto lidí na celém světě. Napsal jsem několik odstavců a ukázkový kód vysvětlující problém a jak jej vyřešit.

Za pět let byla první odpověď zobrazena 5 milionůkrát a získala 2000 300 hlasů pro. Druhá odpověď byla zkontrolována XNUMXkrát a byly jí uděleny dva ubohé hlasy pro.

Do jisté míry je to velmi nečestné. Proč odměňovat něco, co bylo ve správný čas na správném místě? (ne vše určuje štěstí, obrovskou roli hraje i pochopení pravidel hry). Na druhou stranu, první otázka ve skutečnosti pomohla mnohem více lidem než druhá. Možná stojí za to uznat, že uznání v jistém smyslu vede k hromadění „reputace“?

Takže „reputaci“ na Stack Overflow považuji za jakési měřítko vlivu. Skutečnou pověst nelze měřit pouhými body, pochází od komunity. Čí rady poslouchám, kdo pomáhá druhým, komu důvěřuji? Možná to budou všichni různí lidé, podle toho, jestli píšu v PHP nebo pro iOS.

S tím řečeno, nevím, co by měl Stack Overflow v tomto ohledu dělat. Byli by uživatelé stejně motivovaní, kdyby místo „pověsti“ získali „vychytralé body“? Zůstanou uživatelé stejně zapojení, pokud vůbec žádný bodový systém nebude? Myslím, že je to nepravděpodobné. A mýtus, že „reputace“ na Stack Overflow je ekvivalentní skutečné pověsti, prospívá nejen samotné stránce, ale také jejím nejaktivnějším uživatelům. No, opravdu, kdo by neměl rád zvyšování své pověsti?

Ne, jak se v životě nejčastěji stává, abyste získali skutečnou představu o tom, co se děje, musíte analyzovat nejen čísla. Pokud má příspěvek na Stack Overflow 10 tisíc bodů, tak se podívejte, jak tento člověk komunikuje, jaké otázky a odpovědi zveřejňuje. A ve všech případech kromě výjimečných mějte na paměti, že samotné skóre Stack Overflow pravděpodobně nenaznačuje nic jiného než schopnost dané osoby web používat. A podle mých zkušeností o tom často ani nemluví.

Bez Stack Overflow bych nebyl produktivní

Pokaždé, když potřebuji udělat něco složitého v git, jdu na Stack Overflow. Pokaždé, když potřebuji něco jednoduchého v bash, jdu na Stack Overflow. Pokaždé, když se mi objeví podivná chyba kompilace, přejdu na Stack Overflow.

Bez IntelliSense, vyhledávače a Stack Overflow nejsem produktivní. Soudě podle některých knih ze mě to dělá velmi špatného programátora. Asi bych propadl ve spoustě testů a neřešil spoustu problémů na desce. Budiž. Vážně, pokaždé, když používám .sort v JavaScriptu, musím vyhledat informace o tom, kdy dostanu -1, 0 nebo 1, a každý den píšu JS a vyvíjím nejoblíbenější editor pro daný jazyk.

Ne, Stack Overflow je neuvěřitelný nástroj. Jen blázen by nevyužil všechny nástroje, které má k dispozici. Tak proč nebýt vnitřním bláznem jako já? Šetřete své mozkové zdroje na důležité znalosti, jako je zapamatování si všech zápletek série Seinfeld nebo vymýšlení sofistikovaných slovních hříček (které v tomto článku tak chybí, ale bude zde mnoho dalších zcela jiného charakteru).

Stack Overflow je zázrak

Stack Overflow umožňuje komukoli, bez ohledu na zkušenosti nebo znalosti, vkládat programovací otázky. Na tyto otázky odpovídají úplně cizí lidé, z nichž většina tráví čas svého života a kariéry tím, že pomáhá druhým zdarma.

Zázrak je samotný fakt existence a výsledek práce Stack Overflow. Jsem si jistý, že ne všechno dopadne tak, jak jeho tvůrci zamýšleli, ale snaží se. Přes všechny nedostatky stránka už řadu let pomáhá obrovskému množství lidí, včetně mě.

Stack Overflow nebude trvat věčně. Jednoho dne přijde něco lepšího. Doufejme, že je to něco, co se poučí z chyb Stack Overflow a vezme si z něj to nejlepší. Do té doby doufám nebudeme brát tento web jako samozřejmost. Je to jak orientační bod, tak živá komunita, která je neustále doplňována novými lidmi. Pokud vás to znepokojuje, pamatujte, že je to všechno velmi křehké a i malé činy – jako pomoc dobře míněným, ale zatím neznalým nováčkům – mohou mít pozitivní účinek. Pokud tyto stránky kritizuji, tak jen proto, že mě na nich záleží a vím, jak je vylepšit.

PS

Když jsem přišel do Stack Overflow, byl jsem ještě školák. Právě jsem začínal psát (ES5!) JavaScript v Eclipse a zdálo se, že 90 % otázek začínalo „Using jQuery, just...“. A i když jsem nevěděl, co dělám, cizí lidé trávili čas tím, že mi pomáhali. Myslím, že jsem to tehdy moc nedocenil, ale nezapomněl jsem.

Lidé budou vždy chtít, aby Stack Overflow byl něco jiného: stránka s otázkami a odpověďmi; nástroj pro řešení problémů v domácnosti; životní úroveň programování. A pro mě je tato stránka, navzdory svému růstu a nedostatkům, v jádru otevřenou komunitou, kde si cizí lidé pomáhají učit se a zlepšovat se. A to je skvělé. Jsem rád, že jsem posledních 10 let součástí Stack Overflow a doufám, že v tom budu pokračovat. Chci se v příštím desetiletí naučit tolik nových věcí jako v předchozím desetiletí.

Zdroj: www.habr.com

Přidat komentář