Использование документации в качестве разработчика заставляет меня выглядеть непрофессионально?

Я младший разработчик и каждые три месяца работаю в компании по разработке программного обеспечения в рамках моего корпоративного обучения.

Несмотря на то, что я занимаюсь программированием почти 1 год (опыт работы 3 x 3 месяца + сторонние проекты), мне довольно часто приходится проверять документацию и/или Stack Overflow в течение рабочего дня. Я боюсь, что это выставляет меня непрофессионалом или более неопытным, чем я есть на самом деле (я вполне комфортно разрабатываю и создаю программное обеспечение, но мне часто приходится искать такие термины, как «Функция PHP/JavaScript, которая делает XYZ»). В большинстве случаев я уже должен это знать, так как я уже использовал это раньше, но хочу перепроверить, прежде чем совершать ошибки.

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

Я также прошу на будущее; например, если мне нужно написать код во время собеседования для другой работы, я думаю, вам не следует использовать документацию.

Я старший, и у меня обычно есть как минимум 3 вкладки браузера с переполнением стека и 2 с открытой документацией в любой момент.
«Профессиональный» не означает то же самое, что «идеальная фотографическая память».
Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат .
The reason for asking this question is that I get mocked for using Stack Overflow/documentation so frequently which makes others doubt my abilities, глупый вопрос, кто те, кто издевается над вами за использование ТАК и так далее? Менеджер, ИТ-отдел старого поколения, который до сих пор переписывает фреймворк самостоятельно, вместо того, чтобы использовать существующие надежные, кто-то еще?
просто интересно, почему, по-вашему, существует документация, если вы не должны ее использовать?
Непонятно, что вы спрашиваете. Если вы спрашиваете только о документации, должно быть очевидно, что ответ «нет». Если вы включаете StackOverflow в качестве «документации», я считаю, что вы совершаете ошибку, и если вы спрашиваете о том, является ли использование StackOverflow профессиональным, это, по крайней мере, совершенно другой вопрос, чем вопрос об использовании документации. .
Убедиться, что вы что-то делаете правильно, проверяя дополнительные источники информации, ни в коем случае не выглядит непрофессионально. По крайней мере, на мой взгляд, хотелось бы, чтобы сотрудник стремился убедиться, что он выполняет свою работу правильно с ПЕРВОГО раза.
@ Эрик, ну, как старший , ты, несомненно, начал терять память ....:-)
Я был инженером-программистом 40 лет и за это время написал около 250 000 слов документации. Я был бы весьма раздражен, если бы никто никогда не ссылался на это.
@ 3.1415926535897932384626433... Я не теряю память. У меня никогда не было с чего начать :(
Что хуже, когда вас высмеивают за просмотр документации или увольняют за написание плохого/нефункционального кода? Напомните любому, кто насмехается над вами, что очень, очень немногие люди обладают фотографической памятью, и даже если бы она у вас была, память о том, что изменилось с тех пор, не очень полезна.
Daily WTF полон кода, явно написанного людьми, которые не читали документацию.
Похоже, пришло время найти лучшую компанию, в которой работают более умные люди.
проверяет мой собственный профиль stackoverflow : посетил 2399 дней, написал 224 ответа. Итак, как минимум, я был там 2175 раз, проверяя, не могут ли другие люди помочь мне с моей текущей проблемой. Поскольку я обычно делаю это несколько раз в день, я гарантирую, что количество раз, когда мне действительно нужна помощь, намного, намного выше. Я кодирую уже 30 лет. :)

Ответы (15)

Не беспокойтесь: вы профессионал и ведете себя соответственно.

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

Это не непрофессионально — обращаться к внешнему ресурсу. На самом деле было бы непрофессионально не использовать документацию, если вы не уверены, как что-то работает.

Свидетельствует ли ваш уровень доверия к документации о неопытности? Конечно, в определенной степени. Но вы неопытны . Проработав всего несколько месяцев, вы будете знать не так много, как человек с многолетним опытом. Это просто факт, и вряд ли кто-то будет в этом против вас.

Однако даже разработчики с 20-летним стажем будут проверять документацию на предмет некоторых вещей. Это всегда часть набора инструментов разработчика.

Тесты по программированию — это немного другое.

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

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

Спасибо, это хорошо написанный ответ. Также произвел на меня впечатление тестов по программированию, потому что я всегда боюсь чего-то подобного; создайте программу, которая выполняет X, используя язык/библиотеку Y. Также + за устранение моей неуверенности :)
Нет ничего хуже, чем программист, пишущий ошибочное решение для общей проблемы.
@Chris Однако почти так же плохо (еще хуже, если предположительно опытный) программист, придумывающий O (n ^ 3) или O (n!) Решение чего-то, что можно решить, возможно, даже за O (n log n) , особенно когда набор входных данных может быть нетривиальным по размеру. Документация может помочь вам хорошо написать O(n^3), но она не может (так же легко) помочь вам придумать подход O(n log n).
Does your level of reliance on documentation show inexperience? Sure, to a certain extent.- нет, это не так.
@BЈовић Я просто имел в виду, что новичок должен проверять документы чаще, чем эксперт.
И после большего количества лет написания программного обеспечения, чем я хочу упомянуть, я ВСЕ ЕЩЕ сверяюсь с документацией. (Действительно, у меня есть макросы редактора, которые будут открывать онлайн-документы для всего, что имеет справочные страницы.) Во-первых, есть много вещей, которых просто не было, когда я начинал: CUDA, MPI, OpenMP и, вероятно, вещи, которые кто-то изобрел только в прошлом месяце, которые мне скоро могут понадобиться. Во-вторых, я обнаружил, что гораздо полезнее знать, где найти то, что мне нужно, чем ходить, полагая, что я все знаю :-)
Дэн, хорошо сказано. Вы бы не стали пытаться собрать стиральную машину без инструкции. это нелепо.
Это хороший ответ. Я бы еще добавил, что профессиональный разработчик постоянно расширяет границы своих знаний и умений. Если вам не нужно часто что-то искать, это означает, что вы, вероятно, не очень часто работаете за пределами своей зоны комфорта.
+1! «Я доверяю врачу, который не боится смущения взять книгу, чтобы проверить, является ли назначенное им лечение правильным». То же самое и с другими профессионалами
35 лет программирования, и я все еще читаю и учусь каждый день. Stack Overflow — важная часть моей работы, и я очень горжусь тем, что использую его и вношу в него свой вклад. хорошие программисты читают всю жизнь. Плохие программисты останавливаются через год или два из-за эгоизма и высокомерия.
@Chris точно - вот как мы закончили с PHP: D
В разработке программного обеспечения (и практически во всех сферах!) то, что вы знали раньше, со временем устаревает, поэтому, даже если вы помните, как что-то делать, стоит проверить, нет ли нового способа сделать это лучше.
@MichaelDurrant: 36 лет, и я тоже.
Один важный момент: программное обеспечение меняется! - Я надеюсь, что большинство ваших очень опытных коллег не будут писать программы так же, как они учились 10 лет назад. Весь мировой опыт не поможет вам узнать, как работает новая функция, выпущенная на прошлой неделе... Разработка современного программного обеспечения подразумевает постоянное изучение текущего API и лучших практик. - Даже с фотографической памятью ;-)

Использование документации в качестве разработчика заставляет меня выглядеть непрофессионально?

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

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

Я также прошу на будущее; например, если мне нужно написать код во время собеседования для другой работы, я думаю, вам не следует использовать документацию.

Большинство разумных компаний хотели бы проверить логику/структуру, которую вы придумали в тесте кодирования... не так много о синтаксисе.

«Нет, на самом деле это означает обратное… поскольку вы не беспокоите своих старших, задавая вопросы, которые можно легко найти в Интернете или в документации». Хотя вы, конечно, должны искать свои собственные ответы на простые вопросы, я думаю, что это неправильный тон: ваши коллеги, вероятно, предпочли бы, чтобы их «беспокоили» вопросами, чем чтобы вы потратили целый день, пытаясь понять, как получить приступил к задаче. Так что не бойтесь спрашивать указатели/направления, но придерживайтесь документации для таких вещей, как «каков порядок параметров этой функции?».
@Mikkel Я думаю, вы пропустили часть, говорящую ... «легко найти в Интернете или документации» ...
Для профессионального разработчика программного обеспечения гораздо лучше читать документацию, находить документацию и понимать, как самостоятельно получать ответы из документации, чем привлекать других коллег.
@Математика, я думаю, что Миккель на самом деле думает о том, что вы начинаете искать решение в Интернете, потому что думаете , что это легко сделать, а потом оказывается, что это не так, и вы застряли в поисках его весь день, потому что вы забыли, что можете просто спросите кого-нибудь другого.
@Mikkel Если вы обнаружите, что не можете получить поддержку, да, но консультация в Интернете для поиска очевидных решений - отличный (и часто лучший) первый шаг. Часто такого рода начальные исследования помогают вам лучше сформулировать свои вопросы к другим, когда вы упираетесь в стену, что облегчает им помощь.
@Mikkel В какой-то степени. Однако навык, который вам как разработчику необходимо развить, — это некоторый уровень автономии. Поэтому подход должен быть таким: попробуй узнай сам, а потом спрашивай. Если вы спрашиваете слишком легкомысленно, то вы не работаете против набора навыков решения проблем. Но тогда как много времени... Так что спрашивайте во что бы то ни стало, но не спрашивайте обо всем.
Сам я не работаю в индустрии программного обеспечения, но я регулярно слышу от менеджеров проектов/старших программистов, что они не могут многого добиться, потому что новые программисты постоянно задают базовые вопросы. Это всегда проблема баланса, но работа над тем, чтобы простые ответы не упускались из виду, и улучшение вашего собственного удержания, безусловно, жизненно важна как для того, как много можно сделать в краткосрочной перспективе, так и для того, чтобы сделать программиста более востребованным ресурсом в долгосрочной перспективе. .

Кто-то однажды сказал мне что-то вроде: «Хирург не может читать свои книги каждый раз, когда ему приходится оперировать пациента».

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

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

предмет, который не сильно изменился за несколько тысяч лет … Что? Медицина не изменилась?
Я больше имел в виду само человеческое тело. Но вы правы, медицина совсем немного изменилась (правда, все еще не в темпе IT).
Я тоже обнаружил, что сосредотачиваюсь на аналогии с хирургом, о которой ОП сказал, что он совершенно оторван от реальности: хотя я уверен, что многие хирурги недостаточно готовятся к операциям, потому что люди, как правило, несовершенны, я бы сказал, что это определенно тот случай, когда один из главных факторов, который делает хирургов лучшими, заключается в том, что они регулярно просматривают соответствующий материал перед любой данной процедурой и стараются изо всех сил регулярно обновлять/обновлять свои знания.
Аналогия с хирургом, на мой взгляд, верна только при «разработке в производстве». Аналогия заключается в том, что если вы промедлите или не успеете исправить ситуацию вовремя, ваш пациент умрет. Даже хирурги совершенствуют свое искусство на трупах, прежде чем «работать в производственных условиях».

Профессионализм и знания - две совершенно разные вещи.

Поиск вещей из сторонних источников означает, что вам не хватает знаний, а не профессионализма. Недостаток знаний — это отдельная тема, но в целом нет человека, знающего все.

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

Не искать вещи, не зная, что это непрофессионально, но это не ваш случай.

Дальнейшее чтение об эффекте, который контрастирует с вашей «стратегией использования документации»: эффект Даннинга-Крюгера .

Я считаю, что многие люди, включая меня, переоценивают то, что они знают об эффекте Даннинга-Крюгера.

Использование документации в качестве разработчика заставляет меня выглядеть непрофессионально?

Нет. Запоминание мельчайших произвольных деталей — пустая трата ваших ресурсов. Вам придется помнить многие из них как в PHP (которому немного не хватает согласованности), так и в веб-разработке в целом, если вы знакомы с несколькими языками и десятком фреймворков.

Меня высмеивают за то, что я так часто использую SO/Documentation, что заставляет сомневаться в моих способностях.

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

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

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

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

Совершенствуйте свои инструменты и демонстрируйте производительность, это профессионально.

Как автозаполнение (функция, которую я лично ненавижу) поможет вам выяснить, что делает конкретная функция или каковы ее аргументы?
@jamesqf, когда завершение ограничивается переменными с совместимыми типами для аргумента в курсоре, тогда вы можете просто нажать на клавиатуру и получить жизнеспособный код в кратчайшие сроки. Вы также можете порассуждать об именах функций и посмотреть, появится ли при завершении непустой список кандидатов. Опять таки; месить, месить, строить и отправлять. Кодить так просто!
@jamesqf с непоследовательным языком, таким как php, в частности, просто получить предложения имени и порядок параметров — это большая похвала: imgur.com/a/lVFmA
@jamesqf > Как автозаполнение поможет вам понять, что делает конкретная функция ? Это не вопрос ОП. OP приходится иметь дело с такими вещами, как это и это , и регулярно гуглит «функция PHP, которая делает XYZ». Что ж, просто начните вводить то, что вы помните об имени функции, и автозаполнение предложит варианты. Что касается ожидаемых аргументов, они обычно тоже перечислены.
@Steve Это поможет только в том случае, если вы уже смутно помните имя функции и, в частности, с чего оно начинается (как в вашем примере). Для сравнения предположим, что вы программируете на C++ и забыли имя функции, которая преобразует символ из нижнего регистра в верхний. Ответ «туппер», но если вы забыли этот факт, автозаполнение вам никак не поможет.
@Brandin Я печатаю (в файле PHP), и upperIDEA предлагает 3 варианта: ctype_upperи . Ни один из них не начинается с «верхний», но все они актуальны. Вы уверены, что автодополнение для C++ намного хуже? mb_strtoupperstrtoupper
@Daerdemandt Я просто имею в виду, что это зависит от имени функции. Дело в том, что не может быть причин, чтобы вы запомнили часть имени. Возможно, лучшим примером является strpbrk. Если вы еще не знали этого имени, вероятно, вы не сможете придумать это имя. Тот факт, что в нем есть «str», также не помогает, потому что он есть и у десятков функций.
@Brandin вау, это сбивающее с толку имя, которое отражает компромиссы, которые не имеют значения в наши дни. Разве не существует какой-то общепринятый набор псевдонимов для этих загадочных имен? Кто-то должен что-то с этим делать, а не мириться с этим каждый день. В любом случае, хотя серебряной пули нет, и иногда потребуется проверка документов, но правильно настроенная IDE поможет OP узнать, что он должен htmlentitiesкодировать и html_entity_decodeдекодировать.

Другие дали убедительные ответы, но никто не занимается этим прямо; жирный акцент мой:

Причина, по которой я задаю этот вопрос, заключается в том, что меня высмеивают за частое использование Stack Overflow/документации, что заставляет других сомневаться в моих способностях.

Кто эти люди, которые «издеваются» над вами, и откуда вы знаете, что это «…заставляет других сомневаться в [ваших] способностях?»

Все это звучит как дедовщина для садового разнообразия (также известного как: обычное). Если вы младший разработчик, вы, естественно, находитесь в иерархии, где другие будут проверять вас и нажимать на кнопки как часть их собственного дедовщины. Это происходит вне зависимости от того, осознают они это или нет; это просто в порядке вещей.

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

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

FWIW Я работаю на компьютере более 20 лет, и только в последние несколько лет я могу буквально визуализировать решения в своей голове, не написав ни строчки кода. Это навык, в который человек врастает, и его нельзя требовать от кого-то по требованию.

Хотя это не заставит вас выглядеть непрофессионально в глазах профессионала (в подавляющем большинстве случаев), вы можете проявить осторожность перед наивным клиентом или менеджером. Точно так же, как вы, с почти годичным опытом программирования, не уверены, нужно ли профессионалам искать информацию, так и люди с еще менее релевантным опытом могут быть не уверены.

На самом деле, я несколько раз защищал других разработчиков, когда заказчик консультационных услуг говорил что-то вроде «почему я плачу хорошие деньги за кого-то, кто даже не может написать код, не посмотрев его в Интернете?»

Это случалось редко, но, конечно, я не знаю, у скольких людей сложилось плохое впечатление, но они промолчали.

Это сильно зависит от сложности кода. Консультируетесь с документацией по стандартной библиотеке? (Отлично!) Консультируетесь с примерами присвоения переменных после многих лет использования языка? (Хммм....) Разработчик базы данных копирует и вставляет SQL из ответа с одним голосом, найденного в Stack Overflow после нескольких минут поиска, просто для того, чтобы «выбрать отдельные» в нескольких столбцах? (Что, черт возьми, происходит?) (Примечание: это все реальные примеры. И да, я имею в виду разработчика базы данных . )
" "почему я плачу хорошие деньги за того, кто не может даже написать код, не посмотрев его в Интернете?" - " дурак, и его деньги скоро сравняются... "
Потому что у вас недостаточно фундамента, чтобы понять, что говорят в Интернете, или у вас нет на это времени.
Лично у меня есть тенденция печатать все, что я использую, из SO. В основном потому, что я написал это хотя бы один раз, что помогает мне вспомнить его во второй раз, когда мне нужно его найти.

Конечно, непрофессионально искать вещи, когда вы незнакомы.

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

Я бы сказал, что доступность документации заставляет людей запоминать меньше того, что доступно в документации. Это как "ну, эта функция называлась примерно так... да, вот ее описание со всеми подробностями, которые мне когда-либо понадобятся".
Правда, несмотря на огромное количество доступных фреймворков, языков, пакетов, модулей и т. д., запомнить все действительно невозможно. Даже если я десятки раз создавал конвейеры кластеризации k-средних в MATLAB для различных источников данных, это не значит, что я могу сразу же реализовать это для клиента на Python, не просматривая документы.
Я сказал, что знаю все? Я сказал знать основы (вещи, которые вы часто используете).

Гораздо профессиональнее читать документацию и правильно писать код, чем гадать и ошибаться. Это особенно верно для такого языка, как PHP, стандартная библиотека которого составлена ​​бессистемно, ее трудно запомнить и в которой полно подводных камней.

Возьмем, к примеру, mail()функцию. Вы знали…

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

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

  • При отправке письма оно должно содержать заголовок From. Это можно установить с помощью additional_headersпараметра или установить значение по умолчанию в php.ini.

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

  • Параметр $toдолжен соответствовать RFC 2822 .

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

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

Нет ничего постыдного в том, чтобы сверяться с документацией — это правда. Просто стыдно использовать PHP. :D

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

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

Однако есть случаи, которые я бы назвал злоупотреблением документацией.

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

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

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

Есть разница между «профессионалом» и «знатоком». Если есть какая-то информация, которую мне нужно знать, и у меня есть выбор между тупо сидеть на стуле и застрять, или проверять документацию, то я проверяю документацию. Это абсолютно профессионально.

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

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

Редко бывает, что я сам не могу решить проблему. Но это требует времени. Учитывая выбор между часом, чтобы понять это самому, и пятью минутами, используя Google, тратить час непрофессионально.

У вас уже есть несколько хороших ответов, но позвольте мне добавить небольшой поворот...

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

Не использовать документацию

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

Только учебники?

Люди, которые часто ищут в Google учебные пособия или фрагменты кода, включая SO, даже не ссылаясь на документацию, бесконечно раздражают меня. Такое поведение, на мой взгляд, является огромной ловушкой. Это приводит к своего рода программированию, подпитываемому полусырыми, произвольными, бессистемными «знаниями». Эти программисты, как правило, имеют много предубеждений. Вот откуда берутся такие самородки, как «никогда не использовать git rebase», «никогда не использовать not inв SQL», «всегда делать XXX», «никогда не делать YYY». Им будет очень трудно мыслить нестандартно, придумывать новые идеи, формировать интуицию о том, как структурировать свои приложения и все то, что делает отличных разработчиков.

Я бы призвал вас сначала решить любую проблему, просмотрев документацию/справку, а затем искать SO или другие фрагменты.

Конечно, есть исключения. Если ваша проблема совершенно очевидно является чем-то вроде ошибки или чем-то очень, очень, очень особенным, что вряд ли будет описано в какой-либо документации (например, специальная комбинация библиотек/модулей и т. д.), то во что бы то ни стало идите прямо к ТАК.

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

Документация

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

Я не нахожу диковинным читать, например, старую классику C++ (старую добрую статью), Gang of Four Design Patterns, (онлайн-версию) руководства Programming Ruby, чрезвычайно хорошо сделанные man-страницы Perl, Книга Git, некоторые RFC, HTML/XML/и т.д. спецификации и так далее спереди назад. Я бы сделал и делал это даже в свободное время и, честно говоря, ожидал бы этого от любого достойного программиста (очевидно, в зависимости от того, с чем он работает). Я также прекрасно осознаю, что я (по крайней мере, в компаниях, в которых я работал в последние десятилетия) совершенно одинок с таким мнением.

(NB: очевидно, что вам не нужно запоминать огромные списки ссылок на API, но, по крайней мере, просматривайте их, чтобы увидеть, что доступно и каков «дух» API.)

После того, как вы полностью освоитесь с этой темой, настало время взглянуть на сторонний код для вдохновения или просмотреть старые вопросы SO (или задать новые вопросы самостоятельно).

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

он ? Only tutorials?Я соответствую этому и не состою ни в какой банде This is where nuggets like "never use git rebase", "never use not in in SQL", "always do XXX", "never do YYY" come from. Но я согласен с тем, что есть немало разработчиков, которые просто ищут «как сделать X» и получают код, не понимая, что они делают. Это не специально «Только учебник», а, скорее,It works on my computer and I don't give a shit about the rest
Точно, @Walfrat. Я попытался сформулировать эту часть своего ответа довольно сильно, но не в абсолютных терминах, надеюсь, вы сможете с этим смириться. ;)

Ваш навык программиста заключается в том, как вы можете видеть полную картину и разрабатывать эффективные решения, а не в том, сколько API вы можете запомнить. Цель состоит в том, чтобы выполнить работу правильно и эффективно. Если бы вам пришлось искать каждый API и каждую деталь, я бы сказал, что у вас есть некоторые проблемы. Я ожидаю, что хороший разработчик будет хорошо знаком со всем, что используется часто, в последнее время и регулярно, но не будет тратить умственные способности на то, что используется нечасто, когда его можно легко найти. Если вы посещали stackoverflow более или менее раз в день, это не проблема; если вы проводите на нем большую часть своего обычного рабочего дня, это будет проблемой.

Меня высмеивают за то, что я так часто использую Stack Overflow/документацию

Мнения других людей о вас не определяют вас , они определяют только вас

Использование документации в качестве разработчика заставляет меня выглядеть непрофессионально?

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

«Хирург не может читать свои книги каждый раз, когда ему приходится оперировать пациента».

Почему бы и нет? Я скептически отношусь к этому утверждению, если нет необычного дефицита времени. Использование справочного материала занимает всего несколько секунд.

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

Зависит от правил собеседования, у кого-то это разрешено, у кого-то нет. В частности, если это испытание, оно может быть разрешено. Это хорошая идея, чтобы проверить в первую очередь!

Этот ответ не добавляет ничего нового к уже существующим ответам. Пожалуйста, помните, чтобы не повторять других .
@DavidK Не согласен. Где кто-то еще делает вывод: «Мнения других людей о вас не определяют вас, они только определяют вас»
@BradThomas Возьмите это от кого-то, кто также получил удар за повторяющиеся ответы ... анекдотическая мудрость не считается дополнительной информацией, когда что-то лучше оставить в качестве комментария, оставьте это как комментарий,