Што научив за 10 години на Stack Overflow

Што научив за 10 години на Stack Overflow
Се ближи до мојата десетгодишнина на Stack Overflow. Со текот на годините, мојот пристап кон користење на страницата и перцепцијата за неа се промени многу, и сакам да го споделам моето искуство со вас. И јас пишувам за ова од гледна точка на просечниот корисник кој не е многу вклучен во животот на заедницата на страницата или нејзината култура. Деновиве одговарав само на прашања поврзани со VS Code, производот на кој работам. Сепак, порано активно учествував во дискусии на широк спектар на теми. За 10 години јас постави околу 50 прашања и даде 575 одговори, погледна низ огромен број туѓи коментари.

Џон Скит ја опиша културата на Stack Overflow многу подобро и поавторитативно отколку што некогаш ќе можам да направам. Нејзиното објавување влијаеше на некои од поглавјата во овој напис, но генерално ова се мои искрени размислувања за моите искуства за Stack Overflow, што е добро и лошо на страницата и како може да се користи денес. Оваа дискусија ќе биде прилично површна, без длабоко навлегување во работата на локацијата или нејзината историја.

Значи, еве што научив од 10 години користење на Stack Overflow.

Треба да бидете способни да поставувате прашања

На прв поглед, ништо не може да биде поедноставно: внесете неколку зборови во полето за текст, кликнете на „Поднеси“ и Интернетот магично ќе ви помогне да ги решите сите ваши проблеми! Но, ми требаа речиси 10 години за да сфатам кои зборови да ги напишете во тоа проклето поле за навистина да добијам резултати. Всушност, сè уште учам за тоа секој ден.

Поставувањето добри прашања е навистина потценета вештина (како што е пишувањето добар извештај за проблем, за таа работа). Прво, како воопшто да утврдиме дали прашањето е „добро“? Понуди на Stack Overflow навестување, кој ги наведува следните квалитети на добро прашање:

  • Дали се совпаѓа со темата на страницата?
  • Имплицира објективен одговор.
  • Сè уште не е прашано.
  • Истражувано е.
  • Јасно го опишува проблемот, обично со минимален, лесно репродуциран пример.

Во ред, но како изгледа „јасната изјава за проблемот“ во пракса? Кои информации се релевантни, а кои не се? Понекогаш се чини дека за да поставите добро прашање, прво треба да го знаете одговорот.

За жал, полето со мал текст не помага овде. Значи, дали е чудно што толку многу корисници објавуваат прашања со низок квалитет? Понекогаш единствениот одговор што го добиваат е линк до некоја збунувачка документација. И тие сепак ќе имаат среќа. Многу прашања со низок квалитет се едноставно тивко одбиени и тие исчезнуваат во бескрајната нишка прашања.

Поставувањето добри прашања е вештина. За среќа, може да се развие. Најчесто учев читајќи еден куп прашања и одговори, забележувајќи што функционира, а што не. Кои информации се корисни, а што досадни? Иако сепак ќе се плашите да го искористите стекнатото знаење во пракса и да поставувате прашања. Само обидете се и поучете од резултатите. Морам да признаам дека и јас сум малку засрамен од некои мои рани неуки прашања, иако можеби ова докажува дека многу ги подобрив моите вештини за испрашување откако се најдов на оваа страница.

Лошите и не толку добрите прашања не се иста работа

Нема да ја премачкам пилулата: некои прашања се само лоши.

Прашање кое се состои од скриншот и фразата „ЗОШТО ОВА НЕ РАБОТИ!?!“ - лошо. Зошто? Очигледно е дека авторот не вложил речиси никаков напор. Ова не е толку прашање колку барање: „направи ја оваа работа за мене!“ Зошто би го направил ова? Моето време е премногу вредно за да трошам помагајќи му на некого кој не сака да научи од почеток и нема да ја цени мојата помош. Дознајте што е Stack Overflow.

Сега размислете за прашањето со наслов „Како да ги отстранам сините граници на мојата страница“, кое се состои од неколку параграфи текст кој зборува за особината на контурите на CSS, но без експлицитно спомнување на зборовите „CSS“ или „контури“. Иако ваквото прашање може да биде спротивно на многу упатства за Stack Overflow, не се согласувам, тоа не е лошо прашање. Авторот барем се обидел да даде некоја информација, дури и без да знае што да даде. Обидот се брои, како и подготвеноста за перцепција и учење.

Сепак, многу соработници на Stack Overflow веројатно ќе ги третираат двете прашања на ист начин: гласаат против и затвораат. Ова е фрустрирачко и исклучува многу неискусни корисници пред да научат да поставуваат подобри прашања, па дури и да разберат како работи страницата.

Навистина лошите прашања не вредат од вашето време. Но, мора да се има на ум дека оние кои поставуваат не многу добри прашања го прават тоа ненамерно. Сакаат да поставуваат добри прашања, само не знаат како. Ако ги казнуваш дојденците слепо и без објаснување, како ќе научат?

Доброто прашање не гарантира одговор

Stack Overflow обично дава побрзи одговори на едноставни прашања на кои многу луѓе можат да одговорат. Дали имате прашање за бинарно пребарување во JavaScript или за HTML? Прекрасно! Добијте пет одговори за помалку од еден час. Но, колку е покомплексно или поконкретно прашањето, толку е помала веројатноста дека ќе добиете одговор, без оглед на квалитетот на формулацијата.

Веројатноста за добивање одговор исто така брзо паѓа со текот на времето. Кога некое прашање оди длабоко неколку страници во доводот, се губи. Една недела подоцна, можете само да се молите некој со вистинско знаење да налета на вашето прашање (или великодушно да кликнете на него).

Можеби нема да ви се допаднат точните одговори

Секој месец добивам неколку гласови против за таканаречените непопуларни одговори. Ова се видови на одговори кои во суштина велат: „Причината е затоа што е така дизајнирана“ или „не е можно затоа што...“ или „тоа е грешка што треба прво да се поправи“. Во сите горенаведени случаи, авторите не добиваат решение, па дури и решение. И јас се сомневам дека кога на луѓето не им се допаѓа тоа што го кажува одговорот, тие го одбиваат. Дури и ги разбирам, но тоа не значи дека одговорите се погрешни.

Се разбира, важи и спротивното: добрите одговори не мора да ви го кажуваат она што сакате да го слушнете. Некои од најдобрите одговори прво одговараат на оригиналното прашање, но потоа опишуваат други пристапи за решавање на проблемот. Понекогаш одговарам на прашање на корисникот, а потоа пишувам долг текст за тоа зошто не се препорачува да го правам тоа.

Секогаш кога изразите на ставот се поедноставуваат до гласови нагоре и надолу или копче за допаѓање, важните разлики се губат. Овој проблем често се појавува на Интернет. Колку социјални мрежи ви дозволуваат да направите разлика помеѓу „Го поддржувам ова“ и „Мислам дека е добро кажано, дури и ако не ми се допаѓа или се согласувам со тоа“?

Генерално, и покрај месечните негативни гласови, верувам дека заедницата на Stack Overflow гласа правично. Ќе се држиме до овој пат.

Речиси никогаш не прашувам на Stack Overflow

Колку подолго ја користев оваа страница, толку поретко поставував прашања на неа. Ова делумно се должи на мојот професионален раст. Многу од проблемите со кои се соочувам на работа се премногу сложени за да се изразат со едноставни прашања или премногу специфични за некој воопшто да ми помогне. Ги сфатив ограничувањата на страницата, па избегнувам да поставувам прашања на кои речиси сигурно нема да добијам добар одговор.

Но, ретко поставував прашања овде, дури и кога учев нов јазик или рамка. Не затоа што е толку генијалец, токму спротивното. Едноставно, по години на Stack Overflow, кога имам прашање, доаѓам до длабоко убедување дека веројатно нема да бидам првиот што ќе го постави. Почнувам да барам и скоро секогаш откривам дека некој веќе го прашал истото пред неколку години.

Набљудувањето на прашањата на другите луѓе е одличен начин да научите нови работи за вашиот производ.

Сега работам на VS законик, па ми стана навика да гледам прашања означени со vscode. Ова е одличен начин да се види како мојот код се користи во реалниот свет. Со какви проблеми наидуваат корисниците? Како може да се подобри документацијата или API? Зошто нешто што мислев дека е апсолутно јасно предизвикува толку многу недоразбирање?

Прашањата се важен сигнал кој покажува како се користи вашиот производ. Но, поентата не е да одговориме и да продолжиме понатаму, туку да се обидеме прво да разбереме зошто личноста има прашање. Можеби има проблем во производот што ви е непознат или некои претпоставки што несвесно сте ги направиле? Прашањата исто така ми помогнаа да откријам многу грешки и ме инспирираа да продолжам да работам.

Ако одржувате производ за програмери, не мислете на Stack Overflow како депонија (или уште полошо, гробишта за прашања). Редовно проверувајте за да видите какви прашања и одговори се појавиле. Ова не значи дека треба сами да одговорите на секое прашање, но сигналите од Stack Overflow се премногу важни за да се игнорираат.

Линиите помеѓу прашање, извештај за грешка и барање за функција се нејасни.

Доста прашања за VS Code на Stack Overflow беа всушност извештаи за грешки. И многу други се всушност барања за нови функции.

На пример, прашање со наслов „Зошто VS Code паѓа кога јас...?“ - ова е извештај за грешка. VS Code не треба да паѓа во различни ситуации. Одговарањето на прашања кои се извештаи за грешки е контрапродуктивно бидејќи авторите може да бидат задоволни со решението и никогаш да не поднесат вистински извештај за грешка. Во ситуации како оваа, обично барам од корисниците да поднесат извештај за грешка на Github.

Во други случаи, разликите може да бидат помалку очигледни. На пример, прашањето "Зошто JavaScript IntelliSense не работи во VS Code?" Во зависност од тоа како JavaScript IntelliSense не работи, проблемот може да падне во една од трите категории:

  • Ако се работи за проблем со конфигурацијата на корисникот, тогаш навистина е прашање за Stack Overflow.
  • Ако во опишаниот случај IntelliSense треба да работи, но не, тогаш ова е извештај за грешка.
  • Ако во опишаниот случај IntelliSense не треба да работи, тогаш ова е барање за нова функција.

На крајот на денот, повеќето корисници не се грижат за овие нијанси - тие само сакаат JavaScript IntelliSense да работи.

И иако овие разлики се важни за мене, како одговорен за проектот, генерално тие не треба да ми значат. Бидејќи прашањата, извештаите за грешки и барањата за функции се сите начини да се изрази една идеја: корисникот очекува нешто од мојот код и не го добива. Доколку производот е совршен, корисниците никогаш не би поставувале прашања за него, бидејќи сè би им било јасно и би го направил токму она што го сакаат (или барем јасно ќе им каже зошто не може).

И програмерите се луѓе

Луѓето се емотивни. Луѓето се ирационални. Луѓето се шупаци. Не секогаш, се разбира, но понекогаш! И верувале или не, и програмерите се луѓе.

Има една фантазија што ние програмерите сакаме да си ја кажеме: „Работиме со компјутери, па мораме да бидеме рационални. Ги разбираме криптичните симболи, затоа мора да бидеме паметни. Софтверот го зафати светот, па мораме да бидеме кул! Кул! Напред!!!"

Ова е погрешно. И ако беше така, тогаш Господ нека им помогне на останатите луѓе. Дури и на Stack Overflow, таа алатка за професионалци дизајнирана како објективна база на знаење, дури и во моето, многу специфично катче на VS Code, продолжувам да се среќавам со секакви бес: логички заблуди, навреди, менталитет на стадо итн.

Не се залажувајте: веројатно не сте толку совршени како што мислите. Но, тоа не значи дека не треба да се трудиме да се ослободиме од нашите недостатоци.

Другар, јас сум тој што го создал ова

И јас сум човек и одвреме-навреме ме нервира тоа што се случува на Stack Overflow. На пример, кога корисникот самоуверено пишува глупости или едноставно дава погрешен одговор на прашање поврзано со VS Code, производ што јас го создадов и кој многу добро го познавам. Чудно, се чини дека колку е попогрешен одговорот, толку е поголема веројатноста дека некој ќе го нарече неоспорен факт.

Кога ќе се случи ова, се однесувам како на сликата и го пишувам точниот одговор.

Што научив за 10 години на Stack Overflow

И неколку пати ова резултираше со долги нишки: тешко мене што се осмелив да го преиспитам нивното знаење за она што го создадов! Престанете да се обидувате да бидете во право цело време, проклето паметни момци! Затоа што сум во право!!!

Лесно е да се стане циничен во оваа безнадежност

Кога ќе се соочите со бесконечен прилив на прашања со низок квалитет, лесно е да станете цинични. Никогаш не слушнал за Google? Дали воопшто знае да конструира кохерентни реченици? Што си ти куче?

Понекогаш гледам десетици нови прашања во еден ден. Постојаното набљудување на сите овие прашања со низок квалитет ризикува да се лизне во презир или цинизам. Овој цинизам може да се прелее на страницата, бидејќи секој што наишол на преревносен модератор или поминал неколку часа истражувајќи и составувајќи прашање, ќе го потврди, само за да добие негативни одговори и да исчезне во заборав без никакво објаснување.

Секако, има корисници кои не вложуваат ни грам напор и поставуваат лоши прашања. Но, верувам дека најголемиот дел од неквалитетните прашања доаѓаат од луѓе со добри намери (иако глупави). Секогаш се трудам да се сетам што значи да се биде почетник. Кога само што почнувате, не разбирате како навистина функционира сè овде. Во некои случаи, дури и не знаете со кои зборови правилно да го изразите вашиот проблем. Верувај ми, тешко е да се биде во оваа позиција. И непријатно е кога сте облеани со замајување само поради поставување прашање.

Иако Stack Overflow направи многу за да им помогне на почетниците, има уште многу што треба да се направи. Се обидов да најдам рамнотежа помеѓу почитувањето на стандардите на страницата и попустливоста кон неискусните корисници. Ова може да вклучува објаснување зошто гласав за затворање на прашањето или објавување коментар што го охрабрува корисникот да даде повеќе информации. Имам уште простор за растење.

Од друга страна, не се двоумам дали да гласам против корисниците со репутација од 50 кои објавуваат прашања како „Кој е најдобриот распоред на VS код за развој на JavaScript?“, или кои поставуваат слики од екранот со сапуница наместо текст.

Понекогаш сакам само да ти се заблагодарам

Постои слаба култура на благодарност на Stack Overflow. Се сеќавам дека еднаш одамна страницата автоматски ги отсече зборовите „здраво“ и „благодарам“ од прашања. Можеби ова е сè уште направено, не сум проверил.

Денес, секој кој работел во поддршката за корисници добро знае дека премногу учтивост може да се попречи, па дури и да изгледа принудена. Но, понекогаш некој на оваа страница прави нешто многу важно за вас, а единствениот начин да му се заблагодарите е да му дадете плус. Тоа смрди.

Ефикасноста не бара од нас да станеме бездушни роботи. Страничниот канал може да обезбеди поавтентична комуникација меѓу луѓето, доколку самите корисници го сакаат тоа, се разбира.

Понекогаш сакам да знам што се случило откако го добив одговорот

Stack Overflow работи на трансакциски принцип: некои луѓе поставуваат прашања, други одговараат. Што се случува по добивањето одговор? Кој знае? Понекогаш се прашувам за ова. Дали мојот одговор беше корисен? На кој скромен проект му помогна? Што научил прашувачот?

Се разбира, невозможно е да се задоволи оваа љубопитност. Да се ​​бара од корисниците да одговорат за тоа како ќе ги користат информациите што ги добиваат би било многу проблематично, дури и ако можете да го направите тоа. Но, интересно е да се размислува за тоа.

Гејмификацијата е ефикасна...

...кога процесите се претвораат во игри.

Сè уште малку се загрижувам кога ќе ја видам малата икона +10 или +25 во лентата за статус. Можеби овие мали допири на гејмификација се причината што се враќам на страницата веќе 10 години. Но, со текот на годините, почнав да се прашувам и каква игра е Stack Overflow и што значи победата во неа.

Сигурен сум дека системот е создаден со најдобри намери: да ги награди луѓето за корисни прашања и одговори. Но, штом ќе додадете високи оценки, тој стапува на сила Законот на Гудхарт, а некои корисници почнуваат да ги прилагодуваат своите постапки не за да постигнат максимална вредност, туку за да добијат максимални оценки. И ова е важно затоа што ...

Репутацијата не значи тоа што мислите дека значи.

Репутацијата не е еквивалентна на техничка компетентност, комуникациски вештини или разбирање за тоа како функционира или треба да функционира Stack Overflow.

Не сакам да кажам дека репутацијата е бескорисна. Тоа едноставно не значи што значат администраторите на Stack Overflow или што треба да значи зборот „репутација“. Сфатив дека репутацијата е мерка за влијание. Размислете за два хипотетички одговори објавени на страницата:

  • Еден за вообичаена операција на желудникот. Напишав одговор од три линии за две минути користејќи Google.
  • Другата е за теоријата на заплеткани графикони. Можеби само сто луѓе во целиот свет можат да одговорат на тоа. Напишав неколку параграфи и примерок код објаснувајќи го проблемот и како да се реши.

За пет години, првиот одговор бил прегледан 5 милиони пати и добил 2000 гласа за. Вториот одговор беше разгледан 300 пати и беа дадени два бедни гласови за.

До одреден степен ова е многу нечесно. Зошто да наградувате нешто што било на вистинското место во вистинско време? (не се одредува сè со среќа; разбирањето на правилата на играта исто така игра огромна улога). Од друга страна, првото прашање всушност им помогна на многу повеќе луѓе отколку второто. Можеби вреди да се признае дека, во извесна смисла, признавањето води кон акумулација на „репутација“?

Така, сметам дека „репутацијата“ на Stack Overflow е еден вид мерка за влијание. Вистинската репутација не може да се мери само со поени, таа доаѓа од заедницата. Чиј совет слушам, кој им помага на другите, кому му верувам? Можеби сите ќе бидат различни луѓе, во зависност од тоа дали пишувам во PHP или за iOS.

Со тоа, не знам што треба да направи Stack Overflow во овој поглед. Дали корисниците би биле толку мотивирани ако наместо „репутација“ заработиле „лукави поени“? Дали корисниците ќе останат ангажирани доколку воопшто нема систем за поени? Мислам дека е малку веројатно. И митот дека „репутацијата“ на Stack Overflow е еквивалентна на вистинската репутација е од корист не само на самата страница, туку и на нејзините најактивни корисници. Па, навистина, кој не сака да ја зголеми својата репутација?

Не, како што најчесто се случува во животот, за да имате вистинска идеја за тоа што се случува, треба да ги анализирате не само бројките. Ако објавата има 10 илјади поени на Stack Overflow, тогаш погледнете како оваа личност комуницира, какви прашања и одговори објавува. И во сите, освен во исклучителни случаи, имајте на ум дека само резултатите од Stack Overflow веројатно нема да укажат на нешто друго освен способноста на лицето да ја користи страницата. И според моето искуство, тие често дури и не зборуваат за ова.

Не би бил продуктивен без Stack Overflow

Секој пат кога треба да направам нешто комплицирано во git, одам во Stack Overflow. Секој пат кога ми треба нешто едноставно во bash, одам во Stack Overflow. Секој пат кога добивам чудна грешка при компилацијата, одам во Stack Overflow.

Не сум продуктивен без IntelliSense, пребарувач и Stack Overflow. Судејќи според некои книги, ова ме прави многу лош програмер. Веројатно би паднал на многу тестови и нема да решам многу проблеми на таблата. Нека биде. Сериозно, секогаш кога користам .sort во JavaScript, морам да барам информации за тоа кога ќе добијам -1, 0 или 1 и пишувам JS секој ден, развивајќи го најпопуларниот уредник за јазикот.

Не, Stack Overflow е неверојатна алатка. Само будала не би ги искористил сите алатки што му стојат на располагање. Па зошто да не бидам внатрешна будала како мене? Зачувајте ги ресурсите на вашиот мозок за важно знаење, како што е меморирање на сите заплети од серијата Сајнфелд или смислување софистицирани игри на зборови (кои толку недостасуваат во оваа статија, но ќе има многу други од сосема поинаква природа).

Stack Overflow е чудо

Stack Overflow дозволува секој, без оглед на искуството или знаењето, да објавува прашања за програмирање. На овие прашања одговараат сосема непознати луѓе, од кои повеќето време од својот живот и кариера го поминуваат бесплатно помагајќи им на другите.

Чудото е самиот факт на постоењето и резултатот на работата на Stack Overflow. Сигурен сум дека не излегува сè како што планирале неговите креатори, но тие се обидуваат. И покрај сите недостатоци, страницата долги години им помага на огромен број луѓе, вклучувајќи ме и мене.

Stack Overflow нема да трае вечно. Еден ден ќе дојде нешто подобро. Се надеваме дека ова е нешто што ќе научи од грешките на Stack Overflow и ќе го извлече најдоброто од него. Дотогаш, се надевам дека нема да ја земаме оваа страница здраво за готово. Ова е и обележје и жива заедница, која постојано се надополнува со нови луѓе. Ако ова ве загрижува, запомнете дека сето ова е многу кревко, па дури и малите активности - како помагање на добронамерните, но сè уште неуките новодојденци - можат да имаат позитивен ефект. Ако ја критикувам оваа страница, тоа е само затоа што се грижам и знам како да ја направам подобра.

PS

Сè уште бев ученик кога дојдов во Stack Overflow. Само што почнав да пишувам (ES5!) JavaScript во Eclipse, и се чинеше дека 90% од прашањата започнаа со „Користење на jQuery, само...“. И иако не знаев што правам, странците го поминуваа своето време помагајќи ми. Мислам дека навистина не го ценев тоа во тоа време, но не заборавив.

Луѓето секогаш ќе сакаат Stack Overflow да биде нешто различно: страница за прашања и одговори; алатка за решавање на проблеми во домаќинството; животниот стандард на програмирање. И за мене, оваа страница, и покрај нејзиниот раст и недостатоци, во неговото јадро е отворена заедница каде што странците меѓусебно си помагаат да учат и да се подобрат. И тоа е одлично. Мило ми е што бев дел од Stack Overflow во изминатите 10 години и се надевам дека ќе продолжам да го правам тоа. Сакам да научам многу нови работи во следната деценија како што научив во претходната деценија.

Извор: www.habr.com

Додадете коментар