Я часто боюсь сказать другим, что задаю вопросы по Stack Overflow . Хороший программист должен уметь решать проблемы путем самостоятельного поиска решений, верно?
Я чувствую, что если кто-то узнает, что я задаю вопросы о переполнении стека, у него может сложиться плохое впечатление, что мне нужна помощь, а не возможность решить проблему самостоятельно. Это правда?
Я считаю, что ваши рассуждения ошибочны.
Один из самых важных аспектов инженерии: не изобретать велосипед. Конечно, быть автономным и иметь возможность найти собственное решение проблемы очень важно, и это часть того, что делает хорошего инженера. Но перед этим вам нужно кое-что сделать каждый раз .
Проверьте наличие уже существующего решения.
Зачем вам тратить время на поиск решения самостоятельно, если кто-то уже сделал это раньше и оставил достаточно материала в Интернете (или где-либо еще), чтобы вы могли просто взять его и использовать? Это не о том, чтобы сделать это самостоятельно. Это о том, как это сделать. И если вы сможете найти уже существующее решение, вы сэкономите довольно много времени.
Инженеры ленивы в хорошем смысле этого слова: они не любят тратить время на решение уже решенных вопросов. Вы здесь, чтобы решать нерешенные проблемы, вот почему вы ценны. В этом смысле, просматривая Stack Overflow и задавая вопросы, вы проверяете, не решил ли уже кто-то вашу проблему. Даже если это чисто технический вопрос, быстрее будет спросить и быстро получить ответ, чем биться над ним только ради того, чтобы «сделать самому». Это также будет намного быстрее (скорее всего), и вашему боссу это понравится.
Продолжайте использовать Stack Overflow, это сделает вас более эффективным и позволит вам работать над задачами, которые действительно стоят вашего времени.
One of the most important aspects of engineering is: don't reinvent the wheel
Обратите внимание, что некоторые из них до сих пор так не думают и предпочитают изобретать это снова и снова.Я не должен говорить другим, что задаю вопросы в Stackoverflow.
Как разработчик, я могу сказать вам, что у других не должно быть абсолютно никаких недостатков, если они знают, что вы время от времени обращаетесь за помощью в stackoverflow.
С рациональной точки зрения не всегда возможно либо уже знать, либо найти ответ на вашу проблему с помощью поиска в Google или изучения книг и т. д. Однако stackoverflow как ресурс позволяет вам иметь доступ к тысячам способных разработчиков, которые готовы помочь вам с вашей проблемой, это следует рассматривать как бесценный ресурс.
Любой работодатель или коллега, который меньше думает о вас из-за того, что вы используете stackoverflow, чтобы задавать вопросы по программированию, честно говоря, не согласен с этим. Вы должны попытаться найти наилучшее решение вашей проблемы в некоторых ситуациях, которые могут потребовать поиска правильного ответа. Именно ваша способность определить наилучший путь к решению определяет вас как разработчика.
Я помню, как в прошлом году вышла статья † , в которой брали интервью у нескольких видных и красноречивых разработчиков из крупных компаний, таких как Google, Apple и Microsoft. В статье каждого разработчика спрашивали, что было самым глупым из того, что им еще оставалось в Google или поиске. Ответы варьировались от формата операторов switch до количества битов в байте и т. д. Дело в том, что разработчик не может знать все, будучи в состоянии признать это и искать решение с помощью любого средства, которое лучше всего подходит для этого. на самом деле ценная способность иметь.
Изменить (спасибо Мартину в комментариях ниже)
† Статью, на которую я ссылался выше, можно найти по этой ссылке.
Хорошие моменты уже были сделаны, но добавлю свои пять копеек:
Если бы вы были менеджером/руководителем команды, что бы вы предпочли: самоуверенный разработчик, делающий все сам, или тот, кто не боится обратиться за помощью/руководством, когда это необходимо?
Я даже слышал о компаниях, в которых «отказ от помощи» рассматривался как отрицательная черта во время ежегодных аттестаций.
Но, конечно, будьте осторожны, чтобы не разглашать конфиденциальную деловую информацию.
С точки зрения того, кто нанимает разработчиков и управляет ими....
Я чувствую, что если кто-то узнает, что я задаю вопросы о переполнении стека, у него может сложиться плохое впечатление, что мне нужна помощь, а не возможность решить проблему самостоятельно.
В более общем виде сказано:
Я чувствую, что если кто-то узнает, что я задаю вопросы, у него может сложиться плохое впечатление, что мне нужна помощь.
Это ловушка, в которую попадают многие разработчики (и сотрудники в целом).
Я могу сказать вам из личного опыта, что плохие впечатления в основном исходят от тех, кто пытается показать, что им не нужна помощь.
Одной из наиболее важных характеристик, которые я ищу в людях (не только в разработчиках), является их готовность оценивать себя и распознавать, когда им нужна помощь. Именно эта черта очень ценится, потому что она сразу говорит мне, что сотрудник открыт для новых идей и находится в состоянии постоянного обучения.
Кроме того, мы больше не работаем в изолированной среде, где все/все отделены друг от друга. Мы социально вовлечены во всех аспектах нашей работы. «Работать независимо» не означает изолировать себя от других ресурсов.
Ваша ценность как разработчика заключается не в знании всего, а в знании того, как получить доступ к совокупности знаний для разработки решения имеющейся проблемы.
хороший программист должен уметь решать проблемы путем самостоятельного поиска решений.
Да.
Если кто-то знает, что я задаю вопросы на Stackoverflow, у него может сложиться плохое впечатление, что мне нужна помощь, а не решение проблемы самостоятельно. Это правда?
Нет. Это неверно.
Думайте о Stackoverflow как о расширенной поисковой системе. Вместо того, чтобы вводить 3 поисковых слова в Google, а затем просеивать множество результатов, вы вводите очень длинный поисковый запрос в вопрос SO, а затем возвращаетесь позже, пока «поисковая машина SO» не вернет свои результаты.
Кроме того, как известно всем, кто когда-либо задавал технический вопрос, простой акт постановки вопроса часто приводит к озарению. Я часто печатал длинный-длинный вопрос; набрав его и прежде чем опубликовать, я заметил, что мои товарищи по SO, вероятно, скажут мне, что это плохой вопрос из-за X, Y и Z. Работая над улучшением X, Y и Z, я обнаружил отвечать. Задача решена.
Так что нет, вы не должны чувствовать ничего хорошего или плохого в использовании SO в том виде, в котором он был предназначен для программистов, это всего лишь инструмент.
Остерегайтесь слишком откровенного использования всех других сайтов SE, очевидно, в рабочее время...
Вот еще одна точка зрения — если вы часами просматривали Интернет (и ТАКОЕ) и все еще не можете найти ответ на свой вопрос, возможно, вы что-то поняли и приближаетесь к границе знаний. Это не плохо, это интересно!
Опубликуйте свой вопрос, возможно, ни у кого не будет ответа... и если вы в конечном итоге решите его самостоятельно и опубликуете свое решение, вы оставите потенциально ценный артефакт для будущих разработчиков.
И вообще, если вы, как работодатель, считаете, что хорошие вопросы — это плохо, уходите. Начальство и менеджеры должны способствовать вашему росту как сотрудника, а не ограничивать его.
Я не побоялся бы сообщить коллегам, менеджерам или потенциальным работодателям, что я задавал вопросы по SO. Задавать вопросы означает, что у вас возникла проблема, и вы думали, что вопрос поможет вам ее решить (иногда это означает, что вы решили проблему и сочли целесообразным поделиться решением). Это не признак некомпетентности.
Я бы с осторожностью относился к качеству вопроса и уровню опыта, подразумеваемому вопросом.
Если вы обеспокоены, я бы посоветовал вам просмотреть свои вопросы и посмотреть, что вы думаете о них сейчас и можно ли их улучшить. Вопросы, как и ответы, можно редактировать.
Хотя я согласен с ответами, предоставленными до сих пор, на самом деле они не касаются заданного вопроса:
если кто-то знает, что я задаю вопросы о переполнении стека, у него может сложиться плохое впечатление, что мне нужна помощь, а не возможность решить проблему самостоятельно. Это правда?
Ответ на это: «Да, это может произвести на людей плохое впечатление» по нескольким причинам:
Тем не менее, мир станет лучше, если мы будем следовать хорошим советам, данным в других ответах;)
Уже есть несколько отличных ответов, но я хотел добавить две идеи, которые я не видел, которые действительно помогли мне решить эту проблему.
Во-первых, в школах нас приучают считать обращение к сверстникам за помощью «обманом». Программисты проходят через 16+ лет этой обусловленности, и простое осознание этого может помочь избавиться от привычки.
Во-вторых, каждый в чем-то новичок. Люди не смотрят на вас свысока за то, что вы узнали что-то новое. Наоборот, на самом деле. На людей смотрят свысока из-за того, что они слишком напуганы, чтобы попытаться узнать что-то новое. Люди даже смотрят на себя свысока из-за того, что слишком боятся узнать что-то новое.
Уже много хороших ответов, я просто добавлю анекдот.
На днях я разговаривал со своим боссом об одной из проблем, которые я решил. Я также упомянул, что я должен был искать это.
Босс: Стрэковерфлоу?
Я: Да
Босс: Мне нравится этот ресурс, он экономит мне так много времени.
Я не знаю о негативной коннотации StackOverflow...
Можно отметить, что в то время это была летняя работа, так как я был еще студентом. Мой начальник также знал, что у меня не было опыта работы с C++ и что я учился, выполняя проект, который мне дали (который должен был быть реализован на C++).
Его ожидания от меня, возможно, отличались от ожиданий вашего начальника от вас, но работодатели обычно предпочитают сотрудников, которые эффективно добиваются эффективных результатов, а не тех, кто не торопится ради гордости.
Хороший программист должен уметь решать проблемы путем самостоятельного поиска решений, верно?
НЕПРАВИЛЬНЫЙ! Мало того, что понятно осознавать пределы собственных знаний, управляемых в любой момент времени нашими ограниченными умственными ресурсами, и обращаться к сообществу экспертов, которое предоставляет нам Интернет, но я бы сказал, что это излишне ограничивает самоограничение. Сделай так. На самом деле я бы даже сказал, что буду просить кандидатов на собеседованиях описать мне некоторые вопросы, которые они недавно задавали на SO, на самом деле предполагая, что они у них есть. Я бы не рекомендовал нанимать того, кто не использует этот фантастический ресурс — доступ к разуму и знаниям сообщества.
Другая точка зрения состоит в том, что, задавая вопросы, вы выполняете общественную работу — другие могут найти ответы на этот вопрос полезными (и, надеюсь, не задавать его дважды). И даже если у вас нет вопросов и вы работаете над дизайном, как бы вы ни были уверены, даже в дополнение к просмотру кода дома вы можете получить много полезных советов на Code Review .
Так что нет, вам не следует избегать рассказывать другим о том, что вы пользуетесь этим замечательным ресурсом . Наоборот, вы должны продвигать и рекламировать его.
Я чувствую, что если кто-то узнает, что я задаю вопросы о переполнении стека, у него может сложиться плохое впечатление, что мне нужна помощь, а не возможность решить проблему самостоятельно.
Я не думаю, что знание того, что вы используете переполнение стека в качестве ресурса, по сути является негативным моментом, однако оно учитывает переполнение стека. Как только вы поднимете этот вопрос, они могут потратить время на просмотр ваших сообщений, как на вопросы, так и на ответы.
Показывают ли вопросы хорошие навыки решения проблем? Демонстрируют ли они знание предмета, пытаясь решить сложную проблему, а не кто-то, кто все еще пытается понять простые концепции, но не может или не может найти ответ с помощью Google или других более быстрых методов?
Так что нет, просто знание того, что вы используете Stack Overflow, не будет отрицательным или положительным в целом (хотя многие предвзято относятся к этому или против). Однако в зависимости от того, как вы его используете и смогут ли они найти ваш профиль, он может предоставить им дополнительную информацию о вас как о кандидате, и это может быть хорошо или плохо в зависимости от того, как именно вы его используете.
Когда я искал советы о том, как хорошо пройти собеседование по программированию, особенно для такой компании, как Google, мне постоянно вбивали в голову пару вещей, которые я должен был сделать обязательно:
Игнорирование этих пунктов было быстрым путем к провалу на собеседовании, такое впечатление сложилось у меня. Вывод здесь заключается в том, что способность обращаться за помощью и задавать вопросы является очень желательным качеством для инженера. Это относится как к вашим коллегам, так и к интернету, включая Stack Overflow. Лично я с осторожностью отношусь к любому инженеру, который настаивает на том, чтобы все сделать самостоятельно, потому что это, вероятно, означает, что 1) они плохо работают с другими или 2) их код не так хорош, как мог бы быть.
Кроме того, все программисты, которых я знаю, используют Stack Overflow, в том числе и я. У меня сейчас открыты две вкладки SO.
Это полностью зависит от того, кто такие «другие», их отношение к/знанию SO и контекст, в котором происходит этот разговор . Одно дело, когда вас спрашивают на собеседовании: «Расскажите нам о ваших десяти лучших ресурсах для выполнения вашей работы и почему?» Совсем другое дело, когда тебя спрашивают: «Почему вы постоянно просматриваете все эти сторонние сайты, некоторые из которых (например, Careers.SO) кажутся сайтами по трудоустройству? Разве вы не работаете?»
Если «другие» означают менеджеров , то никогда не говорите нетехническому менеджеру (или руководителю выше) «Я провожу некоторое время на работе, задавая или отвечая на вопросы, связанные с кодом, на другом веб-сайте» .
Кроме того, легальные типы часто будут мочить штаны в надежде на раскрытие или заражение кода/лицензии/ИС. Чем менее дружелюбна компания к открытому исходному коду, тем выше опасность.
Что касается разработчиков , некоторые насмехаются над SO (в некоторых случаях не без оснований). У большинства разработчиков есть резервный канал личных контактов, списков рассылки, форумов, групп пользователей, каналов чата и даже подписчиков в Твиттере, где они могут быстрее получать очень качественные мнения или рекомендации без драмы и узких ограничений SO. Вы когда-нибудь пытались запросить рекомендацию пакета на SO? Жесткий. Рекомендация к покупке? Жесткий. Полуобъективный вопрос, который, тем не менее, требует от вашей аудитории многолетнего опыта? Жесткий. Все будет радостно закрыто язвительными уничижениями, которые сделали SO, гм, печально известным - в одних языковых сообществах хуже, чем в других. Есть, конечно, и разработчики, которые находят SO полезным. Итак, узнайте свою аудиторию, прежде чем рассказывать им.
Что касается нетехнических типов , то я не понимаю, как ТАКОЕ может вообще появиться в разговоре, кроме как «Я/Мой ребенок хочет научиться программировать/скриптовать MineCraft/программировать домашний контроллер/программировать Виселицу и т. д. Как вы сделай это?"
Простите, что не прочитал все ответы.
Нет ничего плохого в использовании SO. Использование ответов без их понимания — это плохо. Вы можете не понимать крайних случаев, когда есть побочные эффекты.
Правильно задавать вопросы — жизненно важный навык во многих дисциплинах, включая разработку программного обеспечения. Если вы исчерпали легкодоступные ответы в Интернете и не нашли то, что вам нужно, то запрос на Stack Exchange — отличный ответ.
Убедитесь, что вы нашли время, чтобы хорошо описать свою проблему. Убедитесь, что представлена вся необходимая информация, и что вы суммируете подходы, которые вы уже сочли неприемлемыми. Объясните, что вы думаете, и почему вы склоняетесь в том или ином направлении. Задавайте уместные вопросы и общайтесь со своими (потенциальными) ответчиками.
Таким образом, вам не только не нужно будет скрывать свою деятельность по допросу, но и вы сможете активно рекламировать себя. Покажите людям вопросы, которые вы задавали, и то, как вы работали с другими, чтобы уточнить вопрос и ответы. Подобные усилия могут принести вам только положительные эмоции.
Нет никакой разницы в том, чтобы спросить в SO, чем обратиться за советом к старшему в вашей компании. На самом деле спрашивать SO вместо старшего лучше, потому что это показывает, что вы делаете все возможное, чтобы найти решение, прежде чем отнимать время у коллеги, чтобы попросить о помощи.
Меня всегда учили, что глупый вопрос — это тот, который не задают. Так что не бойтесь задавать вопросы. Я программирую около 8 лет и до сих пор задаю вопросы на Stackoverflow.
Но у меня есть правило, что сначала я пытаюсь разобраться сам, и если и только если не могу, то задаю вопрос.
Ваши коллеги не должны возражать, где вы учитесь или как вы учитесь, стиль у всех разный.
Единственное, в чем я хотел бы убедиться, так это в том, что вы не спрашиваете о чем-то, что может поставить под угрозу интеллектуальную собственность вашей компании, кроме этого, спрашивайте :-)
Ну, я говорю, что если вы не можете найти ответ на свой вопрос в стеке, пожалуйста, задайте его, это поможет многим людям в будущем. «Хороший программист знает, как найти что-то самостоятельно» — хммм, кроме стека, какие другие веб-сайты/ресурсы используют большинство программистов, «официальный веб-сайт этого конкретного кода» — хм, были времена, когда этот код на этом сайте устарел , либо некорректно, либо просто замалчивается, оставляя разработчиков в состоянии WTF. Вы никогда не знаете, что ваш вопрос, который вы задаете, может спасти разработчика от потери работы, потому что ответ помог ему/ей закодировать приложение и найти ошибки или ярлыки. Книги не могут полностью объяснить все. Например, большое ранчо ботаников печально известно своими книгами по андроиду, которые я читал, но они забыли одну вещь, которая заключалась в том, что действие должно реализовывать фрагмент взаимодействия Слушатель.
Моника Челлио
IDRinkandIKnowThings
Эндрю Лазарус