Pull to refresh

Comments 100

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

Это как раз «одноразовые» задачи, для них Стек отлично подходит. Речь в заметке о ваших основных задачах.

По основным тоже бывает, что какие-то библиотечные функции не могу запомнить, как правильно вызывать, например. Тоже не вижу проблемы, когда на поиск ответа нужно 20-30 секунд. Да, согласен, что я делаю Ctrl+C — Ctrl+V, особо уже и не смотрю, так что вряд ли когда-то это запомню.
Когда человек в следующий раз столкнется с той же проблемой, он снова полезет на Стек. И снова. И снова.
Чужое решение не запоминается.

Ерунда.
Я программист 3д графики. До выхода UE в Open Source — моя основная работа была завязана на программирование 3Д движков с нуля.
Я не смогу в тетрадке без внешних источников написать работающий код инициализации OpenGL. Я на нём работаю с 2004 года. Проектов написано под сотню, разного уровня сложности. Я много раз по документации писал инициализацию. Но не смогу её точно вспомнить. Зачем мне её в деталях учить?

Нет стимула разбираться, как оно устроено.

Ерунда.
Если вы пихаете код из внешнего источника не разобравшись в нём — это не проблема внешнего источника.
Это проблема вашего лида, который до сих пор вас не уволил.

Нормальные программисты берут решение с SO. Смотрят что в этом решении происходит и тогда уже копируют в своё код, без изменений, если код на 100% соответствует ситуации. Но никогда не пихают в свой код чужой черный ящик.
Смотрят что в этом решении происходит и тогда уже копируют в своё код,

«Смотрение» в чужих решениях обычно очень поверхностное. Нет глубокого понимания, нет обучения.

Пару лет назад столкнулся с задачей по блокировке скролла у списка в Android.
https://habrahabr.ru/post/218307/

Нашел решение, разобрался почему оно хреновое, написал в итоге своё(вроде тоже на основе обсуждения в SO, уже точно не помню).
Прошло два года:
1) Я ничего не помню о диспетчеризации событий в Android. Не работаю с этим, соответственно не помню. Несмотря на то, что в тот момент достаточно детально разобрал ситуацию.
2) Мне за два года больше ни разу знания о диспетчеризации событий в Android не пригодились.

Может давайте отделять фундаментальные знания, которые надо изучать, от всякой мишуры, которую сделал и забыл? Причем забыл, независимо от того, сам разработал решение или нагуглил.
UFO just landed and posted this here
Полностью согласен. Не могу понять, как можно взять код и пихнуть без того, что поймешь, что он именно делает. Что тебе нужно, а что не нужно. Ни я конечно же не встречал моментов, чтоб просто взять и вставить. Все равно. Сначала вставляешь, потом делаешь под себя. Что-то убираешь, что-то добавляешь.
Как? Ты вставил код, а потом баги пошли, как будешь дебажить, если не знаешь, что внутри, как работает?
Нормальные программисты берут решение с SO. Смотрят что в этом решении происходит и тогда уже копируют в своё код, без изменений, если код на 100% соответствует ситуации. Но никогда не пихают в свой код чужой черный ящик.

Вот только остальные 95% копипастят не глядя…
А я вот с вами не согласен. Во первых очень и очень часто на Stackoverflow объясняется трудная часть которая не понятна в документации, ведь в документации нужно закончить все и к сроку, а в SO пишется для рейтинга и хороший ответ может взвинтить ваш рейтинг. В общем, Stackoverflow это в большинстве случаев та же документация только написана (разжевана) более понятным языком. Кроме того не всегда знаешь что решение проблемы X лежит в статье Y в документации к продукту Z, и чтобы это найти самому нужно потратить иногда не один час. И да, понимание тоже приходит. Учил JSF по ответам BalusC на SO, легендарная личность.
Stackoverflow это в большинстве случаев та же документация

Stackoverflow в большинстве случаев — это Add two variables using jquery. Есть и исключения, конечно, но они не опровергают общую картину.

А в чем проблема этого вопроса? Если его не заминусовали то он вполне легитимен для сообщества, а то что его заплюсовали значит, что он очень даже актуален. Да, вопрос простой но не стыдно «не знать», стыдно не спросить. Кроме того в моем случае SO очень часто сыграл роль желтого утенка, например вот здесь.
Там шутка в несоблюдении принципf KISS и критике попыток вколачивания микроскопом гвоздей(достаточно посмотреть ответ Definitely use jQuery, пример вкусного тонкого троллинга).
>Скачать документацию, чтобы была под рукой. Я рекомендую devdocs.io — на выбор 130 языков и фреймворков, бесплатно.

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

Я начал писать ответ, но понял, что если для вас нет разницы между гуглением и чтением документации — вряд ли смогу что-то объяснить.

>Я начал писать ответ, но понял, — вряд ли смогу что-то объяснить.

«Если учёный не может объяснить уборщице, которая убирается у него в лаборатории, смысл своей работы, то он сам не понимает, что он делает.» © Эрнест Резерфорд

UFO just landed and posted this here

А вы предлагаете читать документацию последовательно, сверху вниз?

В общем-то, имхо. это — самый эффективный метод чтения документации с точки зрения уровня полученных знаний и понимания этих знаний. Время и силы — это уже, конечно, другой вопрос и кому что важней.

Это, знаете ли, от документации зависит. Если у вас документация типа reference, то читать ее подряд — приблизительно так же полезно, как читать подряд энциклопедический словарь.


Ну и да, вот уж понимание от этого точно не зависит.

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

Это и правда вопрос формата "полезно ли читать подряд энциклопедический словарь". Для людей с обычной памятью, мне казалось, принято считать, что нет.

Возможно я неправ, но мне кажется вы имеете в виду, что гугление дает обрывочную и неполную информацию, в то время как чтение документации дает целостную картинку в голове, что, в свою очередь, приводит к более полному понимаю и более эффективному использованию знаний.

Но это справедливо только тогда, когда документация написана качественно. А это к сожалению не так в подавляющем большинстве случаев. И тогда на помощь приходит SO, на котором товарищи помогают обойти грабли, не учтенные в документации.

Не вижу причин противопоставлять эти два метода получения знаний.
Документация сейчас вся какая-то из систем автодокументирования. А программисты не любят писать документацию. Вот такая вот фигня.
Более того, SO зачастую выдает несколько рабочих решений одной и той же проблемы, проанализировав которые получаешь гораздо больше знаний, чем может дать документация. К тому же со временем на SO возникают уточнения для существующих решений, с использованием новых фич и тд., за изучением которых просто не угнаться в связи со скоростью развития фреймворков и платформ.
По моему, ерунда какая-то. Решение может в себя включать несколько разделов мануала сразу. Так что лучше посмотреть решение, а уже затем лезть в мануал и посмотреть что там еще написано.
Я как раз отношусь к «правильным» программистам, которые сами до опупения разбираются с проблемой, вместо того чтобы загуглить. И вот что я могу по этому поводу сказать: уже неоднократно ловил себя на том, что обнаружив багу в чужой библиотеке, докапываюсь до ее сути, исправляю ее, после чего выясняю что это никому не нужно — проект давно не обновляется, а в первой же строчке выдачи гугла решение в две строчки, как можно работать с библиотекой, чтобы не натыкаться на эту ошибку. То есть, я молодец, вроде как… только вот кому и какая польза от моих действий?

Польза вам. Вы получили левел-ап. А те, кто взяли «решение в две строчки» — нет. С годами эти левел-апы ощутимо проявляются в размере заработной платы.

С годами эти левел-апы ощутимо проявляются в размере заработной платы.

Или не проявляются. Ибо мои левел-апы оценить нельзя, а производительность «копипастера» как раз можно. Так что так себе аргумент — только для самоуспокоения годится.

Производительность «копипастера» часто падает до нуля при столкновении с нестандартной задачей/багом и и тогда оценить левел-апы становится очень просто. Один может решить задачу, а другой нет. Вопрос о квалификации и ЗП в такие моменты становится весьма очевидным.

И никого это не чешет, просто копипастеру дают другую задачу и он продолжает говнокодить дальше. Поверьте, еще ни на одном месте работы я не встречался с тем, что качество ценится больше количества. Слишком многие компании сейчас продают человеко-часы а не решение проблемы. Бесит жутко, но сцуко реальность.
Поверьте, еще ни на одном месте работы я не встречался с тем, что качество ценится больше количества

Попробуйте поработать в компании, которая делает свой продукт и руководство которой понимает, что им жить с этим легаси еще не один год. Таких конечно меньше чем тех кто человеко-часы продает, но они есть.

Практика показывает, что это ваше "часто" случается крайне редко! Потому что мир в основном состоит из рутинных и одинаковых задач, решение которых уже найдено и легко "гуглится".


У меня есть знакомый, который шлёпает телеграм-боты как блины, да еще и денежки за это получает, и при этом он практически не знает программирования! Это не фигура речи — это на самом деле так, и он этого не скрывает. Копипаст (в т.ч. и с Хабрахабра), Гугл, Стаковерфлоу, на вопросы "как это делается в Питоне" чаще всего я отвечаю — и всего этого оказывается более, чем достаточно. Как-то (не так плохо!) работает, заказчик доволен, приятель не голодает — всё отлично.


Я себе не могу позволить подобное — как же, я же как бы профессионал, мне нужно разобраться прежде, чем скопировать чьё-то чужое, а лучше, конечно, написать самому. Но когда прикидываю в уме, сколько денег я не заработал из-за своих принципов, ко мне приходит следующее понимание: в глазах посторонних профессионалом выглядит именно мой приятель.

UFO just landed and posted this here

Неа. В глазах людей, которые в этом не разбираются он выглядит профессионалом, а вот нормальные люди, чьё мнение действительно кого-то колеблет в профессиональной сфере, смотрят в код, ну или нанимают людей, которые будут понимать в людях и которые могут попросить другого человека посмотреть в код и сказать своё мнение о человеке.
Как ни странно код достаточно явно показывает отношение человека к проекту. Самое тупое — если где-то табы, а где-то пробелы в качестве отступов. Где-то snake_case, а где-то camelCase или вообще что-то гибридное. Связность названий переменных многое может сказать. Например снаружи использовались машины-иномарки, а в функции загрузки аргумент называется как грузовики.
Копипасту отличить вообще не трудно.
И вот лично я всегда прошу сначала показать код человека, с которым мне предстоит работать. Можно многое сказать о нём сразу же. И о профессионализме можно судить именно по качеству продукта.
Вот только единственная проблема, работодатели к таким тонкостям не прислушиваются. Им главное — скорость. Это всегда проблема. И не важно что ты делаешь всё красиво и читабельно. Если им резко нужно на 3 дня раньше, то ты должен сделать на 3 дня раньше, и не важно, что у тебя эти 3 дня на тестирование в плане были отведены. Короче всё как всегда, там где есть быстрые деньги нету качества.

Простите, но похоже на старческое брюзжание. Пока есть инструменты и доступ в «коллективный разум» вроде SO, позволяющие в 10 раз быстрее решить задачу не отвлекаясь на лишние детали, разумные и ценящие свое время разработчики будут это использовать. Лично я этим пользуюсь, даже если приходится ходить часто за одним и тем же решением, потому что не хочу забивать голову знаниями, которые устареют в течение года или с выходом новой версии библиотеки (а в мире js устареть может в течение месяца а то и недели). Просто потому что в течение этого месяца я схожу 10 раз на SO за решением одной и той же проблемы, не запоминая, а после мне это знание не понадобится уже никогда. Вроде нюансов инициализации windows-приложения на C++ STL в 95 году или программирования резидентов под MS-DOS 5. Наверное, обидно тем, кто потратил человекомесяцы на вникание в эти темы, а сейчас это никому нафиг не нужно. Мне такие упущенные годы не нужны, я лучше за это время что-нибудь фундаментальное изучу вроде алгоритмов и структур данных, паттернов и т.п. А для параметров инициализации фреймворка или нюансов имплементации языка регулярных выражений в конкретном языке — пусть служит «внешняя память». Все равно завтра это всё будет уже не нужно. Бобука уважаю, но насчет блокировки SO — имхо, он ересь несёт.
Мне кажется я понимаю что хотел сказать автор. Он не против SO (или остальных интернетов), он хочет сказать что в некоторых случаях готовый ответ не несет пользы для самого девелопера. Это как в притче: или дать рыбы (накормить 1 раз), или научить ловить рыбу (накормить на каждый день).

Разбираясь в проблеме самостоятельно — ты между делом узнаешь подробно как оно устроено, запомнишь ньюансы которые тебе могут пригодиться позже, проникнешься архитектурой. Ведь не зря джуниоров заставляют заглянуть, например, во внутрь java.util.HashMap — там ведь очень много полезного.

SO отличный инструмент, и когда нет времени на ресер — он прекрасно спасает, но как говорит автор — нужно уметь и головой думать, и в исходниках ковыряться.

Мне кажется, у вас с автором одинаковое понимание ツ

Чет какой-то совсем бред. По моему, тут все складывается из человека. Я более менее активно пользуюсь SO, но не каждый раз бегу туда. Бегу на первый линк в гугле(условно говоря), будь то мануал, или стек, неважно. Если это мануал, пробую, не получается — иду на стек. Если это стек, процедура та же, только потом иду в мануалы. Я конечно понимаю, да мозги потренировать и прочие бредни, но мы ведь не сидим, теоремы не выводим, в течение 5ти минут самостоятельно, ибо глупость же, нет?
да мозги потренировать и прочие бредни

Да, мозги потренировать и прочие бредни. Точно подметили.

В контексте срочно решаемой задачи — это бредни. Когда мне нужно обеспечить единожды воспроизводимый функционал — тоже. Как правило, если ты не задаешь вопрос на СО, а нагугливаешь его, то код ответов зачастую не полностью совпадает с решением текущей задачи — возникает необходимость допилить, доработать, исправить — вникнуть в суть. Проблема выедена из яйца, так можно до чего угодно докопаться: «разраб вот полез в интернет вместо книжки, а как же листание страничек, просмотр оглавления, там же тоже информация, которая сразу отложится в мозгу! А еще лучше по рукописям, пущай на каждой странице рыщет в поисках нужной функции! А еще лучше пусть наугад названия и аргументы угадывает!».
Понятное дело, что пользоваться коллективным разумом нужно в РАЗУМНЫХ(какая ирония, да?) пределах, я думаю, каждый тут это осознает. Отсюда — нет смысла говорить людям, что «не нужно подчистую копипастить код ай-я-яй».
Скачать документацию, чтобы была под рукой. Я рекомендую devdocs.io — на выбор 130 языков и фреймворков, бесплатно.


Дополнительно рекомендую Zeal — zealdocs.org. Заявлено 195 docsets

В некоторых моментах лучше чем devdocs. Например есть MySQL документация, которая в devdocs отсутствует по лицензионным соображения. Zeal имеется в репо Ubuntu и Fedora.
Во-первых, никто не заставляет тупо копировать — практически всегда рабочий пример на Stack Overflow идет с кратким разъяснением. Еще очень полезны комментарии к ответу. Прочесть их — дело нескольких минут, при этом получаешь очень четкую картину конкретной проблемы без растекания по дереву. Короче, все нормально с новыми нейронными связями.

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

Ну и в-третьих, все слишком быстро стало меняться, если раньше я ставил с нескольких дисков MSDN и мог пользоваться им чуть ли не годами, то сейчас такое просто не прокатит.
При таком количестве разношерстных языков, библиотек, ОСей, тулов, без SO, как мне кажется, уже не обойдешься.
Это раньше бы сработало, во времена FoxPro, Clipper, скажем…
Да и задачи усложнились, в ответ на усложнение среды…
Но когда есть толковая документация, это хорошо и может быть полезнее заглянуть в нее и посмотреть какие-то хитрые моменты, прежде чем рыться в SO или загрязнять его вопросами. Другое дело, что сейчас это редкость, особенно во фронтенде…
Как по мне, так без интернета не обойтись. Просто нужно грамотно пользоваться. Не просто копировать, а разбираться в алгоритме и так далее, возможно даже после работы. Иначе скорость работы страдает и это бьет сил но по конкурентоспособности. Тем более в фреймворка сейчас много методов и классов, в которых не так просто разобраться. Тут Интернет нужен.
А вот если программист за каждой ерундой лезет, то это уже не круто. Основы нужно знать наизусть и применять свободно.
Ок. А в свои старые исходники смотреть можно? Я не буду копировать, просто посмотрю.
Отлично, прекращаем использовать все собственные наработанные универсальные библиотеки, пишем все каждый раз с нуля, спотыкаясь на тех же граблях (потому что помнить все в принципе невозможно).
Использовать не равно копировать.
А как я смогу использовать свой старый код без его копирования в виде файлов в текущий проект? Никто ведь не говорил, что речь шла про создание нового пустого файла, открытие старого, скопировать-вставить. Это все-равно использование своего кода, написанного ранее. Демагогия уже какая-то пошла.
Как я понял, девушка в той беседе имела в виду именно копирование кусков кода. Ясное дело, что копирование файлов в новый не возбраняется, хотя и в этом случае правильнее хранить reusable код в общей папке и включать оттуда файлы, куда нужно.
Там как раз не было ни слова сказано, как это делается, разговор был про использование своего кода, написанного ранее. Бобук, не разобравшись, что это может быть годами проверенный и оформленный в виде библиотеки код, сразу сказал — вы, девушка, остановились в развитии, фу такой быть. Я бы в этом случае скорее сказал — фу быть Бобуком.
UFO just landed and posted this here
Эта проблема обсуждается уже давно и не только в отношении программирования. Раньше надо было знать ответ, сейчас надо уметь задавать вопрос. И еще вопрос, что сложнее.
Кcтати, если мне не изменяет память, у SO даже есть раздел с «документацией», основанной на лучших вопросах.

Нет, там отдельная система, слабо связанная с основным сайтом.

Если ваша работа полностью покрывается ответами на SO — у вас плохая работа, уж простите.
Из тысячи найденных на со решений я всего пару раз скопировал оттуда код без изменений. И то, только потому что решение было ровно такое как если бы я и сам его написал. Так что не стоит винить в копипасте stackoverflow, думаю, тут есть человек более за это ответственный.

Часто нужен не сам код, а идея по решению проблемы.

На протяжении десяти лет даже от опытных программистов про вот эту копипасту со SO, но никогда не доводилось делать самому. SO хорош как сборник релевантных терминов, когда не знаешь как подступится к документации или даже гуглу, а за тебя сформулировали вопрос. Узнаешь имя класса/паттерна/сущности и вперед искать дальше, но вот прямо кусками код брать, это где так можно?

Фиговое предложение.


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


Я сам склонен к тому чтобы знать доки и проходить к решению самому. Но ситуации разные бывают. Например, мне сейчас чтобы понять как это сделать, нужно долго и вдумчиво вникать в концепцию работы с данным инструментарием, чтобы понять, как скажем затереть до прозрачности участок в нарисованной холсте. А ещё я могу написать код и он не будет работать не факт что просто из-за "лишней запятой" а не потому что я неправильно понял и использовал доку. В таком случае рабочий пример был бы очень необходим. Особенно когда клиент ещё плачется и ему нужно доделать побыстрее. Я вообще не особо люблю копировать код, но часто ищу готовые примеры, чтобы понять как это нужно делать.

Я кстати нередко при этом копирую код со своих предыдущих проектов, ну например, мне в лом вспоминать все детали и проектировать какую то функцию заново, т.к. было много нюансов и чтобы вывести конкретную имплементацию я все это проверил и потратил на это много времени.
Эх, пора бы уже написать статью «Программирование со StackOverflow и почему оно хорошо».
Тезисы были бы следующие:

1) скорость разработки нынче выше на порядок, чем раньше, и никто не даст разработчику месяц копаться в документации;
2) StackOverflow это просто та же самая документация, просто более интуитивно/естественно структурированная;
3) ВСЕ проблемы в жизни разработчика случаются ровно 1 раз, переиспользование опыта с конкретной библиотекой это такой же миф, как переиспользование самостоятельно написанного кода.

Ну и там, все мы помним что методики разработки пляшут от бизнеса и решения его задач, а не от интеллекта разработчика и удовлетворения его эго.
Я не программист, я аналитик данных.
Программировать приходится на VBA, питоне, C#. Для пет-проекта — на JavaScript.
На любую поблему на SO первые несколько ответов — как минимум не оптимальные, но иногда и ошибочные (хотя проблему в частности решают).

Последнее впечатлило: в драйвере puodbc вставка данных в ms sql возможна только построчно.
Большинство ответов сводились к решению сделать огромный sql запрос с кучей insert, и переправить его серверу.
Я-то знаю про загрузку из csv, и понимал, что нужно искать (решение — модуль миграции данных odo). Но в целом уровень решений ужасен, на уровне «побить в бубен».

При этом, так как я не профессиональный программист, я без SO вообще программировать не могу. Другое дело, что возраст, образование и опыт позволяют понять где решение, а где ерунда.

Самый быстрый способ — вызов хранимой процедуры с табличным параметром. Правда, не уверен что его PyODBC поддерживает.

1. К сожалению не видел ни разу толковой документации, обычно это сухие справочники, часто неполные или плохо связанные.
2. На SO часто ищу не «как сделать», а «как лучше сделать», например изучаю питон, после неплохого опыта в перле — я знаю как правильно решить задачу, но не знаю как это сделать в питоне и часто гугление приводит именно на SO, правда и там не всегда есть правильные ответы, но часто есть.
3. Внешняя память это однозначно хорошо, в ИТ слишком быстро всё меняется, нет смысла учить наизусть то, что завтра устареет.
К сожалению не видел ни разу толковой документации

Не столько про толковую документацию вообще, но в частности могу порекомендовать ЛибГен (если, конечно, на хабре это не запрещено). Редко-редко, но в некоторых книгах иногда все-таки можно найти то, что на SO не найдешь.
1. Лет 20 назад только толковая и была. Либо отсутствовала вовсе.
без интернета

я сначала подумал что предлагается кодить реально без интернета/ потом увидел совет «я рекомендую devdocs.io », — так что получается что не без интернета

статья конкретно про стековерфлоу а не использование онлайн ресурсов вообще?
Господа! Я не понимаю, почему у всех внутри начало так яростно бомбить от этой статьи. Обращаясь к большинству: признайтесь сами себе, что если бы на работе отключили интернет, вы полезли бы за интернетом в телефон. Потому что вы не знаете досконально того языка (технологии, фреймворка и т.п.), с которыми сейчас работаете. Да-да, это дань сегодняшнему времени: характер задач меняется чаще, чем блудницы у Есенина. Памяти не хватает все это удержать в голове. И это нормально.

Как добыта информация — из головы или из Stack Overflow — вы не поверите, абсолютно неважно, если итоговый результат технологически верен. А фундаментальные знания — да, расширять и углублять надо, никто не спорит. Они помогают быстрее и правильнее гуглить :)
«Отключение интернета» очень хорошо проявляется на предприятиях, где выход в инет запрещен.
Тут-то ты и понимаешь, как тяжело искать по документации то, не знаю что.
Иногда проблема именно в том, что не знаешь откуда начать копать.
SO помогает в том, что помогает сформулировать вопрос, продумать его. Поискать похожие.

Обычно, сначала пытаюсь решить проблему самостоятельно, потом лезу в гугл. Если не помогает- то пишу вопрос на SO с примерами кода (то есть показываю сообществу, что я пытался решить проблему, но не смог) и прошу показать в какую сторону копать дальше.
Мне доводилось работать, когда выход в интернет запрещен. Как правило, на таких предприятиях стек технологий стабилен, не меняется годами, есть собственные разработки, которые не гуглятся, и там проблемы вообще другого порядка:
— ужасная документация (канцелярский язык по пять-десять существительных подряд, нет структуры, нет хороших примеров, давно не обновлялась, и т.п.);
— разработчики, которые проработали там десяток лет и помнят все возможные случаи и их решения наизусть, не хотят делиться знаниями (со стороны кажется, что это job security у них такая, но я бы не стал утверждать наверняка и за всех сразу).

И да, не знаешь, откуда начинать копать. Чувствуешь себя при этом, мягко скажем, неловко.
Я избегаю этих предприятий, благо такая возможность есть.

Да, я думаю, у большинства действующих программистов есть опыт программирования без интернета…
У меня, когда начинал учиться программировать, была только офф.документация по Delphi и пара книг из университетской библиотеки. Правда с тех пор осталась привычка во всём самому разбираться, не задавая вопросов на форумах.

Ну знаете ли, SO и Google разные вещи. Я вот довольно часто что-то ищу в документации с помощью Гугла, например по PHP или по тому же андроиду. Зачем лезть в какие-то книги, если их содержимое оцифровано, проиндексировано и бесплатное

Чужое решение не запоминается.

Что-то в этом есть…
К тому-же, найденный на Стеке решения часто далеко не оптимальны.
Не соглашусь, что решения не запоминаются. Только разве что если тупо копипастить код. Там обычно подробно пишут и объясняют, что и как и почему. Не хуже, чем в комментариях на хабре). Без интернета такую информацию можно получить разве что при непосредственном наставничестве более опытных товарищей.
За идею и мнение конечно плюс — соглашусь, что нужно котелок включать всегда, даже в случаях copy/paste. Но вот с хорошим источником — промах.
Попробовал ради интереса на этом сайте поискать исходники или документацию — по многим «page not found» или просто сигнатура метода без каких либо обьяснений. Например, было интересно почитать как работать вот это https://devdocs.io/haxe~java/util/concurrent/executorservice#awaitTermination.
Даже предложеный пример обучения джуниоров тому как работает HashMap — и тут промах :)
Для меня SO — всего лишь один из сайтов выдачи в гугле, при поиске каких-либо данных. Получается, что я из «поколения 2000х». С другой стороны, есть разница — если мы разрабатываем что-то с нуля, то да — я полезу читать RFC и так далее. А если мне надо найти, почему Chrome при выдаче совершенно валидного пакета через WebSockets сходит с ума — путь только в гугл, потому что это уже найденная кем-то проблема.

Найденное чужое решение действительно не запоминается, но не в случае, когда ты сам потратил кучу услий на то, чтобы найти решение проблемы, и не преуспел. Важен сам процесс поиска.
Сразу вспоминается шутка про full-stackowerflow разработчика
Порылся у себя и не нашел ни одного проекта где моего кода было бы больше 10%.
вот например текущий проект на STM32. всего кода 18 мегабайт, моего 400 Кбайт.
многие статьи на хабре используют RTOS, fatfs от елм-чана, езернет, кучу датчиков и тд
да даже усб стык это десятки тышь недокументированного говно-кода пьяной макаки с кучей багов и обычно не работающий без допила вообще.Гугл частенько выручает когда нужно допилить что либо после предшественников, которые как будто назло бывает выискивают то кривые плагины и библиотеки то не удосуживаются даже закомментировать всю эту Вакханалию после себя, но большей частю пытаюсь дойти до всего сам, ибо " Кто живет чужим трудом, тот неизбежно кончит тем, что начнет жить чужим умом, ибо свой ум вырабатывается только с помощью собственного труда" © Василий Осипович Ключевский

Любопытно, что предложение воспользоваться на 5 минут мозгом и документацией, прежде чем бросаться гуглить, вызвало у многих программистов такую яростную реакцию, как будто я хочу запретить stackoverflow. Думаю, это лучше всего показывает, что проблема злоупотребления Стеком реально существует.

Вот скажите мне, какая разница между "погуглить, чтобы найти статью из документации" и "воспользоваться документацией"?

На самом деле, такую реакцию скорее вызывает тот, что в вашей статье красной нитью проходит идея, что все кто гуглит проблемы и ищет готовые решения вместо того что бы разобраться самому, не развивается и не обучается. Что на самом деле не так.
В большинстве случаев проблемы которые гуглятся встречаются в карьере 1 раз, так же не стоит забывать, что технологии разрослись настолько, что даже если вы разобрали проблему по полочкам через определённый срок вы всё равно скорее всего забудете как решили её.
И я, честно говоря, сильно сомневаюсь, что нормальный программист будет бездумно копировать код не разобравшись в нём хотя бы поверхностно (не знаю как в мире вэба, но в мире С++ тупое копирование вряд ли когда либо будет работать хорошо). Я например гуглю в основном не готовое решение, а примеры на которых я мог бы построить свое решение со своими требованиями (Я надеюсь как и большинство тех, кому не понравилась статья). Так что я например получаю наибольший опыт именно с ресурсов на подобии SO.

Возможно ваш совет подходит для кто только нарабатывают базу в своей сфере, но для всех остальных это по моему мнению бестолковый совет, который только снизит производительность, не дав в замен ничего.
Есть такие системы в которых можно увязнуть с головой.
Цель — «внедрить Х» к примеру. К этой цели можно идти 2 дня, а можно и неделю, в зависимости от масштабов задачи.И вот когда наконец пишешь код, оптимизируешь сервис и каждые полчаса тебя отвлекают вопросами, срочными задачами и вызовами — вернуться в работу порой очень тяжело и на это тратится время.Находишь силы, пошурупишь немного над задачей(без «Ok Google» и SO) решаешь половину задачи «И тут появляется нечто новое, восхитительное. В новой версии софта появилась интереснейшая фича. Вышла новая классная железяка, которую надо купить и внедрить.»И так далее…

Отсюда вытекает вопрос насколько документация «полезней» гугла в данном контексте?!?!
Гуглеж начинается тогда, когда по мелочам приходится вылезать в смежные профессии.
Кто бы что не говорил, но польза от стэка есть. Весь код всё равно не скопируешь, а велосипеды, думаю, вполне можно оттуда забрать.
UFO just landed and posted this here
Чужое решение не запоминается


Своё решение тоже не запоминается :) Довольно давно отвечаю на вопросы на stackoverflow. Так вот, уже несколько раз в поисках решения своих проблем с удивлением натыкался на свои же ответы. И я совершенно не помню этих ответов, не всегда даже помню, что была такая проблема.

Возможно, дело в том, что подавляющее большинство проблем – одноразовые. Естественно, я не пойду искать реализацию цикла for или детали вызова библиотечной функции, которая используется каждую неделю.
Смешались в кучу конелюди…
Чужое решение не запоминается. Нет стимула разбираться, как оно устроено. Нет чувства удовлетворения, когда «заработало!». Не образуются в мозгу новые нейронные связи. А без этого нет и запоминания.

Не знаю, как там у автора, а у меня «чужое решение», как правило, не решение — решаешь-то свою, совсем другую задачу. Задача стоит, допустим, собрать мопед, а на stackoverflow идёшь за недостающим винтиком — вместо этого надо найти месторождение руды, выплавить сталь, выточить винт, нарезать резьбу, только тогда образуются связи и будет удовлетворение, что мопед поехал?

Дальше хуже. Когда злоупотребляешь готовыми ответами, перестаешь воспринимать аналогии и косвенные решения. Ищешь, чтобы прямо один-в-один было то, что тебе нужно. В долгой перспективе это тупик.

Что за бред… Не бывает же готовых ответов — любой, самый лучший, ответ решает сильно упрощённую проблему в вакууме без проверок на null. Поди найди «прямо один-в-один то, что тебе нужно», ага — любое, самое лучшее, решение надо сурово адаптировать под свою задачу.

Г. У автора проблемы с интернетом походу)))


У меня когда такое было то тоже хотелось все мануале себе на комп выкачать.


А вообще я хоть и люблю писать свои велики, но блин иногда капец какая проблема появляется геморойная… Вот тут то Гугл выручает.


И ни в одном мануале такого не найдешь, ибо это опыт. И да делитесь своим опытом с другими!

Проблема не в stackoverflow. Прежде чем решать задачу и натыкаться на все грабли самому (нервировать коллег и лысеть начальство), необходимо ознакомиться со сниппетами со стека которые предлагают люди. Уже на основании того как делают люди — сгенерировать свое решение. Когда задача решается второй раз, как правило есть проекты в которых можно просмотреть как делалось, другое дело что и тут можно заглянуть в стек, чтобы посмотреть не появилось ли более оптимальное решение задачи.
Часто трудно определить в чем проблема. Буквально вчера вязал debian, postfix и virtualmin вместе. Полный лог ошибок «postfix/smtp[26780]: fatal: specify a password table via the `smtp_sasl_password_maps' configuration parameter»

Гулил, стековерфловил, и т.д. Оказалась бага виртуалмина smtp_sasl_password_maps smtpd_sasl_password_maps

Другой вопрос, что нужно делать выводы из нагугленного, а не просто ctrl+c ctrl+v. Поэтому завел себе личный бложик с полезными заметками. + иногда неплохо оставлять и комменты на стеке.
Мозг не резиновый. Мне вполне хватает запомнить источник, разобрать код в голове, а возможно и просто скопипастить. Смысла 45 минут изобретать велосипед, а потом узнать что он давно существует и даже уже без квадратных колёс, нет.

Знаете проблему современного поколения? Она уже всеми стариками озвучена. Это проблема мнимой информированности.
Запомнить источник !== Запомнить решение
Как бы проблема немного другого рода, её автор и хочет донести. Это проблема мнимости знаний.
Я уверен, что хороший программист в свой код не будет вставлять то, что он не понимает. Ибо это реально дебелизм и вообще-то потенциальная дыра в коде.
Я тоже пользуюсь so, хабром и форумами. Но лично для меня ctrl+c ctrl+v — не доставляет удовольствия от решения задачи. Вот когда я понимаю почему так, а не иначе, тогда да, я крут и могу спокойно использовать этот кусок кода. Откоментив его для себя, чтобы в случае чего не забыть мысль, которую я в нём нашёл.
Никогда не понимал этой погони за скоростью работы. Если работаешь хорошо, то никто тебя гнать не будет. Если работаешь хорошо и с головушкой, то эти 45 минут на изобретение своей версии велика не пойдут в трубу.
Лично для меня любая мозговая активность является благом, будь то уравнение, алгоритм или составление запроса в поисковике.

К сожалению неспешно и вдумчиво начал работать только с НГ. До этого было что-то типа:

1 задание, java. Вот тебе программа. За день разберись что к чему и быстро на следующий сделай то, то и то.
При условии что её писали 2 года 1,5 человека. На языке который изучал 3 недели. Крутись как хочешь, устроился на работу — работай, нет — вали (что не выйдет — это распределение после универа, но скажется на зп).

2 задание, php. Ну скоро там? 2-х недель тебе мало? Это всего лишь сайт для архива!
Это попытка делать спокойно и вдумчиво. Ибо прошлые версии сайта оказались настолько кривые прошлых программистов/кодеров, не знаю как это назвать, что исправлять что-то там «что бы работало» намного дольше, чем написать своё.

В итоге теперь(!) куча свободного времени, исправление мелких ошибок и убирание прошлых, копипастом, костылей за одно и изучение этого, нового для меня, языка — Java.

Потому что у вас работодатели продают используют человеко-часы… Об этом написано в коментариях выше, мне кажется в первых 7-9 штуках.

Sign up to leave a comment.

Articles