Какво научих за 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 outline, но без изрично да се споменават думите „CSS“ или „outline“. Въпреки че въпрос като този може да противоречи на много указания на 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 000, които публикуват въпроси като „Кое е най-доброто оформление на VS код за разработка на JavaScript?“ или които качват екранни снимки на код вместо текст.

Понякога просто искам да ти благодаря

В Stack Overflow има слаба култура на благодарност. Спомням си, че едно време сайтът автоматично изряза думите „здравей“ и „благодаря“ от въпросите. Може би това все още се прави, не съм проверил.

Днес всеки, който е работил в отдела за поддръжка на клиенти, знае добре, че твърде много учтивост може да попречи и дори да изглежда принудена. Но понякога някой в ​​този сайт прави нещо много важно за вас и единственият начин да му благодарите е да му дадете плюс. Гадно е.

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

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

Stack Overflow работи на транзакционен принцип: някои хора задават въпроси, други отговарят. Какво се случва след получаване на отговор? Кой знае? Понякога се чудя на това. Беше ли полезен отговорът ми? За какъв скромен проект е помогнал? Какво научи питащият?

Разбира се, невъзможно е да се задоволи това любопитство. Изискването от потребителите да се отчитат как ще използват информацията, която получават, би било много проблематично, дори и да можете да направите това. Но е интересно да се мисли за това.

Геймификацията е ефективна...

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

Все още се притеснявам малко, когато видя малката икона +10 или +25 в лентата на състоянието. Може би тези малки щрихи на геймификацията са причината да се връщам на сайта от 10 години. Но през годините също започнах да се чудя що за игра е Stack Overflow и какво означава победата в нея.

Сигурен съм, че системата е създадена с най-добри намерения: да възнаграждава хората за полезни въпроси и отговори. Но веднага щом добавите високи резултати, той влиза в сила Законът на Гудхарти някои потребители започват да коригират действията си не за постигане на максимална стойност, а за получаване на максимални оценки. И това е важно, защото...

Репутацията не означава това, което мислите, че означава.

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

Не искам да кажа, че репутацията е безполезна. Това просто не означава какво имат предвид администраторите на Stack Overflow или какво трябва да означава думата „репутация“. Разбрах, че репутацията е мярка за влияние. Помислете за два хипотетични отговора, публикувани на сайта:

  • Едно за обща git операция. Написах отговор от три реда за две минути с помощта на 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 е невероятен инструмент. Само глупавият не би използвал всички налични инструменти. Така че защо да не бъдеш вътрешен глупак като мен? Запазете мозъчните си ресурси за важни знания, като например запаметяване на всички сюжети от поредицата Seinfeld или измисляне на сложни каламбури (които толкова липсват в тази статия, но ще има много други от съвсем различно естество).

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

Добавяне на нов коментар