Как ваш путь обучения может повлиять на ваше суждение о других людях

Недавно я наткнулся на несколько комментариев к публикации на Reddit автора, который с трудом установил NodeJS в своей системе. У меня никогда не было проблем с установкой NodeJS, и этот пост не является попыткой судить об этом, а только то, что эти комментарии подчеркнули тенденцию, которую я заметил в автономном режиме. Это тенденция, когда люди игнорируют точку зрения тех, кто не похож на них.

Комментариев было много, но у них была общая тема:

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

Когда вы начинаете программировать, обычно возникают такие мысли: чтобы хорошо разбираться в «y», мне пришлось выучить «x». Следовательно, чтобы хорошо освоить «у», вам нужно выучить и «х». В противном случае у вас автоматически плохо получается «у».

Например:

  • Чтобы хорошо разбираться в веб-разработке, вы должны знать NodeJS и React.
  • Чтобы хорошо разбираться в веб-дизайне, вы должны знать CSS и Photoshop.
  • Чтобы хорошо разбираться в программировании, вы должны знать, как установить NodeJS.

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

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

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

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

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

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

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

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

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

Чтобы хорошо программировать, вам нужно выучить Z ... и, вероятно, вам не понадобится X

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

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

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

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

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

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

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

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

Вот как можно решить эту проблему: сосредоточьтесь на том, что люди знают, а не на том, чего они не знают.

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

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

Как и в Законе По, если нет улыбки, трудно понять, шутит ли собеседник или серьезно.

Чтобы хорошо программировать, вы должны знать пределы BB (n).

ЭТО было бы элитарным.

Изменить, 5 июня 2021 г .:

Пол Батлер дал ссылку на пост от Hacker News за 2017 год. В нем освещены некоторые альтернативы тому, как справиться с удивлением того, кого вы ожидали узнать, но не знаете. Полезно, чтобы не превратиться в поэта в разговоре.

Ссылки по теме:

Благодарим Ави Кесснер, Жаклин Ли и Стивена Вэнса за их полезные комментарии к этому сообщению.

Спасибо за прочтение. Если у вас есть отзывы, напишите мне в Twitter, Facebook или Github.