Программирование без интернета

    Кафедра гугления
    оригинал на xkcd


    Топ-3 повседневных вопросов программиста:


    • как сделать Х,
    • почему работает так, а не эдак,
    • как назвать переменную.

    С третьим вопросом всё понятно — он неразрешим в принципе. С первыми двумя интереснее.


    Чтобы получить ответы, программисты девяностых читали исходники и руководства. Программисты двухтысячных начали активно гуглить. А затем в 2008 появился Stack Overflow, и стал «внешней памятью» для разработчиков. Теперь на 95% вопросов есть готовый ответ: первая ссылка из гугла на Стек.


    В чём проблема со Stack Overflow


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


    Чужое решение не запоминается. Нет стимула разбираться, как оно устроено. Нет чувства удовлетворения, когда «заработало!». Не образуются в мозгу новые нейронные связи. А без этого нет и запоминания.


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


    Да и разработка с постоянной беготнёй из кода в гугл — это не программирование, а ерунда какая-то.


    Что с этим делать


    Скачать документацию, чтобы была под рукой. Я рекомендую devdocs.io — на выбор 130 языков и фреймворков, бесплатно.


    Скачать исходники бинарных библиотек, которые используются в проекте. Актуально для языков вроде Java и C#. Толковые IDE умеют делать это самостоятельно.


    Использовать правило пяти минут. Столкнулся с проблемой — пять минут пытаешься решить её без интернета. Разрешается использовать исходники, документацию и собственный мозг.


    Для одноразовых задач правило пяти минут не действует. Если вы веб-разработчик, и вдруг вынуждены разбираться с багой компиляции lxml на OracleLinux — не начинайте с 800-страничного руководства, просто загуглите текст ошибки.


    Пять минут без интернета можно превратить в десять или пятнадцать. Григорий Бакунов из Яндекса вообще рекомендует блокировать доступ к Stack Overflow на 45 минут каждого часа. Как по мне, это уже перебор.


    А вы не ловили себя на стековерфлоу-зависимости?


    Ещё по теме:


    Поделиться публикацией
    Похожие публикации
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

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

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

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

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

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

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

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

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

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

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

            Может давайте отделять фундаментальные знания, которые надо изучать, от всякой мишуры, которую сделал и забыл? Причем забыл, независимо от того, сам разработал решение или нагуглил.
            • НЛО прилетело и опубликовало эту надпись здесь
            • +4
              Полностью согласен. Не могу понять, как можно взять код и пихнуть без того, что поймешь, что он именно делает. Что тебе нужно, а что не нужно. Ни я конечно же не встречал моментов, чтоб просто взять и вставить. Все равно. Сначала вставляешь, потом делаешь под себя. Что-то убираешь, что-то добавляешь.
              Как? Ты вставил код, а потом баги пошли, как будешь дебажить, если не знаешь, что внутри, как работает?
              • –1
                Нормальные программисты берут решение с SO. Смотрят что в этом решении происходит и тогда уже копируют в своё код, без изменений, если код на 100% соответствует ситуации. Но никогда не пихают в свой код чужой черный ящик.

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

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

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

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

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

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

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

                      • +1
                        И этим Резерфордом был Воннегут.
                      • +5

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

                        • –2

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

                          • +3

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


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

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

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

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

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

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

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

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

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

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

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

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

                                  • +2

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


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


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

                                    • +9
                                      А он и есть профессионал. Просто он профессионал в написании телеграммных ботов, вот и все.
                                      Ключевые особенности профессионала — знать что он может, знать что он не может, делать свою работу за заранее установленный срок. Вы занимаетесь другим, возможно более интеллектуальным, но другим.

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

                                      Представляю себе как это выглядело, если бы существовали «правильные» работники и у них был бы свой хабр. «Этот человек не знает химических процессов происходящих в растворе при засыхании. У него нет понимания как изменяется нагрузка, потому что он не знает сопромат, как класть плитку. Он научился класть плитку на практике, если ему попадутся нестандартный раствор, нестандартная плитка и нестандартные стены, то вопрос о квалификации станет очевидным.».

                                      Но мне не нужно чтобы у плиткоукладчика было правильное понимание химических процессов. Мне нужная положенная плитка. И профессионал в моих глазах не тот, кто будет на моей ванной проводить эксперименты с раствором, а тот кто положит плитку ровно и за два дня.
                                      • 0

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

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

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

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

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

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

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

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


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

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

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

                                        Ну и в-третьих, все слишком быстро стало меняться, если раньше я ставил с нескольких дисков MSDN и мог пользоваться им чуть ли не годами, то сейчас такое просто не прокатит.
                                        • +1
                                          При таком количестве разношерстных языков, библиотек, ОСей, тулов, без SO, как мне кажется, уже не обойдешься.
                                          Это раньше бы сработало, во времена FoxPro, Clipper, скажем…
                                          Да и задачи усложнились, в ответ на усложнение среды…
                                          Но когда есть толковая документация, это хорошо и может быть полезнее заглянуть в нее и посмотреть какие-то хитрые моменты, прежде чем рыться в SO или загрязнять его вопросами. Другое дело, что сейчас это редкость, особенно во фронтенде…
                                          • +1
                                            Как по мне, так без интернета не обойтись. Просто нужно грамотно пользоваться. Не просто копировать, а разбираться в алгоритме и так далее, возможно даже после работы. Иначе скорость работы страдает и это бьет сил но по конкурентоспособности. Тем более в фреймворка сейчас много методов и классов, в которых не так просто разобраться. Тут Интернет нужен.
                                            А вот если программист за каждой ерундой лезет, то это уже не круто. Основы нужно знать наизусть и применять свободно.
                                            • +2
                                              Ок. А в свои старые исходники смотреть можно? Я не буду копировать, просто посмотрю.
                                              • –2

                                                Такой вопрос задавали Бобуку, он отлично ответил.

                                                • +4
                                                  Отлично, прекращаем использовать все собственные наработанные универсальные библиотеки, пишем все каждый раз с нуля, спотыкаясь на тех же граблях (потому что помнить все в принципе невозможно).
                                                  • 0
                                                    Использовать не равно копировать.
                                                    • 0
                                                      А как я смогу использовать свой старый код без его копирования в виде файлов в текущий проект? Никто ведь не говорил, что речь шла про создание нового пустого файла, открытие старого, скопировать-вставить. Это все-равно использование своего кода, написанного ранее. Демагогия уже какая-то пошла.
                                                      • 0
                                                        Как я понял, девушка в той беседе имела в виду именно копирование кусков кода. Ясное дело, что копирование файлов в новый не возбраняется, хотя и в этом случае правильнее хранить reusable код в общей папке и включать оттуда файлы, куда нужно.
                                                        • +2
                                                          Там как раз не было ни слова сказано, как это делается, разговор был про использование своего кода, написанного ранее. Бобук, не разобравшись, что это может быть годами проверенный и оформленный в виде библиотеки код, сразу сказал — вы, девушка, остановились в развитии, фу такой быть. Я бы в этом случае скорее сказал — фу быть Бобуком.
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                • 0
                                                  Эта проблема обсуждается уже давно и не только в отношении программирования. Раньше надо было знать ответ, сейчас надо уметь задавать вопрос. И еще вопрос, что сложнее.
                                                  • 0
                                                    Кcтати, если мне не изменяет память, у SO даже есть раздел с «документацией», основанной на лучших вопросах.
                                                    • 0

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                                                                      • +1

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

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

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

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

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

                                                                                    • +3

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

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

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

                                                                                          Отсюда вытекает вопрос насколько документация «полезней» гугла в данном контексте?!?!
                                                                                        • +1
                                                                                          Гуглеж начинается тогда, когда по мелочам приходится вылезать в смежные профессии.
                                                                                          • +1
                                                                                            Кто бы что не говорил, но польза от стэка есть. Весь код всё равно не скопируешь, а велосипеды, думаю, вполне можно оттуда забрать.
                                                                                            • +5

                                                                                              Бомбит у меня от того, что автор пытается индуцировать чувство вины. Я пользовался SO, пользуюсь и буду пользоваться. Stack Overflow и весь массив информации в интернете в общем помогли мне повысить мои умения программиста. Читая и нередко копируя ответы оттуда, я постепенно учился разбираться и понимать их. Так я вырос от полного ламера-джуна до сениора. Естественно, не только с помощью SO. А тут, фигурально выражаясь, некий Антон Жиянов залазит на кочку и говорит, что надо делать все наоборот, дескать у меня зависимость.

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


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

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

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

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

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

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


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


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


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

                                                                                                    • 0
                                                                                                      Проблема не в stackoverflow. Прежде чем решать задачу и натыкаться на все грабли самому (нервировать коллег и лысеть начальство), необходимо ознакомиться со сниппетами со стека которые предлагают люди. Уже на основании того как делают люди — сгенерировать свое решение. Когда задача решается второй раз, как правило есть проекты в которых можно просмотреть как делалось, другое дело что и тут можно заглянуть в стек, чтобы посмотреть не появилось ли более оптимальное решение задачи.
                                                                                                      • 0
                                                                                                        Часто трудно определить в чем проблема. Буквально вчера вязал 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. Поэтому завел себе личный бложик с полезными заметками. + иногда неплохо оставлять и комменты на стеке.
                                                                                                        • 0
                                                                                                          Мозг не резиновый. Мне вполне хватает запомнить источник, разобрать код в голове, а возможно и просто скопипастить. Смысла 45 минут изобретать велосипед, а потом узнать что он давно существует и даже уже без квадратных колёс, нет.
                                                                                                          • –1

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

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

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

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

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

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

                                                                                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.