Секреты Stack Overflow

3374a4c70e894e919c8c41245bb11761.pngПриветствую, коллеги. За последние несколько лет Stack Overflow стал полезнейшим инструментом для разработчиков. Множество вопросов, заданных Гуглу и Яндексу, в первых же ссылках ведут на понятные и исчерпывающие ответы на этом ресурсе. Большинство разработчиков используют сайт Stack Overflow именно как базу знаний программистов, возможность быстро получить нужный ответ. Под катом я расскажу про несколько интересных кейсов подводной части айсберга: спрятанные ответы, награды, прокачивание кармы и многое другое, скрытое от поверхностного взгляда.

570836e5b1f848e983c188baaf1e1a69.pngМного раз на хакатонах и консультациях я стоял за спиной ребят, ищущих ответ на Stack Overflow. И не раз наблюдал такую картину: человек переходит на Stack Overflow из поиска, ищет ответ, помеченный зеленой галочкой, не находит и тут же закрывает вкладку, резюмируя, что «вот, на стеке тоже спросили — и никто не знает».

Иногда ответа действительно нет. Но чаще всего он есть, просто находится немного не там, где мы ожидаем:

  • Даже если на вопрос нет ни одного ответа, внимательно смотрим комментарии: возможно, нужная информация просто не оформлена в виде ответа. Такое часто бывает, если отвечающий страдает излишней скромностью и не считает, что его комментарий — это полноценный ответ.
  • Если нет ответа, помеченного зеленой галочкой, это совсем не значит, что на вопрос не ответили. Часто автор вопроса просто о нем забывает и не возвращается на сайт, чтобы пометить один из ответов. Если нет зеленой галочки, имеет смысл внимательно просмотреть все ответы, ориентируясь на количество голосов. Кстати, для этого предусмотрена специальная сортировка.
  • И даже если ответ есть, это еще не значит, что он единственный. Иногда бывает, что человек, задавший вопрос и не получивший удовлетворительного ответа, помечает первый попавшийся. Через некоторое время на вопрос могут дать более обстоятельный ответ, но автора вопроса уже и след простыл. Поэтому, если ответ, украшенный зеленой галочкой, вам не помог, не поленитесь просмотреть весь список. Возможно, где-то в конце списка притаилось настоящее решение вашей проблемы.

550265f74bac4bdb8aff676aff55980a.pngВозможность предложить награду (bounty) за ответ очень многие игнорируют: репутации, чтобы предложить награду, нету, да и зачем она кому-то может понадобиться — непонятно. Зря игнорируют, между прочим: даже сложнейшие вопросы, на которые никто не отвечает, сразу же получают ответы, если снабдить их bounty соответствующего размера. Более того, bounty можно установить не только для своего, но и для чужого вопроса.

Почему bounty настолько сильно влияет на привлекательность вопроса? Несколько факторов. Во-первых, это самый простой способ для новичков быстро получить много репутации. Во-вторых, топ-разработчики могут таким образом помериться силами: репутация в несколько сотен тысяч баллов на Stack Overflow выглядит очень солидно в резюме специалиста и помогает найти хорошую работу, если появляется желание ее поменять.

Откуда брать репутацию, чтобы тратить ее на bounty? Об этом ниже.

d4d396e98f16495b836f017e9a3071de.png

Самый очевидный способ заработать репутацию — это отвечать на вопросы. Он же — самый трудный. На простые вопросы можно быстро получить сразу несколько ответов, а вот на сложные вопросы ответить действительно… сложно. Пользователи Stack Overflow, зарабатывающие репутацию с помощью ответов, ставят специальные фильтры для получения мгновенных уведомлений о новых вопросах в очень узкой области, которую они лучше всего знают. Такие специалисты могут ответить на вопрос в течение десяти минут, получая за свои усилия максимум баллов репутации в день.

Фильтры ставятся по тегам. Если вы хотите, чтобы ваш вопрос увидело максимальное количество экспертов, не поленитесь потратить лишние 30 секунд и укажите все возможные теги, имеющие хоть какое-то отношение к вопросу.

Но что делать, если у вас нет никакого желания караулить вопросы и тратить силы на бесчисленные ответы, лишь малая часть которых принесет репутацию? Решение довольно неожиданное — задавать вопросы.

df611987bb7b4f0dbe99fc7684a86f70.pngРепутация выдается не только за ответы, но и за то, что ваш вопрос кому-то понравился. При этом вопрос не обязательно должен быть гениальный. Многие завсегдатаи отмечают голосами просто аккуратно оформленные вопросы, соответствующие писаным и неписаным правилам сервиса: без грамматических ошибок, с выделением кода и т. д. Более того, новые пользователи часто голосуют за вопросы, которые они нашли через поиск, поэтому каждый вопрос может стать постоянным генератором репутации. Несколько десятков вопросов за год способны на следующий год принести тысячу-другую баллов репутации, которые затем можно будет потратить на bounty для действительно важных вещей. Если у вас что-то не получается дольше получаса, хорошей идеей будет уделить десять минут составлению качественного вопроса на Stack Overflow, после чего можно спокойно вернуться к поиску решения. Если кто-то ответит — вы сэкономите кучу времени. Если вы сами найдете ответ — смело отвечайте на собственный вопрос, это займет всего пару минут, зато в будущем увеличит поток пассивно генерируемой репутации.

Далеко не все знают, что stackoverflow.com — это не единственный сайт экосистемы вопросов и ответов, созданной Джоэлом Спольски. Это постоянно растущая сеть сайтов, суммарно называемая Stack Exchange и объединяющая десятки узкоспециализированных площадок с одинаковым интерфейсом и единым пользовательским профилем (но раздельной репутацией). Полный список сайтов на stackexchange.com/sites также содержит площадки для обсуждения работы самой сети и Area 51, где предлагают и «выращивают» новые сайты вопросов и ответов.

b5b38636069d4e3a9465d4ac480fa8f3.pngСеть Stack Exchange включает в себя не только специализированные сайты вроде «Вопросы по Ubuntu», но и версии Stack Overflow для разных регионов. В частности, недавно была запущена русская версия, которая доступна по адресу ru.stackoverflow.com.

За последний год на многих конференциях и митапах я часто сталкивался с непониманием разработчиками назначения локализованной версии. Многие высказываются в духе «Любой настоящий программист © знает английский. Зачем нам еще один стек с меньшим количеством участников и вопросов??!»

В действительности всё совсем не так, как на самом деле. Назначение русского Stack Overflow вовсе не в том, чтобы дублировать функциональность англоязычной версии. Джоэл создает локализованные версии не для языка как такового, а для стран и регионов. Попробуйте спросить на основном сайте что-нибудь, связанное с разработкой для 1С, — вы там даже тега такого не найдете. Зато на русской версии и теги, и вопросы, и ответы — все представлено в большом количестве. IT — огромная область, разделенная не только платформами и областями, но и регионально. Во многих странах и регионах есть свои крупные игроки софтостроения, которые специализируются на локальном рынке и мало известны за его пределами. Русскоязычная версия Stack Overflow — возможность для разработчиков обсуждать специфические для России решения, использовать теги на русском языке, общаться в домашнем часовом поясе и прокачивать релевантную репутацию.

Кстати, по поводу репутации. Как я уже писал выше, заработать высокую репутацию на глобальном Stack Overflow очень сложно из-за слишком сильной конкуренции и отличий в часовых поясах. При этом высокая репутация на стеке украшает резюме, что особенно важно для начинающих специалистов, желающих продемонстрировать квалификацию при отсутствии формального стажа. Недавно появившийся русский стек позволил многим разработчикам начать прокачивать репутацию «с чистого листа» в гораздо более комфортных условиях.

7a61ff73894243c8b91487887397b6a2.pngИ последнее. На консультациях меня часто спрашивают, на каком языке писать комментарии в исходном коде. Хочется, конечно, писать по-английски. Но тут есть тонкий момент: большинство айтишников действительно хорошо владеют английским —, но только для чтения. Когда нужно написать понятный и емкий комментарий, у многих случается пробуксовка: одно дело бегло читать статьи, новости и книги, а совсем другое — писать самому. Многие разработчики формулируют вопросы для стека так, что даже после вдумчивого прочтения непонятно, что же они имеют в виду.

Комментарии на английском желательно писать, если большинство разработчиков в команде действительно хорошо знают английский язык. То же и с вопросами: многие разработчики не хотят задавать вопросы просто потому, что им не так просто их формулировать на чужом языке. Русская же версия убирает этот барьер, и теперь у коллег больше не будет такой удобной отмазки: «На стеке сложно хорошо вопрос сформулировать, поэтому я не стал спрашивать и сам три часа копался» :)

© Habrahabr.ru