Меня иногда спрашивают обычные люди в реальном мире, что я делаю для жизни, и вот мой 15-секундный ответ:
Мы создали своего рода сайт Википедии для программистов, чтобы публиковать вопросы и ответы. Это называется переполнение стека.
По состоянию на прошлый месяц, прошло 10 лет с тех пор, как Джоэл Спольский и я начали Stack Overflow. В настоящее время я занимаюсь другими вещами, и у меня есть с 2012 года, но если я когда-нибудь узнаю что-нибудь, когда я умру, ясно, что это будет старый старый переполнение стека.
Вот где я, как правило, перебираюсь в кучу вещей rah-rah о том, как велика Stack Overflow, и, следовательно, насколько явным образом я являюсь ассоциацией за то, что являюсь основателем и всеми.
Мне все равно.
Тем не менее, мне кажется, является ли переполнение стека полезным для работающих программистов . Давайте проверим с одним из моих кумиров, Джон Кармак. Насколько полезно переполнение стека, с точки зрения того, что я считаю одним из величайших живых программистов?
@StackExchange @codinghorror SO, вероятно, добавила миру миллиарды долларов в увеличенную производительность программистов.
— Джон Кармак (@ID_AA_Carmack) 17 сентября 2013 г.
Я не буду врать, 17 сентября 2013 года был довольно хороший день. Когда я читал это, я буквально болел, и не только потому, что всегда читал слово «миллиарды» в голосе Карла Сагана. Это также было приятно противоположно почти каждому другим дням, когда я нахожусь в Твиттере, прокручивая репрессивную бесконечную ектению общих человеческих страданий и людей, кричащих друг на друга. Это напоминает мне, я должен проверить свой Twitter и узнать, кто еще не прав в Интернете сегодня.
Я горжусь и унижен публичной утилитой, которую Stack Overflow разблокировал для целого поколения программистов. Но я этого не делал .
- Вы сделали, когда вы внесли хорошо исследованный вопрос в Stack Overflow.
- Вы сделали, когда вы внесли краткий и ясный ответ на переполнение стека.
- Вы сделали, когда вы отредактировали вопрос или ответ на переполнение стека, чтобы сделать его лучше.
Все те «веселые размеры» единиц вопросов и ответов, коллективно внесенные рабочими программистами со всего мира, завершили строительство ресурса Creative Commons, который действительно конкурирует с Википедией в нашей области. Это … невероятно, на самом деле.
Но истории успеха скучны. Мир наполнен людьми, которым в основном повезло, и впоследствии не может перестать рассказывать людям, как это было их тяжелой работой и мокси, которые сделали это. Я нахожу неудачу гораздо более поучительной, и, когда вы строите бизнес и планируете будущее, я беру на себя роль Abyss Domain Expert ™ и начинаю смотреть на соревнования. Мне просто нужно кое-что сделать, вы знаете … для меня .
Таким образом, то, что я хотел бы сделать прямо сейчас, вглядывается в эту славную бездну немного и заставляет задуматься о проблемах, с которыми я сталкиваюсь, перед переполнением стека в течение следующих 10 лет. Прежде чем я начну, я хочу быть абсолютно кристально понятным в нескольких вещах:
-
Я не работал в Stack Overflow в любой степени с февраля 2012 года, и с тех пор у меня был нулевой рабочий день с той даты, более или менее по выбору. Есть ли у меня мнения о том, как все должно быть сделано? Вы встретили меня ? Я время от времени посылаю по электронной почте людям о высказанных мнениях? Я мог бы, но я, честно говоря, стараюсь сохранить его до абсолютного минимума, и я думаю, что мой послужной список электронной почты здесь обоснован.
-
Люди, работающие в Stack, потрясающие, и большинство из них (в том числе большая часть сообщества Stack Overflow, пока я нахожусь) могут лучше сформулировать миссию — и, возможно, чуть менее криво — чем я мог к тому моменту, когда я оставил. Буду ли я им доверять своей жизнью? Нет. Но я бы доверял им жизнь Джоэла!
-
Весь смысл упражнения «Переполнение стека» заключается в том, что это не для меня, или Джоэл, или любой другой Великий Человек. Stack Overflow работает, потому что он наделяет обычных ежедневных программистов во всем мире, как и вы, как и я. На мой взгляд, это похоже на родителя. Цель состоит в том, чтобы ваши дети в конечном итоге стали здоровыми, практикуя взрослых, которые не нуждаются (или, действительно, хотят ), вы больше можете повесить.
-
Понимаете, что вы читаете
слабые мнения сильно удерживалисильные мнения, слабо придерживающиеся одного из основателей, которые потратили огромное количество времени на работу с сообществом в первые четыре года жизни Stack Overflow формировать правила и нормы сайта в соответствии с их потребностями. Это всего лишь мое мнение. Мне нравится думать, что они сообщили мнения, но это не обязательно означает, что я могу предсказать будущее, или что я даже способен попробовать. Я никогда не позволял быть «квалифицированным», чтобы остановить меня от чего-либо, и я не собираюсь начинать сегодня вечером.
Содержание статьи
Stack Overflow — это wiki первая
Переполнение стека в конечном счете много больше общего с Википедией, чем дискуссионный форум. Под этим я подразумеваю, что вопросы и ответы на «Переполнение стека» в основном не оцениваются по их полезности конкретному человеку, но сколько других программистов которые могут ответить или могут потенциально помочь со временем . Я старался изо всех сил, чтобы подчеркнуть эти отношения со дня запуска в 2008 году. Обратите внимание, кто имеет верхнюю биллинг на этой диаграмме венна.
Stack Overflow позже добавила супер-опрятную функцию, чтобы выделить эту основную ценность в профилях пользователей, где она показывает, сколько других людей вы потенциально помогли с вашими вопросами и ответами до сих пор.
Наиболее распространенные жалобы, которые я вижу о переполнении стека, как правило, являются результатом этого фундаментального непонимания о том, какие вопросы и ответы на сайте в конечном итоге для и почему существует так много строгости во всем процессе .
Желаю, чтобы больше людей поняли, что цель Stack Overflow — это не «отвечать на мой вопрос», а «давайте совместно создадим артефакт, который принесет пользу будущим кодерам». Возможно, SO может сделать больше, чтобы обучить людей об этом.
— Джефф Этвуд (@codinghorror) 30 апреля 2018 года
Я постоянно удивляюсь количеству людей, даже в Hacker News сегодня, которые не понимают, что каждый вопрос и ответ можно редактировать в Stack Overflow, даже как совершенно анонимный пользователь, который не вошел в систему. Что имеет смысл, правильно, потому что Stack Overflow — это wiki и вот как работают вики. Любой может их редактировать. Идите вперед, попробуйте прямо сейчас, если вы мне не верите — нажмите кнопку «улучшить этот ответ» или «улучшить этот вопрос» на все, что можно улучшить, и сделайте это.
Ответственность за это недоразумение лежит на переполнении стека (и тем самым также означает, что я, по крайней мере, до 2012 года). Я предполагаю, что логика заключается в том, что «каждый программист наверняка видел, использовал и понимает переполнение стека к настоящему времени, 10 лет», но … Я думаю, что это опасное предположение. Новые программисты чеканируются каждую секунду каждого дня. Еще более усложняя дело, существует три уровня использования в переполнении стека, от самого большого до самого маленького, в стиле перевернутой пирамиды:
-
Я пассивно искал ответы на вопросы программирования.
Пассивный поиск и чтение высокоуровневых ответов переполнения стека, поскольку они появляются в результатах веб-поиска, возможно, являются основной целью [Stack Overflow] . Если Stack Overflow работает так, как предполагается, 98% программистов должны получить все ответы, необходимые им для чтения страниц результатов поиска, и не нужно будет задавать или отвечать на один вопрос во всей своей карьере. Это хорошая вещь! Отлично, даже!
-
Я участвую в переполнении стека, когда я застрял на действительно волосатой проблеме, и поиск не помогает.
Участие только в те времена, когда вы застряли, полностью действует. Тем не менее, я чувствую, что этот уровень — это то место, где большинство людей сталкиваются с трудностями при переполнении стека, потому что оно включает в себя кого-то, кто не может быть новым для переполнения стека как такового, но новичок в задании вопросов, а также в точное время стресса и что они должны получить ответ из-за проблемы, с которой они сталкиваются … и у них нет времени или желания заниматься строгими требованиями типа вики Stack Overflow для исследований, форматирования, показов предыдущей работы и ссылки на то, что они обнаружили в предыдущих поисках.
-
Я участвую в Stack Overflow для профессионального развития.
На этом уровне вы говорите о опытных пользователях Stack Overflow, которые внесли много ответов и, таким образом, получили довольно хорошее представление о том, что делает большой вопрос, какой они хотят отвечать самим себе. В результате они не склонны задавать много вопросов, потому что они самолечиваются посредством исчерпывающих поисков и исследований, но когда они задают вопрос, их вопросы являются образцовыми.
(Технически четвертый уровень здесь, для людей, которые хотят самоотверженно вносить творческие вопросы и ответы на вопросы, чтобы продвинуть всю область разработки программного обеспечения для следующего поколения разработчиков программного обеспечения. Но у кого есть время для святых ? , ты оставишь нас всех хуже, так что сбивай с него уже Скит.)
Это не шокировало бы меня, если бы люди потратили лет счастливо на уровне 1, а затем получили большой неприятный сюрприз, когда достигли уровня 2. Основное место для решения этого, на мой взгляд, a массово обновили и улучшили страницу с запросом . Также справедливо отметить, что, возможно, люди не понимают, что они подписываются на значительную часть работы, неявно беря на себя вики-стандарт «старайтесь, чтобы это было полезно для большего количества людей, чем просто для вас», когда задавали вопрос на переполнение стека, а затем откладывается отрицательной реакцией на то, что другие считают недостаточно исследованным.
Stack Overflow поглощает столько напряжения от принятия wiki-стандартов для контента. Даже если вы знаете об этом требовании заранее, не всегда ясно, что означает «полезный», так же не всегда ясно, какие темы, люди и места заслуживают страницы Википедии. Henrietta Lacks, абсолютно, но как насчет вашего двоюродного брата Дейва в Омахе с его чудовищным выпуском PHP 5.6?
Со временем дубликаты становятся обширными месторождениями наземных мин
Вот одна вещь, которую я действительно, действительно видел, и, честно говоря, я был рад, что уехал в 2012 году, прежде чем мне пришлось с этим справиться из-за невероятных технических трудностей: дубликатов . Из всех жалоб, которые я слышу о переполнении стека, я очень сочувствую.
Если вы согласитесь, что Stack Overflow — это система типов вики, то по тем же причинам, что вы, очевидно, не можете иметь пять разных статей об Италии в Википедии, Stack Overflow не может принимать повторяющиеся вопросы о том же проблема программирования . Хотя существует достаточный объем кода для проведения упреждающих поисков, когда люди печатают вопросы, плюс многие увещевания для поиска, прежде чем вы спросите, с приглашающим полем поиска и кнопкой прямо на обязательной странице, которую вы видите перед тем, как задать свой первый вопрос …
… поиск и идентификация дублированного контента — это безумно трудная проблема даже для такой компании, как Google, которая ничего не сделала, но специализируется на этой точной проблеме, для чего, 20 лет, с настоящей армией самых талантливых инженеров мира.
Когда вы задаете вопрос на сайте, который не позволяет дублировать вопросы, проблемное пространство сайта с 1 миллионом существующих вопросов сильно отличается от сайта с 10 миллионами существующих вопросов … или 100 миллионов. Вопрос о единственном уникальном вопросе идет от легкой трудности к миссии почти невозможным, потому что ваш вопрос должен прорезать узкий путь через эту обширную, огромную область проблем предшествующего уровня техники, не наступая на какие-либо смутно похожие наземные мины в процессе.
Но подождите! Становится все труднее!
-
Некоторое отклонение в аналогичных вопросах верно, потому что 10 разных людей зададут почти идентичный вопрос, используя 10 разных наборов совершенно несвязанных слов без перекрытия. Я знаю, это звучит безумно, но поверьте мне: люди потрясают этим. Мы хотим, чтобы все эти дубликаты существовали, чтобы они указывали на основной вопрос, который они представляют собой дубликат, хотя они все еще являются действительными поисковыми целями для людей, которые задают вопросы с необычным или редким выбором слов.
-
Может быть законно сложно определить, является ли ваш вопрос истинным дубликатом. Сколько перекрытий достаточно, прежде чем один вопрос программирования станет дубликатом другого? И по чьему определению? Мнения меняются. Это поддается человеческой интерпретации, а люди … ненадежны. Никто никогда не будет полностью доволен этой системой, в значительной степени по дизайну. Это напряжение испечено постоянно и навсегда.
У меня нет реальных ответов на дублирующую проблему, которая со временем ухудшается. Но я укажу, что в сети Stack Exchange существует множество прецедентов для разделения сайтов на «экспертные» и «начинающие» области с немного разными наборами правил. Мы видели это для Math vs. MathOverflow, для англичан и англичан, Unix vs. Ubuntu … возможно, пришло время для более ориентированного на новичку Stack Overflow где дубликаты менее нахмурены, а диалоговые правила немного более снисходительны?
Stack Overflow — это конкурентная система экспертного обзора
Stack Overflow действительно была построена, чтобы быть довольно явно конкурентной системой, с оговоркой, что «всегда есть более чем один способ сделать это». Этот выбор был основан на моем многолетнем наблюдении, что лучший способ мотивации любого программиста — это тонко намекнуть, что другой программист мог бы, возможно, сделать это лучше.
Это проявляется в системе публичной репутации на Stack Overflow, невероятной силе числа, напечатанного рядом с чьим-то именем, большим тиражом. Вся репутация в Stack Overflow происходит от признания ваших сверстников, а не «системы».
После того, как ваш вопрос будет задан или ваш ответ будет опубликован, его можно будет ткнуть, подтолкнуть, отредактировать, помечать, закрывать, открывать, сохранять, свертывать, свертывать и свертывать вашими сверстниками. Цель заключается в том, что Stack Overflow будет представлять собой систему экспертной оценки и дружеской конкуренции, например, обзор кода от коллеги, которого вы никогда не встречали в другом подразделении компании. Также вполне справедливо, если кто-то из программистов будет подвергать сомнению предпосылку вашего вопроса, если это будет сделано красиво. Например, действительно ли вы действительно хотите использовать это регулярное выражение для соответствия HTML?
Я полностью признаю, что конкурентные системы рецензирования не для всех и, таким образом, общий процесс сверстников, рассматривающих ваш вопрос, может не всегда чувствовать себя прекрасно, в зависимости от ваших обстоятельств и опыта в этой области — особенно в сочетании с существенной напряженностью вокруг утилиты и дубликатов Stack Overflow, уже поглощенными элементами вики. Вид двойного удара там.
Я слышал, как люди описывают процесс запроса вопроса о переполнении стека как вызывающего беспокойство. Для меня публикация на Stack Overflow предположила чтобы привлечь здоровый вид второстепенного «позвольте мне быть уверенным, чтобы показать мою лучшую работу»:
- беспокойство о том, чтобы дать представление своим коллегам-сверстникам
- тревога преуспевания в испытании
- беспокойство о том, чтобы показать новую работу с талантливыми коллегами, которых вы восхищаетесь
- беспокойство посещать ваш первый день в школе с другими учащимися на вашем уровне
Я представляю системы, в которых присутствует нулевая тревога, и я могу только думать о работах, где я давно переставал заботиться о работе и, таким образом, не беспокоился о том, показывал ли я даже на работу в любой день. Как это может быть хорошо? Скажем так, я не поклонник систем с нулевой тревожностью.
Возможно, конкуренция — это не ваше варенье. Может ли быть менее конкурентоспособная система Q & A, система без downvotes, система без закрытых голосов, где никогда не было никакого беспокойства о публикации чего-либо, просто сеть супер-поддерживающих людей, которые верят в вас и хотят, чтобы вы преуспели, несмотря ни на что? Абсолютно! Я думаю, что в Интернете существует множество альтернативных сайтов чтобы люди могли выбирать опыт, соответствующий их личным предпочтениям и целям. Должен ли Stack строить эту альтернативу? Он уже построен? Это открытый вопрос; не стесняйтесь указывать примеры в комментариях.
Stack Overflow предназначен для практикующих программистов
Еще одна проблема с путаницей, которая приходит в себя, — это то, кем на самом деле предназначена целевая аудитория для Stack Overflow. Это прямолинейно, и с первого дня все было одинаково:
Q & A для профессиональных и энтузиастов-программистов . Под этим мы подразумеваем
Люди, которые либо уже имеют работу программистом, либо могут быть наняты в качестве программиста сегодня, если захотят.
Да, на случай, если вам интересно, часть этого была явным деловым решением. Чтобы заработать деньги, у вас должна быть аудитория людей уже на зарплате программиста или на охоте за работой, чтобы быть программистом. Вся сеть переполнения стека может быть лицензирована Creative Commons, но она никогда не была некоммерческой игрой. С самого начала он планировался как устойчивый бизнес, и именно поэтому мы запустили карьеру «Переполнение стека» всего через год после того, как Stack Overflow сама … честно говоря, гораздо раньше, чем мы должны были, в ретроспективе. С тех пор карьера была тщательно добавлена в Stack Overflow на stackoverflow.com/jobs для более интегрированного и, безусловно, лучшего, лучшего, чем в 2009 году.
Выбор аудитории не был каким-то образом исключающим решением, но Stack Overflow определенно был разработан как довольно строгая система экспертной оценки, которая является отличной (IMNSHO, очевидно) для уже практикующих профессионалов, но почти все, что вы не хотите как студент или новичок . Вот почему я так сильно сжимаю себя, что практически превращаюсь вовнутрь, когда люди в Twitter отмечают, что они указали своим ученикам на Stack Overflow. То, что вы хотите для новичка или ученика в области программирования, — почти — полная противоположность того, что Stack Overflow делает на каждом шагу:
- один на один наставничество
- совместное использование экрана в режиме реального времени
- в прямом эфире
- теория и фоновые курсы
- стартовые задания и упражнения
- игровые площадки для эксперимента в
Все это очень хорошо и хорошо, но Stack Overflow делает NONE из них, по дизайну.
Может ли использовать переполнение стека, чтобы научиться программировать с первых принципов? Ну, технически вы можете делать что угодно с любым программным обеспечением. Вы можете попробовать иметь реальные разговоры о Reddit, если вы мазохист. Но ответ — да. Вы можете научиться программировать на Stack Overflow, теоретически, если вы являетесь вундеркиндом, который устраивает легкие конкурентные аспекты (репутация, закрытие, downvoting), а также отлично соглашается определять все ваши вклады на сайт с точки зрения полезности для другие, а не только как ученик, пытающийся научиться чему-то. Но я suuuuuuper не рекомендовал бы этого. Есть гораздо лучшие сайты и системы, чтобы учиться программисту. Может ли Stack Overflow строить начинающие и студенческие дружественные системы? Я не знаю, и это, конечно, не мой призыв. ?
И все. Теперь мы можем возобновить наши обычные не-абисы. Или что бы то ни было, что проходит в обычное время.
Надеюсь, все это не получится отрицательным. В целом я бы сказал, что состояние стека сильно. Но не имеет значения, что я думаю? Как и в 2008 году, так это в 2018 году.
Переполнение стека вы .
Это страшная часть, большой скачок веры в то, что Stack Overflow основан на: доверяя своим коллегам-программистам. Программисты, которые решили участвовать в переполнении стека, являются «секретным соусом», который заставляет его работать. По этой причине я продолжаю верить в сообщество разработчиков как самый большой источник обучения и роста. По этой причине я продолжаю получать так много положительных писем и отзывов о переполнении стека. Я не могу взять на это должное. Но вы можете.
Я давно узнал коллективную силу моих коллег-программистов, написавших на Coding Horror. Сообщество далеко, гораздо умнее, чем когда-либо. Все, что я могу спросить — любой, кого мы можем спросить, — это помогать друг другу по пути.
И если ваши коллеги-программисты решают признать вас за это, то я говорю, что вы хорошо и действительно заслужили это.
Сила переполнения стека начинается и заканчивается сообществом программистов, которые управляют сайтом. Каким должен быть переполнение стека, когда он вырастет? Что бы мы ни делали, вместе.
p.s. Счастливый 10-летний юбилей Stack Overflow!
Также см. Статью Джоэля о 10-летнем переполнении стека с периодом переполнения стека, «Пыль гамификации» и «Странные и безумные правила».