Мало просто сменить свою сферу работы на IT, желательно еще и стать хорошим разработчиком. Бывший тимлид и консультант Александр Усков рассказывает, как понять, что перед вами плохой разработчик и что с ним вообще можно делать.

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

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

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

Сбивчивая речь и непоследовательность в изложении мыслей

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

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

Поэтому при знакомстве с разработчиком просто обратите внимание, как он говорит: 

— Насколько объемный у него словарный запас;

— Как часто он поправляет себя;

— Как начинает и как заканчивает фразы;

— Насколько целостны и непротиворечивы его мысли;

— Насколько плавна его речь;

— Много ли он использует слов-паразитов и заполняющего паузы «мычания»;

— Насколько обширный контекст он способен удерживать в диалоге;

— Насколько лаконично и емко он способен донести информацию.

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

Это не на 100% универсальное и не безусловное правило, но корреляция достаточно высока, чтобы можно было ей пользоваться. Что характерно, это никак не зависит от языка, на котором идет общение. 

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

Злоупотребление жаргонизмами и buzzwords

Некоторые разработчики в общении (или в резюме) часто используют профессиональные термины. Особенно внимательным стоит быть к людям, которые изменяют их морфологию, используя уменьшительно-ласкательные формы, вплоть до превращения их в эвфемизмы — «багуля», «тэзэшка», «аппликуха», «батончик». 

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

В этот же пункт входит слишком частое употребление новояза — особенно часто это встречается у людей, которые много работали в энтерпрайзах и часто общались с менеджерами, или в стартапах, где нужно регулярно выбивать инвестиции, создавая постоянную видимость прогресса. Такую манеру общения иногда называют «технотрёп» (“technobabble”), а в англоязычной культуре есть более общий (сугубо разговорный) термин “bullshitting”. 

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

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

Перфекционизм и идеализм

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

— Фреймворк или язык X лучше фреймворка или языка Y;

— Фреймворк или язык Z — вообще гадость;

— Задачи такого рода нужно всегда решать именно так;

— Надо делать так-то, потому что так сказал такой-то;

— Если в компании используют X, в этой компании не надо работать;

— Если в компании не используют X, в этой компании не надо работать;

— Бесплатные решения лучше платных;

— 100% кода должны быть покрыты тестами, иначе это плохой код;

— Тесты нужны только плохим разработчикам, хорошие могут работать и без них;

— Тернарные операторы это плохо;

— Мутабельные данные это неправильно;

— Однобуквенные названия переменных — это гадость.

Каждый подобный тезис может быть справедлив в ряде случаев — проблема в том, что человек возводит этот тезис в абсолют. Кроме того, сильная убежденность сопутствует некой эмоциональной привязанности к ней — это можно заметить по использованию субъективных эмоциональных оценок, таких как «хорошо/плохо» при обсуждении, даже сугубо теоретическом, решений и концепций программирования. Таким образом, рабочий вопрос может стать для человека личным, и этот человек будет весьма болезненно реагировать на критику и вносить очень нездоровую атмосферу в коллектив. 

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

Что же касается перфекционизма, тут все достаточно прозаично: как известно, лучшее — враг хорошего. Вряд ли можно назвать конструктивным для разработчика и для команды, если он тратит лишние часы на то, чтобы решить, какой цвет тени будет смотреться лучше — #444444 или #3e3e3e, или на переименование всех переменных и функций так, чтобы фрагмент кода был максимально приближен к грамматически корректному тексту.

Переусложнение или оверинженеринг

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

  • Желание учесть абсолютно все пограничные случаи работы приложения, независимо от их вероятности и степени рисков, которые они несут. При разработке сервиса бронирования (ресторана, отеля, медицинских услуг) такой разработчик может потратить лишние часы или дни на особую обработку случаев, когда база данных пустая, когда объект бронирования меняет свой ID, когда два запроса от разных пользователей конкурируют за общий слот, и так далее. Важно, что это может быть неплохая идея сама по себе, но отличие в том, что «сильный» разработчик поинтересуется у менеджера или заказчика, насколько это важно делать прямо сейчас, и реальна ли вообще проблема, прежде чем ее решать. Тогда как «слабый» программист, склонный к переусложнению, потратит на это время при любом раскладе, ни с кем не посоветовавшись.

  • Трата ресурсов и времени на разные аспекты задачи непропорционально их фактической значимости. Например, разработчик написал для своего сервиса невероятно продвинутую систему логирования из 30 файлов и с 5-ю различными слоями абстракции. В то время, как вся бизнес-логика этого сервиса умещается в сотню строк, и задачу можно было бы решить за считанные часы — тогда как заняло это несколько дней. Такая система может принести огромную пользу при некоторых обстоятельствах, но нужна ли она на данном этапе, и наступят ли вообще такие обстоятельства — «слабый» разработчик не задается такими вопросами. 

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

Сюда же можно отнести и преждевременную оптимизацию, которую Дональд Кнут назвал корнем всех зол в программировании. И самостоятельное привнесение в продукт фичей, которые никто не заказывал, и еще много чего, что довольно точно сформулировал автор блога «Code Simplicity» и одноименной книги:

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

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

Требуется некоторый опыт, чтобы понять, что больше кода значит больше багов, и что краткость — действительно, сестра таланта. На этот счет есть расхожая и абсолютно верная фраза: «The best code is no code», — то есть самый лучший код — это его отсутствие. Если разработчик может решить задачу компактно и элегантно — может быть и вовсе без изменения кодовой базы, а большие и сложные задачи декомпозировать до компактных и элегантных — это верный индикатор того, что перед вами очень «сильный» разработчик. 

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

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

Самоуверенность и «велосипедизм»

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

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

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

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

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

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

Туннельное зрение

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

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

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

Предметом такой привязанности может быть как язык программирования, фреймворк или платформа, так и инструмент, не являющийся специфическим, например, редактор кода. Да, vim/emacs/eclipse/подставить нужное — классные инструменты, но точно не идеальные для всех возможных случаев. 

Примеры такого поведения при написании кода:

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

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

  • Верстка абсолютно любых страниц и компонентов при помощи одного и того же приема разметки, например, flexbox.

  • Привычка использовать избыточные или неявные синтаксические конструкции. Например, оборачивать весь код код функции в try/catch, явным образом приводить типы в слаботипизированных языках или отдавать предпочтение однострочным выражениям, просто потому что они однострочные.

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

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

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

Выводы

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

И не стоит забывать, что единственным реальным и объективным мерилом «хорошести» разработчика является демонстрация его прикладных способностей в решении задач программирования и разработки. Как говорил Линус Торвальдс: «Talk is cheap, show me the code», — именно поэтому крупные компании, заинтересованные в лучших из лучших, никогда не ограничиваются исключительно устными интервью, а предлагают порешать задачки, в онлайне или офлайне. 

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

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

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

Комментарии (306)


  1. UncleAndy
    09.02.2022 14:36
    +5

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


    1. Hydro
      10.02.2022 08:22
      +147

      ИМХО, это полная хрень, а не обзор. Давайте честно признаемся. Рецепты не меняются:

      1) Берем тему с кликбейтным заголовком

      2) Выпячиваем и преувеличиваем все спорные моменты

      3) Профит + завернули трафик на youtube канал


      1. ooprizrakoo
        10.02.2022 17:21
        +3

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


        1. Hydro
          10.02.2022 17:53
          +3

          Я разве назвал это "плохим обзором"? Вроде бы я высказал своё мнение в других словах. Ну и вы серьезно? пытаетесь сделать меня субъектом в дискуссии, где задача предмета спровоцировать людей? Всё понятно, люди писали, старались, потратили время. Это конечно они молодцы, но их цели я не разделяю.


          1. ooprizrakoo
            10.02.2022 19:43
            +5

            >Я разве назвал это "плохим обзором"?

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

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

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

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

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

            >Всё понятно, люди писали, старались, потратили время. Это конечно они молодцы, но их цели я не разделяю.

            Вместо того, чтобы доказывать истинность своих положений и опровергать аргументацию оппонента, демагог может обращаться к приёму ad hominem — критиковать не аргументы, а личность оппонента, пытаясь убедить зрителей, что оппонент — плохой, недостойный, не разбирающийся в вопросе, пристрастный или лицемерный человек.

            Бинго.
            В одном своем коротком хабракомментарии вы собрали 3 из 9 самых распространенных демагогических приёмов: https://ru.wikipedia.org/wiki/Демагогия#
            Дальнейшая дискуссия, видимо, смысла не имеет?


            1. Hydro
              11.02.2022 10:43
              +1

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

              • Мнение, что статья хрень, цель - запустить баттхерт у читателей и продать youtube канал

              • А как надо было написать, чтобы была не хрень и продать youtube канал? Критикуешь - предлагай

              • Высказывание мнения не обязывает к обратной связи. Ну и Вы серьезно хотите бесплатных советов для улучшения фастфудной статьи?

              • Вы демагог

              • WTF???


              1. ooprizrakoo
                11.02.2022 12:30
                -4

                я бы формализовал вот так:
                - кг/ам
                - а как автору надо было раскрыть тему?
                - чо ты привязался, мне не понравилось, и всё.
                - ясно-понятно.


              1. pharrell
                11.02.2022 14:05
                +1

                Вопрос не был провокационным. Он задан с использованием самых нейтральных формулировок.

                Алексей не задавал его с позиции "Критикуешь - предлагай". Он лишь поинтересовался развитием вашего же мнения, которое вы высказали.

                К обратной связи вас также никто не обязывал.


            1. zebra67
              11.02.2022 18:28
              +1

              Интересно, конечно, вы написали. Только ложной дилеммы здесь нет, потому что вообще дилеммы здесь нет.

              Человек задаёт вопрос, а вы пишете, что это его мнение. Вопрос это мнение?

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

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


              1. ooprizrakoo
                11.02.2022 21:13

                >Интересно, конечно, вы написали. Только ложной дилеммы здесь нет, потому что вообще дилеммы здесь нет.

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


          1. kai3341
            10.02.2022 23:54
            +13

            ИМХО, это полная хрень, а не обзор. Давайте честно признаемся.

            И следом

            Я разве назвал это "плохим обзором"?

            Не совру, если скажу "да"


          1. yatsenko-ihor
            11.02.2022 22:48
            +2

            полная хрень звучит как "плохой обзор"

            упс, уже написали


          1. janekprostojanek
            12.02.2022 01:46
            +1

            Да, вы назвали это плохим обзором. Ваши слова: "имхо, это полная хрень, а не обзор".


      1. CrocodileRed
        10.02.2022 20:13
        +1

        Хоть кто-то сказал правду :-)


      1. KislyFan
        10.02.2022 20:26
        +11

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


  1. nulovkin
    09.02.2022 15:00
    +127

    Стало быть, если программист не является хорошим спикером, то он обречён?


    1. Phoen
      09.02.2022 15:08
      +89

      То он найдет работу в другой компании. Может даже так для всех будет лучше.


    1. Sazonov
      09.02.2022 16:01
      +59

      Не нужно быть спикером. Нужно уметь выражать свои мысли понятным языком и кодом.

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

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


      1. Radisto
        10.02.2022 09:44
        +37

        У меня есть знакомый с синдромом Аспергера. Работает программером-фрилансером, судя по оплате далеко не идиот, письменная речь грамотна, но собеседование он не проходит, и не просто не проходит а вообще с личным общением у него катастрофа. Мне кажется все эти корреляции способности кодить и софтскиллов типа говорить, выглядеть, одеваться и улыбаться - максимум для нейронормальных людей с абсолютно стандартной типовой психикой, да и то не факт. Шаг влево, шаг вправо - и все эти првила превращаются в тыкву. Сугубо моё ИМХО


        1. kotandvla
          10.02.2022 11:35
          +2

          Стандартные HR набирают стандартных людей :) Уметь рассмотреть в сложном человеке бриллиант и понимать, как его внедрить в свою работу - это совсем не тривиально. Как есть люди, для которых какой-нибудь обычный бэк - это потолок, но кому-то же надо этим заниматься.


          1. ThePaleEmperor
            10.02.2022 16:20
            +3

            Может, вместо того, чтобы нанимать на HR девочек после школы, нанять человека, который способен чиатть код?
            Чтобы не придумывать "100 способов узнать о навыках программиста не открывая его код"


            1. gremsta
              10.02.2022 17:35
              +5

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


              1. IgorDev
                11.02.2022 17:55

                А кто больше получает, девочка HR после школы или джун ?


            1. kotandvla
              10.02.2022 20:00

              Это как сказать "Зачем нанимать непонятных студентов на работу, ведь. можно взять одного рокстара".

              Не всем дано делать сверх работу. А кому-то дано, но еще дорасти надо. Любой HR начинает с простого и обычного, а там - можно вырасти и в прекрасного эксперта. Но может не получиться, ведь "Давайте наймем челвоека, который умеет читать код, а остальным не будем давать возможности расти".


          1. RTFM13
            11.02.2022 20:32

            А разве задача ХР не просто договориться о собеседовании и прояснить административные вопросы?

            С каких пор ХР определяют квалификацию программистов?


            1. kotandvla
              11.02.2022 20:52

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

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


            1. gremsta
              11.02.2022 21:16

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


              1. Areso
                12.02.2022 12:52

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

                Как эйчар может это сделать, если у эйчара нет ни малейшего представления ни о проекте, ни о команде? Даже in-house.


        1. yorgo
          10.02.2022 14:45
          +23

          софтскиллов типа говорить, выглядеть, одеваться и улыбаться

          Мне всегда казалось, что софтскиллы это про:

          • не переходить на личности в код-ревью

          • адекватно реагировать на конструктивную критику

          • внятно и вежливо выразить свою точку зрения

          • заранее оповещать начальство о смещении сроков

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

          • правильно расставлять приоритеты в задачах

          • не греть рыбные котлеты в микроволновке


          1. Akon32
            10.02.2022 17:58
            +3

            А как вам "софтскилл" писать гадости, но добавлять "))))" в конце, чтобы выйти сухим из воды? Хуже всего, что это работает.


          1. Radisto
            10.02.2022 18:19
            +3

            наверное так и есть)) во втором пункте у вас правда есть термины "адекватно" и "конструктивную". Как показывает жизнь, они чрезвычайно субъективны и их диапазон не у всех людей совпадает.


          1. via-site
            11.02.2022 11:20
            +1

            "не греть рыбные котлеты в микроволновке" - один раз согрешил)) и жалел об этом ещё очень долго!


            1. Mirn
              11.02.2022 15:47
              +1

              А я просто проветрил кухню и отмыл микроволновку пока никто не заметил и не учуял.

              Вывод: софтскилы это ещё и умение понимать, принимать и вовремя исправлять свои провинности перед другими. Желательно быстро и незаметно для окружающих.


      1. IvanIvanc
        10.02.2022 13:41
        +2

        Так по первому пункту из этого "разбора" не пройдут большинство программистов, когда люди весь день в коде то болтология не про них


    1. goldrobot
      09.02.2022 16:37
      +67

      Я бы сказал несколько по другому

      Если человек не является хорошим спикером, то он обречён.

      Умение волочить языком это фактически самое полезное в жизни людей, к сожалению.

      Умение казаться, а не быть, вот что позволит вам быть на волне успеха.


      1. Andruh
        09.02.2022 17:01
        +25

        Ну да, ценой небытия.


        1. vkni
          09.02.2022 18:06
          +1

          Сильный афоризм.


          1. spmbt
            09.02.2022 19:33
            +26

            Переформулируем:

            Умение казаться, а не быть -
            Вот, что позволит вам
            Поймать волну успеха.
            Ценой небытия.


            1. Hardwar
              09.02.2022 23:13
              +12

              Канонiчно в три строчки:

              Умение казаться, а не быть -
              успех.
              Ценой небытия.


              1. Metotron0
                10.02.2022 00:32
                +15

                Умеешь коль не быть, а лишь казаться,
                Успех познаешь в качестве награды.
                Но стоимость его прими смиренно:
                Небытие — цена того успеха.


                1. SquareRootOfZero
                  10.02.2022 09:47
                  +4

                  Умеешь коль не быть, а лишь казаться,
                  Желаешь коль не жизни, а эрзаца —
                  Успешен будешь, как Эдита Пьеха.
                  Небытие — цена того успеха.


                1. vesper-bot
                  10.02.2022 15:43

                  Пахнуло хорошим переводчиком Хайяма… :)


                  1. Metotron0
                    11.02.2022 04:10

                    Даже и не читал его


            1. SquareRootOfZero
              10.02.2022 08:24
              +42

              Умение казаться, а не быть —
              Вот что позволит вам на всё забить,
              Поймать волну ценой небытия
              И деньги получать за нихуя.


        1. Artima
          10.02.2022 08:24

          Вы приняты. Но "ну да" стоит отрефакторить


      1. Suor
        09.02.2022 17:11
        +13

        Умение формулировать свои мысли - это не умение казаться


        1. RTFM13
          09.02.2022 18:16
          +22

          Я бы еще разделил устную речь и письменную.

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


          1. tommyangelo27
            09.02.2022 19:13
            +7

            Я бы еще разделил устную речь и письменную.
            Вот тут двумя руками «за».

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


          1. Bigata
            09.02.2022 19:23
            +3

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


          1. DummyBear
            10.02.2022 13:26

            Я бы разделил умение удерживать внимание аудитории и умение объяснять. Под хорошо подвешенным языком чаще подразумевают первое, чем второе.


          1. PendalFF
            12.02.2022 00:30
            +1

            Хорошо подвешенный язык это просто "аудиокарта с хорошим процом"

            Также как визуализация 3д в голове не у всех поддерживается.

            С общим уровнем интеллекта коррелирует но как достаточный признак, а не необходимый.

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


      1. saboteur_kiev
        10.02.2022 02:23
        +2

        Умение волочить языком это фактически самое полезное в жизни людей, к сожалению.

        Учитывая, что именно язык сделал человека человеком (а не дубина), сожаление непонятно.


        1. FF_hunter
          10.02.2022 10:41
          +2

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

          Сам же зашел в статью, только чтобы увидеть

          компании ... предлагают порешать задачки

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


          1. nulovkin
            10.02.2022 11:03

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


        1. goldrobot
          10.02.2022 14:56
          +1

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

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


    1. Suor
      09.02.2022 17:10

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


      1. F0iL
        09.02.2022 19:33
        +56

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

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


        1. pankraty
          09.02.2022 23:00
          +5

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


          1. ShadowTheAge
            10.02.2022 12:38
            +3

            ... А может и не оказаться

            Даже написание кода с первого раза происходит с изрядным обдумыванием, а не "что вижу то и пишу".


          1. via-site
            11.02.2022 11:26
            -2

            Часто встречал такую категорию людей как "академики". На словах они Лев Толстой, а на деле **й простой!


        1. StupidMouse
          10.02.2022 10:38

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

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


          1. PrinceKorwin
            10.02.2022 12:30
            +4

            а программы пишутся в первую очередь для машин

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

            А трудности перевода исходного кода в машинный меня мало волнуют - для этих целей умные люди придумали крутые инструменты.


            1. utyftrut
              11.02.2022 07:39

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

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


        1. z1024
          10.02.2022 17:20

          Те кто складно в realtime говорят - это наверное те Чак Норрисы, которые могут задачки типа medium и hard закодить на бумажке с 1й попытки)


    1. monah_tuk
      11.02.2022 02:57
      +6

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

      И я тут подумал, нужно про почерк добавить. Ну а что? Плохой почерк - плохой программист.


      1. SlimShaggy
        11.02.2022 10:40

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


        1. dolovar
          11.02.2022 11:37
          +1

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

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


          1. zynaps76
            11.02.2022 14:46

            В статье не говорится про "говорить, как в кино". И более того: в статье явно указано, что это не 100% метрика и далеко не единственная. Скорее,- штрих к портрету... А вообще, да, умение говорить кратко, емко и по делу - благо, как для самого программиста, так и для его окружения. ;-)


  1. Myxach
    09.02.2022 15:08
    +75

    Сильные инженеры нередко оказываются хорошими спикерами — именно их вы чаще всего можете увидеть выступающими на тематических конференция

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

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

    Как у вас в детсом саду? Или где ещё пытаются впечатлить жаргонизмом


    1. Phoen
      09.02.2022 15:12
      +4

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

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


    1. syfim
      09.02.2022 15:20
      -5

      Речь же не только про открытые конференции. Во многих компаниях практикуют регулярные внутренние митапы (иногда даже "добровольно-принудительные"), и корреляция между хорошим текстом/речью и скилами коллег отлично прослеживается)


    1. Metotron0
      09.02.2022 15:22
      +2

      только они хорошие программисты

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

      А то, что не все хорошие инженеры появляются на конференциях, не противоречит ни цитате, ни посылу статьи. Для опровержения цитаты, к примеру, нужно не считать, сколько хороших инженеров не поехали на конференции, а считать, сколько спикеров из их числа не стали хорошими.

      На счёт детского сада не знаю, но какова причина использования людьми таких слов? "Эта багулина фиксится одной тулзочкой из моей репы, вот тут пропсики прокинуть и несколько рулесов в конфиг прописать"


      1. Myxach
        09.02.2022 15:24
        +2

        хорошие спикеры становятся хорошими инженерами

        Это было бы ещё больше чушьи, речь как раз о том, что хорошие инженеры являются хорошими спикерами


        1. Metotron0
          09.02.2022 15:30
          +1

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

          Но из этого всё равно не следует, что хорошие программисты — только те, кто выступают с докладами. Которые выступают, те скорее всего хорошие, но не только они.


          1. Myxach
            09.02.2022 15:53
            +18

            Отсеять плохих легко, они пишут статьи на хабре от имени онлайн школ


            1. Metotron0
              09.02.2022 16:52
              +2

              Это пример для одного из пунктов статьи? Того, где "X — это плохо".


    1. Devilar
      09.02.2022 15:46
      +5

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


    1. Rukis
      10.02.2022 16:35
      +1

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


    1. alexeishch
      11.02.2022 11:30

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


  1. Tomok
    09.02.2022 15:17
    +27

    Первый пункт оценивает процесс написания кода или результирующий код?

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


    1. mrise
      09.02.2022 19:14
      +1

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

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


      1. goldrobot
        09.02.2022 21:10
        +14

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

        Я даже наоборот скажу, те кто не самый болтливый, в моем опыте, обычно побыстрее и получше код пишут.


        1. omxela
          09.02.2022 22:23
          +1

          кто не самый болтливый, в моем опыте, обычно побыстрее и получше код пишут.

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


          1. t_kanstantsin
            09.02.2022 23:29
            +5

            Или не сделаете. Не вижу никаких доказательств того, что умение писать код как-то коррелирует с умением объяснять (и уж тем более понятно и лаконично).

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


        1. AVX
          11.02.2022 23:02
          +1

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

          При написании кода "вода" не нужна, её наоборот пытаются убрать и сделать код более лаконичным. Да и в речи - краткость - сестра таланта.


  1. WraithOW
    09.02.2022 15:21
    +71

    TLDR: при написании кода задействованы те же участки мозга, что и при восприятии и формировании устной речи, а участки, ответственные за логику и математические задачи, практически не меняют свою активность

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

    Сильные инженеры нередко оказываются хорошими спикерами — именно их вы чаще всего можете увидеть выступающими на тематических конференциях

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


    1. Suor
      09.02.2022 17:15
      -17

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

      Я бы ещё добавил, что если в голове каша, то и в речи будет каша и в коде. Так что можно использовать как признак.


      1. RTFM13
        09.02.2022 18:37
        +14

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

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

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


      1. track13
        09.02.2022 18:52
        +6

        Про боязнь публично выступать слышали что-нибудь?


    1. bruian
      11.02.2022 15:43

      Полностью поддержу адекватного человека. У Google вообще есть HR программа по найму людей с аутическим спектром, так многие из них вообще не склонны к общению. И такие люди в приоритете. Как правило они больше делают, чем говорят.


  1. nsinreal
    09.02.2022 16:00
    +7

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

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


  1. Throwable
    09.02.2022 16:10
    +88

    Сбивчивая речь и непоследовательность в изложении мыслей

    Извините за токсичность, но брехня и полная чушь!

    при написании кода задействованы те же участки мозга, что и при восприятии и формировании устной речи

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

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

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

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

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

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

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


    1. beerchaser
      09.02.2022 16:57
      +23

      К Вашей аргументацтии я бы добавил, что хорошие выступающие спикеры готовят и репетируют свое выступление заранее, в то числе и возможные вопросы/ответы. Причем тема выступления известна заранее+уже есть опыт публичных выступлений. В случае с собеседованием все не так однозначно :)


      1. Kreastr
        09.02.2022 17:17

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


      1. CampoT1P
        09.02.2022 18:18
        +2

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


    1. Diamon33
      09.02.2022 19:41
      +25

      “How long does it take you to prepare one of your speeches?” asked a friend of President Wilson not long ago.

      “That depends on the length of the speech,” answered the President. “If it is a ten-minute speech it takes me all of two weeks to prepare it; if it is a half-hour speech it takes me a week; if I can talk as long as I want to it requires no preparation at all. I am ready now.


    1. edo1h
      09.02.2022 23:51
      +1

      Так что именно затрудненная и непоследовательная речь будет скорей всего признаком хорошего программиста

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


      1. Throwable
        10.02.2022 12:37
        +1

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


    1. SquareRootOfZero
      10.02.2022 09:43
      +2

      Бред! Абстрактное мышление вообще практически никак не связано с речью.

      Гипотеза лингвистической относительности предполагает, что структура языка влияет на мировосприятие и воззрения его носителей, а также на их когнитивные процессы. Лингвистическая относительность широко известна как гипотеза Сепира — Уорфа. Выделяют две формулировки этой гипотезы[1]:

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

      Гипотеза небесспорная, особенно в своей «строгой» версии, но чтобы вот прям бред?..


      1. Throwable
        10.02.2022 13:28

        Я бы сказал не небесспорная, а как раз очень даже спорная, по которой уже 100 лет не утихают дебаты.

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

        и

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

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

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


  1. 2morrowMan
    09.02.2022 16:25
    +22

    По своим наблюдениям добавлю еще один пункт с большой долей вероятности плохого программиста: человек перестал или стал меньше программировать и пошёл учить других в онлайн-школы программирования ;)


    1. panzerfaust
      09.02.2022 17:40
      +5

      Да просто "пошел учить" вполне достаточно. К сожалению, есть такой сорт старших разрабов, которые не хотят идти в менеджмен или архитектуру, но и обычный кодинг им уже осточертел. Вполне вероятны фокусы типа "а давайте наймем 5 джунов - а я их буду менторить (а кодить больше не буду)"


      1. adictive_max
        09.02.2022 19:07

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


        1. panzerfaust
          09.02.2022 19:18
          +1

          человек перестал или стал меньше программировать и пошёл учить

          Вроде булева алгебра тут несложная


          1. goldrobot
            09.02.2022 21:19
            +4

            Это вероятно вечерние курсы для студентов 2 раза в неделю по 2 часа сказываются.

            PS: Извините, но было сложно удержаться.


        1. spmbt
          09.02.2022 19:50

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


    1. tommyangelo27
      09.02.2022 19:20
      +5

      Вспоминается цитата из Пратчетта:

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


      1. Ndochp
        10.02.2022 13:22
        +2

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


        1. vesper-bot
          10.02.2022 15:48
          +4

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

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


    1. rodion-m
      10.02.2022 10:43
      +6

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

      ЗЫ. Понятно, что такой коммент в блоге онлайн школы программирования действительно выглядит иронично :) поэтому надеюсь, вы просто пошутили)


    1. Keeper1
      10.02.2022 11:08
      +2

      Кто умеет, тот делает; кто не умеет, тот учит.


      1. merlin-vrn
        10.02.2022 13:45
        +1

        Кто не умеет и учить - управляет.


  1. Dlougach
    09.02.2022 16:38
    +12

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


    1. Diamon33
      09.02.2022 19:46
      +2

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


  1. 2ANikulin
    09.02.2022 16:52
    +22

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


    1. Format-X22
      09.02.2022 17:07
      +1

      Главное на этой почве не отсекать тех кто и говорить умеет - и делать дело. А то бывает.


      1. 2ANikulin
        09.02.2022 17:10
        +2

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


        1. spmbt
          09.02.2022 19:56

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


  1. garwall
    09.02.2022 17:26
    +7

    Про Дейкстру.

    Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.


    1. spmbt
      09.02.2022 20:13
      +1

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


      1. omxela
        09.02.2022 22:32
        +3

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



  1. VYudachev
    09.02.2022 17:42
    +14

    Как плохой разработчик, скажу

    Если в компании не используют X, в этой компании не надо работать;

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

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

    Хорошая мысль, но несколько однобокая. Фейнман понятным образом изложил КЭД, но серьезно учат её все-таки больше по непонятному изложению Фейнмана или книгам Ландау-Лифшица. Сложность многих моделей ограничена снизу и серьезно упростить ее с получением на выходе эквивалентного результата может оказаться невозможно. Некоторые мысли при изложении в несколько слов существенно теряют в глубине. Другое дело, что от по-настоящему умного человека, который не ставит первоочередной целью произвести впечатление, ты практически никогда не услышишь слов, значения которых не знаешь.

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

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

    — Задачи такого рода нужно всегда решать именно так;

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

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

    М-м-м, вкуснота, взаимопротиворечащие параграфы подвезли! А что, если сторонняя библиотека и правда решает эту задачу лучше? Вот только этого не удастся узнать, пока не попробуешь. Чтобы развиваться профессионально, нужно много узнать, а для этого надо постоянно интересоваться чем-то новым.


    1. merlin-vrn
      10.02.2022 14:04
      +2

      Фейман не то, чтобы "понятным образом изложил" КЭД. Это не изложение в том смысле, чтобы её можно было использовать по назначению или развивать. Это — красивая иллюстрация, чтобы домохозяйки поняли, о чём это. Конечно, так учить КЭД нельзя.

      Однако, сама способность выдать такое изложение показывает нам, что Фейнман прекрасно ориентировался в теории. Именно этого эффекта ожидают и от кандидатов на собеседовании: если он может "изложить КЭД в нескольких словах", наверное, он глубоко ориентируется в теме.


      1. VYudachev
        10.02.2022 14:15

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


        1. merlin-vrn
          11.02.2022 09:06
          +1

          А там ничего сверхъестественного нет. Математики много, но довольно однообразной, за пределы исчисления многих переменных и комплексного, а также диффуров и линейной алгебры очень редко выходит. Ну и комбинаторика и теория вероятностей в статфизике ещё. Это осилить — просто тупо очень много работы.


  1. johnfound
    09.02.2022 18:12
    +3

    Не, вообще то я плохой программист и могу себе позволить:


    – Свободные решения лучше несвободных!
    – Линукс лучше Винды!
    – Со временем все перепишут на ассемблере!
    – Java и C# отстой!


    1. CampoT1P
      09.02.2022 18:28
      +5

      – Свободные решения лучше несвободных!

      – Линукс лучше Винды!

      – Java и C# отстой!

      Это еще можно понять

      – Со временем все перепишут на ассемблере!

      Но это слишком толсто)


      1. johnfound
        09.02.2022 18:36

        Как раз это тот тезис, которого можно доказать даже формально. А верхние три – так, вкусовщина.


        1. CampoT1P
          09.02.2022 18:48

          Докажите, я пока упорно не верю)


          1. johnfound
            09.02.2022 19:06
            +2

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


            1. CampoT1P
              09.02.2022 19:26
              +1

              Возможности вычислительной техники ограничены законами физики.

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

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

              Либо превращать приложение в тонкий клиент, и переносить все вычисления в датацентры, которые можно масштабировать до бесконечности...


              1. johnfound
                09.02.2022 23:18
                +2

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


            1. indestructable
              09.02.2022 20:08

              Усложнение может быть "горизонтальным" - больше функций, вместо вычислительного усложнения текущего функционала


              1. johnfound
                09.02.2022 23:16

                Ну и что? Память тоже не бесконечная. А программы на ассемблере одновременно и меньше и быстрее.


                1. ReadOnlySadUser
                  10.02.2022 17:22
                  +4

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

                  В этом мире миллион программ, пользователи которых готовы мириться с их ограниченной производительностью, потому они навсегда останутся написанными на чем-то медленном)


                  1. johnfound
                    10.02.2022 21:23
                    +1

                    Во первых, может это у вас только electron. На моем компьютере нет ни одного приложения работающее на electron. (могу научить как сделать так, чтобы у вас тоже не были, но мне кажется что вам не понравится ????︎).


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


                    1. 0xd34df00d
                      11.02.2022 04:43
                      +1

                      На моем компьютере нет ни одного приложения работающее на electron. (могу научить как сделать так, чтобы у вас тоже не были, но мне кажется что вам не понравится ????︎).

                      Мне, увы, нужен slack. Теперь научите обходиться без электрона (и, чтобы не читерить, без веб-морды слака).


                    1. ReadOnlySadUser
                      11.02.2022 09:19

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

                      Да не то, чтобы я не знал, как обойтись без приложений на электроне, вопрос в том - нафига? :) "Потому что"? :)


                      1. gremsta
                        11.02.2022 11:32
                        -1

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


                  1. utyftrut
                    11.02.2022 09:02

                    "...готовы вынуждены мириться с их ограниченной производительностью ..."


                    1. ReadOnlySadUser
                      11.02.2022 09:11

                      Да ну ладно уж. Взять тот же VSCode на электроне сделан. Прекрасное приложение, зачем оно на ассемблере? :) Мне его производительности хватает за глаза.


                      1. johnfound
                        11.02.2022 11:10

                        Мне его производительности хватает за глаза.

                        Пока хватает. Да и то как вы написали «за глаза», выглядит что чуть-чуть хватает.


                        Но ведь здесь есть только два варианта


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


                        – VSCode не будут развивать дальше. Но такие программы всегда прекращают использовать, какими бы они хорошими не были.


            1. qw1
              09.02.2022 21:04
              +4

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

              В реальности, новые требования будут прилетать всё быстрее и быстрее. Переписывать что-то вообще не будет времени, и более правдоподобное предположение «Со временем всё будут писать с первой попытки на языке, который позволит побыстрее оформить требования в код».


              1. johnfound
                09.02.2022 23:13

                Вообще-то да, конечно. В реальности именно так и получится.


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


            1. KGeist
              10.02.2022 08:15
              +4

              Можно и по-другому аргументировать - оптимизирующие компиляторы, в т.ч. profile-guided компиляторы (особенно с динамической рекомпиляцией), идут в направлении оптимизации под конкретную нагрузку, а значит оптимизация руками будет всё менее и мене релевантна, т.к. сложно заранее предугадать, какая будет нагрузка (и какая там конфигурация сервера в данный момент, т.к. у каждого свои особенности). Да и сейчас, если дать написать ассемблер обычному разработчику, его код скорей всего будет менее оптимальный, чем код современного оптимизирующего компилятора.

              Имхо, больше выгоды даст написание cache-friendly кода, правильный выбор алгоритмов (O(1) вместо O(n)), а это можно сделать и без ассемблера.


              1. johnfound
                10.02.2022 12:53

                Конечно можно. Но все это можно сделать и на ассемблере и будет еще лучше. Кроме того, хорошие оптимизирующие компиляторы можно сделать только для языков относительно низкого уровня типа C/C++. Для современных ООП языков типа C#, Java, Python, боюсь оптимизация получается довольно посредственной.


                1. KGeist
                  10.02.2022 23:49

                  хорошие оптимизирующие компиляторы можно сделать только для языков относительно низкого уровня типа C/C++. Для современных ООП языков типа C#, Java, Python, боюсь оптимизация получается довольно посредственной.

                  Собственно, вся суть С++ в том, что это С + ООП (на практике; есть, конечно, любители целиком шаблонами писать). И вот тут, как раз, рантаймы типа Java выигрывают в плане именно компиляторных оптимизаций под ООП, т.к. один из основных оверхедов это вызов виртуальных функций, и статический анализ здесь проигрывает динамическим рекомпиляциям: например, при вызове интерфейсных методов рантайм может на основе истории вызовов понять, что вот в этом конкретном месте (callsite) по факту под интерфейсом скрываются всего два конкретных класса (хотя интерфейс реализуют 9000 классов), и заменить дорогие вызовы через виртуальную таблицу (а это функция по указателю, что у многих процессоров сбивает branch prediction) на простое сравнение "если это класс А, то сделай jump сюда" (так называемый callsite cache), а может пойти дальше и полностью девиртуализировать вызов (если класс один), что сразу же позволяет активировать кучу оптимизаций типа инлайнинга. Такое ручками делать в постоянно развивающемся проекте - такое себе удовольствие. Но такие рантаймы обычно всё равно медленнее С++, просто потому, что в по дизайну в них чаще всего присутствует также сборщик мусора и отдаётся предпочтение by ref-объектам вместо value types, т.е. страдает memory locality. Не могу вспомнить, чтобы был язык с продвинутым JIT, но без GC. Было бы интересно на такой посмотреть.


                  1. KGeist
                    11.02.2022 00:16

                    А, и ещё - в языках низкого уровня типа C/C++ существует проблема алиасинга, т.е. это когда мы не можем активизировать оптимизацию при работе с указателем в полную меру, потому что статически мы не всегда можем определить, есть ли ещё кто-то, кто ссылается на этот участок памяти (возможно, с другим типом). Если мы будем считать, что у указателя только один пользователь, мы можем применить далеко идущие оптимизации, но это зачастую ломает кучу кода (когда оказывается, что пользователей много - в других потоках, через type punning, это может быть несколько указателей на пересекающиеся участки массива), в итоге часто или ставят не самый высокий уровень оптимизации, или в самом компиляторе не делают оптимизацию, т.к. 99% софта надеятся на UB (не зная об этом). Вот тут как раз у более высокоабстрактных языков с чётко определённой memory model можно больше оптимизаций выжать.


                  1. 0xd34df00d
                    11.02.2022 04:46
                    +1

                    Собственно, вся суть С++ в том, что это С + ООП (на практике; есть, конечно, любители целиком шаблонами писать).

                    Это чреватая большими проблемами интерпретация C++.


                1. 0xd34df00d
                  11.02.2022 04:48
                  +1

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


                  Другое дело, что средние оптимизирующие компиляторы проще сделать для классических императивных языков вроде C или C++.


            1. Vinchi
              11.02.2022 04:36

              Когда дойдут до предела физического, код будет не на ассемблере. Например это будет нейроморфный чип на кубитах )


    1. codecity
      09.02.2022 19:04
      +4

      – Со временем все перепишут на ассемблере!

      Берите выше ниже - на VHDL.


      1. johnfound
        09.02.2022 19:08
        +1

        И это тоже. И уже. Но гибкости не хватает.


        1. AnthonyMikh
          10.02.2022 17:48

          Какой-то очень произвольный водораздел получается. Почему ассемблер достаточно гибок, а VHDL — уже нет?


          1. johnfound
            10.02.2022 21:39

            Потому что программа на ассемблере – самая обычная программа, которая загружается в РАМ и выполняется. Потом завершается и можно загрузить другую. Чтобы так программировать хардуер, понадобится совершенно другая архитектура компьютера.


            1. RTFM13
              11.02.2022 21:00

              Вы не путаете ассемблер и машинный код?


  1. khuzhinru
    09.02.2022 18:26
    +7

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


  1. RomanArzumanyan
    09.02.2022 18:51
    +11

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

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

    Выдвинутые в статье тезисы находятся на уровне диванной аналитики.


  1. WASD1
    09.02.2022 18:51
    +5

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

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


    1. omxela
      09.02.2022 22:51

      Если ответы на вопросы "вылизанные"

      Я иногда слушаю аспирантов на экзаменах. Это люди ужЕ обученные и подкованные. Тянут билет и после этого отправляются часа на 2-3 куда хотят. А потом мы беседуем. Так вот, если товарищ зубрил и даёт "вылизанный" ответ (пусть формально и правильный), то это видно с первых слов и дальше достаточно пары-тройки "отклоняющихся" вопросов, чтобы и товарищу стало ясно, что не прокатит. А вот тот, кто понимает, говорит ясно и без понтов. И его так просто не собьёшь (да и цели-то такой нет). Так что, это не обратная корреляция, имхо, а вбок.


  1. BlackStar1991
    09.02.2022 19:46

    Статья понравилась, но с автором по большому количеству изложеных мерил "хорошести" не согласин. Если б статья называлась как определить что перед вами Неопытный разработчик, то я бы согласился с названием. Все програмисты, (пока что люди), а у людей есть свои характеры, по тому как человек может изяснять свою речь, ещё ничего не означает. Лично я знавал крутого разраба, который с другими практически не общался, говорил короткими предложениями, но в решениях алгоритмов был докой.

    Могу предложить свою формулу "хорошести" программиста.

    Стоимость выполненных задачь програмиста (переведите в профит для бизнесса за месяц) / Стоисмость програмиста (в трудо часах).

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

    Автор же предлагает на каждую задачу изучать свой редактор vim/emacs/eclipse/, что бы быть "хорошим" и выбирать под нужную задачу - нужный, но это противоречит его же принципу, где говориться, что не надо тратить много времени на уже решенные задачи. А ити и просить совета у более опытных, которые по факту за него потратили на эту задачу свое время.... цикл замкнулся. Ты не станеш хорошим, если не попробуешь решить сам - ты будешь плохим, если будешь решать, тратя ресурсы компании на эксперементы и саморазвитие.


  1. dolovar
    09.02.2022 20:32
    +6

    Сбивчивая речь и непоследовательность в изложении мыслей
    Регулярно спотыкаюсь, обдумывая формулировку для наиболее ясного, но точного донесения мысли.
    И с легкостью перехожу на другие мысли, поскольку обычно в голове крутится множество разных задач.
    Злоупотребление жаргонизмами и buzzwords… особенно часто это встречается у людей, которые много работали в энтерпрайзах и часто общались с менеджерами
    Я много работал в энтерпрайзах и часто общался с менеджерами. Рили.
    Перфекционизм и идеализм… Например: Фреймворк или язык X лучше фреймворка или языка Y;
    Да, я регулярно прихожу к мнению, что для задачи «альфа» лучше выбрать X, а не Y.
    Переусложнение или оверинженеринг… систематическое привнесение избыточной сложности в решения как на микро-, так и на макроуровне
    Наспотыкавшись о необходимость перепахать кучу разного в застарелом легаси для реализации очередной фичи и практикуя системный подход с выяснением контекста и планов, я всегда привношу избыточную сложность в решения.
    Самоуверенность и «велосипедизм»
    Я твердо самоуверен, что не может получиться великолепного специалиста из того, кто не писал и не пописывает велосипеды.
    Туннельное зрение… привычка основана именно на предшествующем опыте и мешает разработчику получать новый, более конструктивный опыт
    Я ежедневно использую привычные инструменты и подходы, и, наверняка, иногда это мешает получать новый опыт, который, весьма вероятно, мог бы оказаться конструктивным в отдаленной перспективе.

    У меня здесь остался только один вопрос — эйчары действительно руководствуются подобными, одобренными сообществом статьями для типирования кандидатов?


    1. bullitufa
      10.02.2022 08:51

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


    1. vesper-bot
      10.02.2022 15:51
      -1

      Ну, вот вы упускаете контекст — беседы ли, вопроса ли, утверждения ли. Это вам в минус. А в некоторых случаях, как мне кажется, намеренно его дропаете — это два минуса сразу.


      1. dolovar
        10.02.2022 16:23

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


  1. Politura
    09.02.2022 20:46
    +2

    TLDR: при написании кода задействованы те же участки мозга, что и при восприятии и формировании устной речи

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

    Ну и в целом, у этого вашего "исследования" все что есть в абстракте только одна строчка "Programming research has entered the Neuroage." походу сами исследователи даже письменно не могут изложить, что они там наисследовали, яб не стал на него ссылаться.


    1. greenEkatherine
      10.02.2022 14:37
      +1

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


  1. andreyiq
    09.02.2022 22:08

    если он тратит лишние часы на то, чтобы решить, какой цвет тени будет смотреться лучше — #444444 или #3e3e3e

    Надо дизайнерам показать)


  1. pokrovsky-marat
    09.02.2022 22:27
    +5

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


  1. eeeMan
    09.02.2022 22:47

    про речь не согласен, за неё и за написание кода отвечают разные участки мозга.


  1. tsurugi-no_ken
    09.02.2022 23:17
    +18

    Сильные инженеры нередко оказываются хорошими спикерами

    Очередное оправдание для хрюш выбирающих по софтскиллс бабников

    отвергая "задротов"?


    1. Sayonji
      10.02.2022 03:09
      +2

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


  1. AlexanderKudryavy
    09.02.2022 23:17
    -9

    Согласен с каждым пунктом, сам многим из этого переболел в начале своего пути, теперь вспоминаю это с улыбкой, но когда приходится сталкиваться с новичками, которым искренне даёшь хорошие советы, с пускай уж и не большой высоты своих лет и опыта, но всё же, получив в ответ "да-да, я лучше сам разберусь" - хочется кинуть с прогиба :D Хорошо одно, с этими людьми я никак не связан по работе, они просто друзья. А вообще конечно печально осознавать то, что большинство людей не умеют учиться на чужих ошибках, а прямо стремятся потратить своё и чужое время на набивание шишек...


    1. AlexanderKudryavy
      10.02.2022 00:12
      -2

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


      1. tsurugi-no_ken
        10.02.2022 00:17
        +4

        Я не минусил, но ваше не имеющее аргументов утверждение

        Согласен с каждым пунктом

        вызывало минус, тоже без аргументов.


        1. AlexanderKudryavy
          10.02.2022 00:30
          -3

          Ок, вот вам аргумент из моей области, все кто не использует DOTween и Odin Inspector в Unity - зря тратят свое время, собственно я целый год уговаривал товарища на это, а он отпирался со своим - " Да я сам разберусь", догадаетесь какой итог? Он начал их использовать :)

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


      1. edo1h
        10.02.2022 00:33
        +4

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

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


        обучение программированию — это не только и не столько «смотри как надо делать», это скорее объяснение того, как ты пришёл к тому, что делать надо именно так.


        1. AlexanderKudryavy
          10.02.2022 00:43

          Это с чего вы так решили? Я не советую что либо не аргументировав свой совет, именно это я и делал, объяснял почему я к этому пришёл и почему он прийдёт к этому тоже, но в ответ получал - "Да-да, я сам разберусь", по итогу он разобрался и пришёл к этому сам, вопрос только в экономии времени.


      1. Keeper1
        10.02.2022 11:19
        +5

        Письменная речь на русском языке -- явно не ваша сильная сторона. Выводы сделайте сами.


      1. bogolt
        10.02.2022 16:29
        +1

        > печально осознавать то, что большинство людей не умеют учиться на чужих ошибках

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

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


    1. ehots
      10.02.2022 12:51
      +1

      Прям вижу экспертное код ревью от вас с замечаниями: неправильно, лучше DOTween, так не надо. А потом на кухне с коллегами жалуетесь что джуны вас не слушают и делают не так как говорите, а с чего бы им? Вам если скажут ходить с левой ноги, ведь так лучше, а вы ходите с правой, сразу начнете просто следовать этим экспертным советам?)


  1. omxela
    09.02.2022 23:39
    +1

    Спасибо автору, текст хороший, понятный, хотя и не без технотрёпа кое-где (типа, шутка). Основное достоинство статьи в том, что я с ней согласен. Скажу больше. На мой взгляд, всё сказанное относится к любой инженерной или научной работе. Ожидаемо большое оживление вызвал первый пункт о внятности изложения проблем. Ну, не я придумал: кто ясно мыслит, тот ясно излагает. Разумеется, в любом правиле есть нюансы и исключения. У меня был коллега (увы, его нет в живых), который очень просто и понятно решил одну радиофизическую задачу. Но когда он её излагал публично - это была катастрофа. Потому что он был педант и перфекционист (пункт №3), то есть, считал, что если он упустит в докладе какую-либо деталь, пусть самую махонькую, то всё пойдет насмарку. Мухи дохли на лету. Сердце сжимала предсмертная тоска. Вопросов после доклада не задавали. Давно это было. На нашу статью в ведущем американском журнале активно ссылаются до сих пор. Бывает.

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


    1. roswell
      10.02.2022 15:07

      Пунктик о подобном складе ума напомнил эпизод у нашего-всего Антона Павловича Чехова из «Скучной истории»: ¨Петр Игнатьевич, даже когда хочет рассмешить меня, рассказывает длинно, обстоятельно, точно защищает диссертацию, с подробным перечислением литературных источников, которыми он пользовался, стараясь не ошибиться ни в числах, ни в номерах журналов, ни в именах, причем говорит не просто Пти, а непременно Жан Жак Пти.¨ Ну, а далее, через пару абзацев — всё в соответствии со сценарием, которого придерживались слушатели: ¨Веду я себя с Петром Игнатьевичем дурно, и только когда он уходит, и я вижу, как в окне за палисадником мелькает его серая шляпа, мне хочется окликнуть его и сказать: «Простите меня, голубчик!»¨


  1. eimrine
    09.02.2022 23:54

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


  1. Alexandroppolus
    10.02.2022 01:33
    +5

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

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


    1. RTFM13
      11.02.2022 21:13

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

      Идеальный сценарий для внешнего подрядчика с почасовой оплатой.


  1. Yoooriii
    10.02.2022 01:51
    -5

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


    1. AllexIn
      10.02.2022 08:55
      +1

      "как-то бестолково" - это как?


      1. F0iL
        10.02.2022 10:29
        +9

        Формально таски в джире закрывает, но как-то бестолково.

        Звучит как "человек нормально делает свою работу, но я просто уже не знаю, до чего еще докопаться" :)


      1. zetroot
        10.02.2022 10:35
        +7

        "Без души", "механистично", ну знаете там, ВАВЛЕЧЕНАСТЬ и все такое


      1. General_Failure
        10.02.2022 10:41
        +11

        «Ты пишешь хороший код, но делаешь это без уважения»


      1. tommyangelo27
        10.02.2022 11:12
        +7

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


      1. screamingbirdoftruth
        10.02.2022 16:10
        +2

        Из моей практики — когда после закрытия заведенного багрепорта можно еще с десяток других открывать. То есть, формально ошибка больше не воспроизводится, но все равно с кодом потом проблемы, и чем больше изменений, тем больше проблем. Со стороны выглядит, будто делается, что называется, "напохуй", без продумывания последствий и невдумчиво.


        1. invasy
          11.02.2022 03:57
          -1

          Без ТЗ результат ХЗ.

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


          1. screamingbirdoftruth
            11.02.2022 19:26
            +1

            Ловко придумано конечно, перекладывать ответственность на оформление репортов, но нет, это так не работает. Тостер может написать что функционал работает не в соответствии с поставленной задачей, дать шаги для воспроизведения, дать информацию по воспроизводимости и актуальности проблемы, но чего в багрепорте быть не может, так это "погаси или хотя бы не копи техдолг и потрать на пять минут больше пожалуйста, чтобы разобраться и сделать по красоте, а не городить огород не вникая в проблему", это мягко говоря непрофессионально. Или надо еще в ТЗ дописывать "делай на совесть"? Или что такого QA должен написать в репорте, чтобы исправление гарантированно не повлекло за собой гору косвенно связанных ошибок, обусловленных особенностями реализации, за которые тот же QA не в зуб ногой и принципиально знать не может?


            1. Ndochp
              12.02.2022 00:18
              -1

              А причем тут оформление репортов? тут манагер/аналитик ТЗписатель встретиться должны и сказать разработчику, что в приоритете.


              1. Быстрое закрытие таски, чтобы получить довольного пользователя
              2. рефакторинг/пересмотр архитектуры для снижения числа баготасков в жире.

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


              1. mayorovp
                12.02.2022 12:36

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


    1. maslyaev
      10.02.2022 11:09
      +2

      Формально таски в джире закрывает, но как-то бестолково

      ... но делает это без уважения


  1. datacompboy
    10.02.2022 02:16
    +25

    Дополню.

    • Посмотрите на пол собеседника. Если женский, то не берите, уйдёт в декрет или вообще будет фигнёй страдать.

    • Посмотрите на наличие бороды. Если её нет, нельзя брать на бэкенд.

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

    И прочий бред "как принять решёние на основе нерелевантных, зато простых знаков".


    1. JustDont
      10.02.2022 03:10
      +6

      Рыб надо брать, рыб — тоже работают за двоих и при этом молча! Идеальный исполнитель!


      1. Yoooriii
        10.02.2022 03:15
        +5

        Рыбы не пройдут собеседования, язык плохо подвешен).


        1. dwdraugr
          10.02.2022 14:11
          +1

          И не надо подвешивать, больно же!

          Картинка-картиночка
          Да, я знаю, что не за язык, давайте абстрагируемся от этого момента :)
          Да, я знаю, что не за язык, давайте абстрагируемся от этого момента :)


    1. tsurugi-no_ken
      10.02.2022 06:36
      +3

      Посмотрите на наличие бороды. Если её нет, нельзя брать на бэкенд.

      Брать на работу только таких разработчиков?


      1. merlin-vrn
        10.02.2022 14:13
        +1

        Нет. Формулировка не предполагает, что при наличи бороды надо сразу брать. Она только предполагает, что без бороды не брать.


      1. BioHazzardt
        10.02.2022 14:30
        +2

        ну такие разработчики полюбому пишут бомбический код


        1. General_Failure
          10.02.2022 14:40
          +1

          — Ахмед, у тебя краш произошёл!
          — Так по ТЗ он и должен был произойти
          — Ты не понял, не объект крашнулся, а твой код!


  1. Nacreous1991
    10.02.2022 02:33
    +7

    Стадии роста программиста:

    1) Хочет все написать сам

    2)Ищет подходящую библиотеку

    3) Ищет подходящий фреймворк

    4) Ищет кому бы отдать эту фигню на аутсорс, чтобы самому заниматься более интересными делами


    1. firehacker
      10.02.2022 09:19
      +9

      5) Перепробовав гору аутсорсерлв, снова хочет все писать сам


  1. Sayonji
    10.02.2022 03:21
    +2

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

    Разумеется я про суждение о силе программистами по его речи. Остальное в статье - капитанство.


  1. AlexTOPMAN
    10.02.2022 06:48

    Мне кажется, термины перфекционизм и идеализм не очень удачно были подобраны к контексту. Лучше было ввести термин "стереотипизм". Он также пододошёл бы и для раздела про туннельное зрение.


  1. SquareRootOfZero
    10.02.2022 08:46
    +3

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

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


    1. merlin-vrn
      10.02.2022 14:18
      +2

      Зона Вернике вроде как за восприятие отвечает. Зона Брока, насколько я помню, работает как моторная речевая зона, т.е. для говорения вслух, но не формирования текста, и ещё она работает иногда не только для говорения. А так, вон https://scitechdaily.com/reading-computer-code-is-not-the-same-as-reading-language-to-the-brain/ пишут, что чтение кода не задействует те же самые зоны, которые возбуждаются при восприятии речи.


  1. bullitufa
    10.02.2022 08:48
    +2

    А что делать (и вопрос вовсе не праздный) если по многим пунктам статьи узнал себя?(

    По некоторым пунктам есть конечно проблески, но в общем...

    p.s. Искал такой вопрос в коментах, не увидел


    1. DrAndyHunter
      10.02.2022 11:41
      +1

      А что делать

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


  1. aFanOfSwift
    10.02.2022 09:51

    Что характерно, это никак не зависит от языка, на котором идет общение. 

    Очень спорное утверждение. Может и не завист от языка, если это твой родной язык.

    А если нет?!

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


    1. syrslava
      10.02.2022 15:32

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


      1. aFanOfSwift
        10.02.2022 15:52
        +1

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

        А у вас видимо уровень владения английским всё же выше.


        1. SquareRootOfZero
          11.02.2022 05:55

          Если «уровень языка не позволит» — это, скорее, «косноязычно», а не «лаконично». Уметь сказать всё чётко, понятно и правильно, но при этом просто и коротко (и никак иначе) — это какой-то странный уровень владения языком: нужно иметь обширный (близкий к носителю) словарный запас, знать идиомы, но при этом не уметь строить сложные предложения.


          1. aFanOfSwift
            11.02.2022 08:23

            По мне так, идиомы в любом языке ЧАСТО только усложняют и перегружают его, это ни как не про лаконичность. Что не очень то нужно в деловом общении. Они нужны для обогащения речи. Может для политика и/или для публичных выступлений. Но точно не на обсуждение таска.

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

            Например, можно по разному дать понять человеку о его не далёкости. Можно, коротко и ясно сказать, что он тупой и может парой слов объяснить почему в данном случае это правда. А можно красиво и с использованием сложной терминологии и идиом объяснить это человеку, но он, как мы знаем, мягко говоря, не далёк. Так он даже не поймёт этого объяснение, а значит велика вероятность того, что он не исправится, а так и останется идиотом.

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


  1. Borjomy
    10.02.2022 09:58
    +1

    Хороший программист тот, которому при новой вводной не надо переписывать весь код заново. Потому что он думает на несколько шагов вперёд. И избегает таким образом лишней работы.

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

    Кто ясно мыслит, тот ясно излагает. Только не языком. Язык для программиста это его программа. Поэтому надо код смотреть.

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


    1. Keeper1
      10.02.2022 11:25

      Хороший программист тот, которому при новой вводной не надо переписывать весь код заново. Потому что он думает на несколько шагов вперёд. И избегает таким образом лишней работы.

      Сомневаюсь, что люди со способностями ясновидящих вообще станут работать программистами.


      1. F0iL
        10.02.2022 12:13
        +3

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


        1. Radisto
          10.02.2022 12:22

          А что если "сопровождать ваш код будет склонный к насилию психопат, который знает, где вы живёте"

          Прощу прощения за бородатую шутку


          1. F0iL
            10.02.2022 13:51
            +3

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

            У меня до сих пор глаз дергается, когда я вспоминаю код одного embedded-проекта Устройством был контроллер замерной установки. На первый взгляд задача была простая: из буфера UART берем полученный пакет (ответ от IO-модуля на наш предыдущий запрос), парсим его в соответствии с используемым протоколом, проверяя его на корректность и выделяя оттуда блок данных, потом разбираем сам блок данных (он содержит сразу несколько значений разных данных/параметров), и в зависимости от этих данных делаем то или иное (меняем состояние state-машины, запускаем ту или иную функцию, возводим флаг аварии со сбросом в архив, и т.д.).
            Разработчик, писавший этот код изначально, сделал все просто... это всё было не то что в одном модуле, и даже не то что в одном файле, а в одной на тот момент еще небольшой функции. Всё было просто, понятно, всё работало.

            А потом выяснилось, что вот эти вот модули что-то с рынка пропали, зато есть другие - почти точно такие же (в модели отличается одна последняя цифра), но у них немного другой формат некоторых параметров.... В функции добавилась горсточка if...else. Потом проектировщики в соответствии с требования заказчиков поменяли компоновку шкафа, что изменило назначение входов модулей, и, соответственно, логику разбора блоков данных... В функции добавилось еще больше блоков if-else, уже гораздо более жирных. Потом выяснилось, что у нас импортозамещение экономия и нужно использовать модули другого производителя, у которых протокол обмена вроде бы тот же, но с некоторыми нюансами... Потом снова поменялась компоновка шкафов... Потом по требованиям заказчиков в прошивку добавили новый функционал, в результате чего потребовалось, чтобы реакция на те или иные события от модулей была разная в зависимости от текущего режима работы... Короче говоря, спустя 6 лет после начала разработки код этого файла представлял собой монструозное нечто с кучей вложенных if...else разветвлений, monkey-patching'ом полученных пакетов данных при необходимости и черт знает чем еще... Естественно, никакими тестами это покрыто не было (да даже если бы захотели, это было бы не так-то просто).

            И это не какой-то специфический и уникальный пример, такое вообще встречается повсеместно.

            А теперь вопрос - как этого можно было избежать? Просто заранее надо было разделить всю эту логику на разные независимые друг от друга взаимозаменяемые части - было бы гораздо гибче, а бонусом еще и проще тестировать. Я понимаю, возможно разработчик, делавший первую версию этого кода думал что это изделие "на раз" и можно вообще ни секунды не думать о гибкости и расширяемости, но с другой стороны, если бы даже не обладая даром предсказания он бы просто слепо следовал тем же самым здесь не раз упомянутым S-, L- и D- принципам, и сделал всё сразу по уму, изначально потратив совсем чуть-чуть больше времени - то сэкономил бы кучу сил и ресурсов и себе, и всем остальным программистам, вынужденным поддерживать этот код после него.


            1. svr_91
              10.02.2022 15:31

              А удалось в результате переписать как хотели?


              1. F0iL
                10.02.2022 18:37

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

                В том самом проекте, насколько я знаю, всё осталось по-старому, и до сих пор спустя много лет мне иногда пишут на е-майл новоприбывшие сотрудники той компании, спрашивая "Чувак, что делать, я боюсь трогать это", хотя я там давно уже не работаю и по сути дела к тому коду особо отношения не имел :)


            1. ainoneko
              10.02.2022 15:59

              сделал всё сразу по уму, изначально потратив совсем чуть-чуть больше времени
              Может, он считал, что следует принципам YAGNI и KISS? ¯\_(ツ)_/¯


              1. F0iL
                10.02.2022 18:39

                Хорошая попытка, но нет :)
                YAGNI, как мне кажется, он больше про функционал. Логично, что нет смысла сразу запиливать полные парсеры для 3-х протоколов, когда используется только 1.
                А вот KISS наоборот был грубо нарушен - сама его идея в том, что лучше иметь как можно более простые и маленькие методы и модули, а не пихать всё что можно в одно место.


            1. nikolay-ermolenko
              10.02.2022 17:18
              +1

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


              1. Borjomy
                11.02.2022 15:59

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


                1. tsurugi-no_ken
                  11.02.2022 16:36

                  Делать "константами" вещи, которые с очень высокой вероятностью могут измениться - не уважать своих коллег и заказчиков.

                  Увы, так делать это очень модный карго-культ. :(


              1. mayorovp
                12.02.2022 12:47

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


        1. oOKIBrTlUTohw4Sc
          10.02.2022 14:11
          -1

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

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

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

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


          1. dolovar
            10.02.2022 14:56
            +2

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


            1. svr_91
              10.02.2022 15:37

              Да, крайности всегда плохо, и найти середину непросто.

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

              Тут претензия к основному высказыванию, что "всегда нужно все предусматривать". И иногда действительно кажется именно так. Но реальность такова, что поведение "будь проще, не заморачивайся" приносит пользу может даже чаще, чем педантичность


              1. 0xd34df00d
                11.02.2022 06:01
                +2

                Скрытый текст

                язык с развитой системой типов.


                1. svr_91
                  11.02.2022 08:50

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


  1. Tontu
    10.02.2022 10:59
    +1

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

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


    1. gremsta
      10.02.2022 11:41
      +2

      Честное слово, не знаю откуда столько бурления.

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


  1. dbalabanov
    10.02.2022 11:10
    +2

    подтверждают и научные подтверждения

    по-моему это сбивчивая речь


  1. wkia
    10.02.2022 11:11
    +3

    И не стоит забывать, что единственным реальным и объективным мерилом «хорошести» разработчика является демонстрация его прикладных способностей в решении задач программирования и разработки.

    Ну и зачем тогда был весь этот лонгрид?


  1. HellWalk
    10.02.2022 11:31
    +1

    О, у меня 100% попадание:

    Сбивчивая речь и непоследовательность в изложении мыслей

    Да, сбивчивая речь, и говорю вообще не очень. Да и где этому навыку тренироваться - если живешь один и 99.9% времени проводишь с компом, за тем же программированием.

    Злоупотребление жаргонизмами и buzzwords

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

    Перфекционизм и идеализм

    Очень. Особенно что касается авто-тестов, и CI/CD

    Переусложнение или оверинженеринг

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

    Самоуверенность и «велосипедизм»

    Когда смотрю сколько багов люди делают в своих проектах - конечно самоуверенность растет. И велосипеды делаю - как-то свой небольшой MVC-фреймворк написал. И в планах еще много велосипедов - только свободное время давай.

    Туннельное зрение

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

    Выводы

    Не бывать мне хорошим программистом. Пойду поплачу...


  1. DrAndyHunter
    10.02.2022 11:37
    +1

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

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

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


    1. Goupil
      10.02.2022 11:49
      +3

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

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


      1. DrAndyHunter
        10.02.2022 13:15

        Звучит как

        "Как мотивировать себя что-то делать?

        — Да никак, оставайтесь в жопе!"


        1. Goupil
          10.02.2022 22:08
          +2

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


  1. igrishaev
    10.02.2022 11:45

    Испанский стыд...


    1. dolovar
      10.02.2022 12:40

      Вы про оценки статье, которые на данный момент +53?


      1. igrishaev
        10.02.2022 12:48

        Я про статью. Очень не похоже на Хекслет, какую-то дичь написали.


        1. dolovar
          10.02.2022 13:58
          +2

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


          1. Jammarra
            10.02.2022 17:29
            +2

            Эх рискую кармой за такие высказывания всегда. Но тут разгадка лежит в разрезе ботов и чатов из разряда "У нашей компании вышла новая статья поставьте плюсов" А не в отношении сообщества.


            1. dolovar
              11.02.2022 12:23

              +73 вчера вечером, +83 сейчас — это какие-то особо умные «боты», которые льют оценки не пачкой, а равномерно на протяжении нескольких дней. То есть вряд ли это боты, просто статья реально кому-то нравится.

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

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


          1. utyftrut
            11.02.2022 17:42

            Людям обычно не нравится считаться плохими. Хотя быть плохими они часто не стесняются. Вот и весь секрет.


  1. maslyaev
    10.02.2022 11:47
    -1

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

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


    1. merlin-vrn
      10.02.2022 14:21
      +2

      Давайте говорить "запросил обзор на фикс в гитхабе", и давайте не ёрничать.


      1. dolovar
        10.02.2022 15:04
        +4

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

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


  1. djarik
    10.02.2022 11:50
    +7

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


    1. bullitufa
      10.02.2022 13:21
      -1

      Знаю одного программиста, в письме в каждом слове ошибка. Но программист отличный!


  1. maldalik
    10.02.2022 11:55
    +4

    Я правильно понимаю, собеседование, у человека имеющего трудности с общением волнение, он путается сбивается, значит он плохой программист?


  1. RemiZOffAlex
    10.02.2022 12:27
    +8

    Статья звучит как попытка снизить оплату труда за "сбичивую речь" или паузу при обдумывании "уточняющего вопроса"


  1. dimsog
    10.02.2022 12:38
    +4

    Статья - из крайности в крайность.


  1. shaman4d
    10.02.2022 13:27
    +1

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


  1. smoluks4096
    10.02.2022 13:32

    А я ведь помню ещё времена, когда программисту нужно было уметь только кодить, эх


  1. iddi
    10.02.2022 13:40

    автор одноименного алгоритма обхода графа, а в наши дни это подтверждают и научные подтверждения.

    да, хорошо когда программист умеет аккуратно излагать свои мысли, и код он тогда тоже аккуратно пишет


  1. MaryRabinovich
    10.02.2022 14:04
    +1

    Ой, Хекслет:)
    А я только что к вам попробовалась на хедхантере. И ваш, видимо, HR Полина Кокина мне уже отказала:) Давайте обсудим? Я бы была бы рада какому-то отклику чуть подробнее, чем

    "к сожалению, пока мы не можем предложить вам продолжить коммуникацию на эту позицию."

    Это цитата мышкой, это ответ такой мне пришёл, да. Не можем предложить продолжить коммуникацию на позицию.

    Короче, вот что там было в моём мотивационном письме:

    Добрый день,

    буду рада собеседованию,
    поскольку вакансия довольно противоречивая (вроде бы, речь о PHP, вышла я к вам вообще по запросу про Laravel, но ничего подобного в самом тексте нету, а есть, напротив, про http & dns. Ну, я не очень-то сисадмин, так что в деталях о протоколах tcp udp и компания не расскажу - хотя понимаю в целом, как там пакеты ходят туда-сюда, реальные мои навыки заканчиваются на уровнях типа ajax, axios и компания)

    Почему я могла бы вам подойти, как мне кажется:
    я преподаватель с хорошим стажем (хотя в основном я преподаю математику, а не программирование),
    сравнительно много пишу на laravel (на чистом php бывает тоже, но... просто для тренировки, на литкоде - вот, например, задачка оттуда: ...тут ссылочка в мой гитхаб, сейчас убираю, ибо камент не про это - М.Р.).

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

    Добавлю, что буду рада и ГПХ, и договору с ИП. Другое дело, что как ИП я бы не хотела заморачиваться актами и договорами сама - если ваша бухгалтерия может это вот всё оформлять, отлично. Если же нет... для меня это будет минусом, хотя и преодолимым


    1. polina_kkn
      10.02.2022 16:14

      Мария, добрый день еще раз :)

      Действительно, отказала вам на hh. В вакансии указано, что мы ожидаем от кандидатов, что у них есть опыт коммерческой разработки. Наставник на Хекслете - это действующий программист.

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

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


      1. MaryRabinovich
        10.02.2022 18:34

        Добрый день, Полина,

        вот начало моего сопроводительного письма:

        "Почему я могла бы вам подойти, как мне кажется:я преподаватель с хорошим стажем (хотя в основном я преподаю математику, а не программирование),сравнительно много пишу на laravel (на чистом php бывает тоже, но... просто для тренировки, на литкоде - вот, например, задачка оттуда: https://github.com/MaryRabinovich/leetcode_numSubmatrixSumTarget ). "

        Перефразирую:

        • в коммерческих проектах я сейчас пишу на ларавель, это такой фреймворк php, достаточно сложный

        • для себя, чтобы не деградировать, иногда тренируюсь на php как таковом, в частности, беру задачки с литкода. Дальше ссылка в мой гитхаб. Где выложено аккуратненькое решение, с миленьким алгоритмом (не буду врать, что сама придумала алгоритм, нет - нарыла в сети, он меня совершенно потряс, поэтому, собственно, на гитхаб и выложила результат). Добавлю, что в этом репозитории есть папка тестов на phpunit.

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


        1. Alexandroppolus
          10.02.2022 20:42

          вот, например, задачка оттуда: https://github.com/MaryRabinovich/leetcode_numSubmatrixSumTarget

          Код не смотрел, но у Вас получилось решение быстрее очевидного O(N^2 * M^2) для матрицы MxN?


          1. MaryRabinovich
            10.02.2022 21:28

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

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

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

            У индуса для одномерного идея в следующем:

            1) строим хеш-таблицу сумм подмассивов от 0 до k, k от 0 до n.

            Ключами становятся эти частичные суммы, значениями - массивы соответствующих k.

            Пример: исходный массив [10,1,0,2], хештаблица: 10=>[0], 11=>[1,2], 13=>[3].

            Поясню пример: с суммой 10 от левого края только один подмассив, от 0-го до 0-го элемента (ну то есть он сам, нулевой элемент). С суммой 11 два подмассива: от нулевого до первого элемента, и от нулевого до второго. Остался один подмассив, от нулевого до третьего, и там сумма 13.

            2) если нам надо сумму s, допустим - сумму 1 в моём примере,

            а) проверяем, есть ли у нас ключ s; если да, учитываем длину массива в хештаблице на ключе s - в моём примере вообще нет ключа 1,

            б) дальше перебираем ключи, проверяем для каждого ключа x есть ли у нас ключ x+s, если есть, идём внутрь соответствующих массивов и выбираем пары "k(x), k(x+s)" такие, что второе к больше (правее) первого.

            В моём примере:

            берём ключ 10, обнаруживаем наличие ключа 10+1=11, смотрим, сколько у нас пар "элемент массива с ключом 10, элемент массива с ключом 11, причём второй больше первого". Таких у нас две пары: (0,1) и (0,2),

            берём ключ 11, видим, что ключа 11+1=12 у нас нету,

            берём ключ 13, видим, что ключа 13+1=14 у нас нету.

            Всё, оказалось, у нас два подмассива с нужной суммой 1.

            Двумерный случай я как-то свела к линейным итеративным, в деталях уже не помню. Типа сначала ищем одномерные подматрицы - гуляем внутри одномерных строк. Потом переписываем нашу матрицу: вместо первой строки сумма первой и второй, вместо второй строки сумма второй и третьей, и т.д. Повторяем поиск по одномерным. Снова переписываем матрицу (вот кстати да, для этого надо было хранить исходную матрицу тоже, чтобы после "вместо первой строки сумма первой и второй" иметь возможность сделать "вместо первой строки сумма первой, второй и третьей").


            1. Alexandroppolus
              11.02.2022 00:31

              Одномерный вариант дано решал со словарем (сумма => количество), он простой, линейный.

              А тут действительно сводится к нему - для строк i = 1...M, j = i...M, можно поддерживать массив высот: heights[k] = sum(arr[i][k] ... arr[j][k]), а уже для этого массива height запускать одномерный варинат. Итого O(M^2 * N) по времени, O(N) вспомогательной памяти. Вроде прикольная задача.


              1. MaryRabinovich
                11.02.2022 10:11
                -1

                Со словарём "сумма => количество" не получится. Надо хранить массивы правых концов, а не просто количества. Иначе вы не сможете различить итоговые подмассивы с суммой s и с суммой -s. То есть, такой вариант допустим, только если s = 0.

                И вроде бы на литкоде была задачка и про нулевые подсуммы, она вашим способом решается, да.


                1. mayorovp
                  12.02.2022 13:01

                  Э-э-э, а что вам мешает отличить подмассив с суммой 1 от подмассива с суммой -1?


  1. werevolff
    10.02.2022 14:21

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

    Велосипедизм.

    Ясно, понятно.

    Каждый подобный тезис может быть справедлив в ряде случаев — проблема в том, что человек возводит этот тезис в абсолют. Кроме того, сильная убежденность сопутствует некой эмоциональной привязанности к ней — это можно заметить по использованию субъективных эмоциональных оценок, таких как «хорошо/плохо» при обсуждении, даже сугубо теоретическом, решений и концепций программирования.

    Особенно вспоминается недавняя статья Хекслета о неприменимости SOLID в реальных условиях потому, что лошадь_в ванной_с_огурцами.jpeg


    1. stardust_kid
      10.02.2022 15:50
      +1

      Можно подробнее про лошадь?


      1. AnthonyMikh
        10.02.2022 18:05
        +5

        Осторожно, мат

        image


  1. kspshnik
    10.02.2022 16:40
    +3

    Привычка использовать избыточные или неявные синтаксические конструкции. Например, оборачивать весь код код функции в try/catch, явным образом приводить типы в слаботипизированных языках

    Я правильно понимаю, что признаком хорошего программиста является умение качественно выстрелить себе в ногу???


  1. Sorates
    10.02.2022 17:20
    +4

    Не смог читать дальше второго пункта

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

    Напоминает собесы в Амазон, где на каждом из 4-5 собесов половину времени занимает сторитэллинг


  1. MikesoWeb
    10.02.2022 17:22

    Каждый второй значит? Эти психологи не дают спокойно работать людям!


  1. ninzyaValerok
    10.02.2022 17:23
    +5

    Коротко про этот текст - поверхностно, преувеличенно и иногда откровенно не правдиво.

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

    Про buzzwords было особенно забавно, когда через параграф читаешь про оверинжинеринг и тд)) Ну и тут тоже ничего такого нет, ну использует человек жаргон и что? Может на прошлом месте это было нормой и человек просто привык, может такой период в жизни.

    Перфекционизм вообще не как не связан с примерами! Примеры это набор стериотипов или доведенных до категоричности тезисов. Где во фразе "Фреймворк или язык X лучше фреймворка или языка Y" перфекционализм я не понимаю.


  1. Anton1978
    10.02.2022 17:49
    +3

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


  1. Gregorianst
    10.02.2022 17:54
    +3

    Статья в стиле "Гадаем на код по вторичным половым признакам"


  1. Bellizar
    10.02.2022 17:54
    +2

    К форме черепа не присматриваитесья? Родословной?

    По моему евгеника сейчас не в моде


  1. CRMguru
    10.02.2022 18:02
    +5

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


  1. souls_arch
    10.02.2022 19:45
    +3

    Основная мысль статьи притянуть за уши логику и поставить знаки строгого равенства (вместо возможно) там где им не место.

    Как в бородатом анекдоте:

    "- Гоги, у тебе аквариум есть?

    - Нэт.

    - Значит, ты - пид..рас!"


  1. princessmilana
    10.02.2022 20:14

    Хорошие критерии для поиска разработчиков, если у вас вилка х2 от рынка.


  1. XaBoK
    11.02.2022 03:45
    +2

    Первые два пункта - явно самые резонансные. Стоит отметить, что жонглирование терминами (технотрёп) легко проверяется техническим вопросом по теме. А просто англицизмы и жаргон - норма в данной области.

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


  1. N0zzy
    11.02.2022 04:35
    +3

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

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

    Ложка дегтя в "бочке меда". Таки, да. Хорошие разработчики тоже говорят жаргонами, допускают баги, пишут грязный код и прочее, и прочее.


  1. rtemchenko
    11.02.2022 09:08

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

    А вот сложно решаемых проблем стоит добавить:

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

    2. Человек не идет на компромиссы и упрямствует до посинения. Иногда это полезно, но намного чаще это контр-продуктивно. Обычно такого разработчика можно убедить только авторитетом. Т.е. просто приказать делать не так как он хочет. Но работать в таком режиме долго не получится.


    1. gremsta
      11.02.2022 11:24
      +2

      Наиболе заметно по резюме и форматирвоанию кода

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


      1. Pyakacot
        11.02.2022 18:10

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


  1. lxsmkv
    11.02.2022 12:19

    Ну вы и загнули. Это прямо рассовая теория какая-то. Не одобряю такого. Максимализмом страдают все в юном возрасте, и он выражается во всем и в работе тоже. С жизненным опытом это проходит. И не нужно переусложнять. А те кто делят всех на сильных и слабых страдают элитаризмом.

    Короче, нужно не делением и выявлением заниматься, а поддержкой и развитием. 2022 на дворе, как-никак.

    П.С.: Кстати, заметил, чем больше ненумерованых списков тексте, тем вероятнее это коммерчески направленая статья. Сразу контент-маркетингом за версту несет.


  1. nmrulin
    11.02.2022 13:17
    +1

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

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


  1. E32_735i
    11.02.2022 16:48

    Всё гораздо проще, говоришь программисту "stackoverflow", если зрачки сузились, а писька встала, то перед вами плохой программист.

    Не благодарите.


    1. F0iL
      11.02.2022 17:00
      +2

      Можно добавить в этот список маркеров еще cppreference для плюсовиков, MSDN для win-плюсовиков и шарпистов, MDN для фронтендеров, и т.д.
      Потому что настоящий труЪ-программист обязан писать код вообще не подглядывая куда-либо за подсказками (sarcasm).


  1. Tetsuzin72
    11.02.2022 18:17
    +1

    Преждевременная оптимизация говорите?

    Тимлид: не надо заниматься преждевременной оптимизацией!

    Тимлид: не надо переусложнять!

    Он же, через полгода: все оказалось намного сложнее, нам нужны новые фичи!

    Тимлид: как это? Все нужно переделывать?

    Тимлид: Мы не можем себе это позволить, релиз на носу!

    Хе.


  1. yakun123
    11.02.2022 18:18
    +1

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

    Отсеивают разработчиков по словарному запасу, а потом начинают ныть:

    • Не можем найти разработчика

    • Че разработчики так много денег хотят


  1. Macmep_007
    11.02.2022 18:21
    +1

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

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

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

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

    Идеализм - да вообще нет такого. Ни один нормальный человек не будет добавлять в коллекцию уникальных значений новый элемент через List с проверкой, когда есть Set. Максимум, что может быть в такой ситуации - это джун, выдающий себя за миддла. Знаний - ноль, зато уверенности - хоть отбавляй. Ну это уже про самоуверенность. Велосипедизм - туда же. Просто узнайте у собеседника про его опыт. Год-два - за такой период нельзя вырасти в полноценного миддла. Спросите, читали ли Кента Бека, Роберта Мартина, Мартина Фаулера, Гради Буча... спросите про шаблоны, джун ответит только про синглтон, что по сути даже является антипаттерном.

    Переусложение - это редкость. Думаю, ни один здравомыслящий человек не будет сидеть 2-3 дня и украшать свой код до неприличия, пока начальник не поинтересуется, а чего ты копаешься так долго. Есть сроки, дедлайны, спринты. Тебе отводится кусок времени на задачу, и ты её делаешь. Ты не можешь молча сидеть дальше и доделывать/переделывать. Тебе надо как минимум сказать тимлиду, что вот такая-то вещь написана слабо, или плохо интегрируется. Надо сделать рефакторинг, чтобы было удобнее или снизить риск ошибок. Согласовав, что надо сделать и сколько это примерно займет, тебе дают добро и дополнительное время. Никто не будет говорить "нет, нам надо только вот так, и никак иначе". Все понимают, что ошибки надо исключать. Несогласование мелких случаев, не требующих длительных по времени затрат, скорее придаст программисту статус большей самостоятельности. В это же время согласование с бизнесом более долгих работ закрепит за вами ярлык ответственного сотрудника, выявляющего скрытые нюансы, на которые бизнес не обратил внимания. Другое дело, если ты работаешь по старой школе, когда тебе назначают куча задач, ты выбираешь любую, делаешь сколько хочешь (или можешь), и все ждут только тебя. Разработчик - наш кормилец и царь-батюшка. Как заслужить такой авторитет - загадка!

    "Туннельное зрение" - о чем это вообще? Цитата (под привычкой подразумевается идеализм): "эта привычка основана именно на предшествующем опыте и мешает разработчику получать новый, более конструктивный опыт". Чтооааа? полученный опыт мешает приобрести старый? Да, человеку свойственно сохранять удачный опыт и отбрасывать неудачный. Так он растет. Идеализировать один какой-то конкретный опыт в чем-то - никто так не делает. Выбор IDE зависит от языка. Java - IDEA, C++/C# Visual Studio, Delphi - Embarcadero RAD IDE, PHP - Eclipse, NetBeans и прочие бесплатные. И да, за софт платит компания, для физ. лица дорогое удовольствие - платить за полюбившийся софт.

    Выводы: Ну надо искать другие признаки. Эти никуда не годятся. Наверное самый главный из них - мотивация. Мотивированных людей сразу видно. Если у него нет опыта, но он мотивирован, глаза горят, хватайте его и растите в своей компании. Этот человек добьется немалых успехов и принесет солидный доход. А если он проводит рабочее время в youtube, ВК, ОК, ФБ, инсте, чатится в телеграмм, а под конец рабочего дня пытается за час-два уложиться в готовое решение... Гнать в шею паршивца!

    Сам я успел с разными людьми поработать, есть любитель топорного способа (например у нас в Dynamics AX есть енум NoYes = (No, Yes), который он всегда сравнивал с 0 и 1. Иногда даже просто в if-выражениях явно сравнивал булевый результат с 0 или 1. Это прям бесило!). Есть и мотивированный парень инвалид, он уходил в отпуск, чтобы из дома порефакторить код в спокойной обстановке. Помимо программирования, он ничего другого не делает. Он - гик и интроверт. Но это никак не минус. Сейчас ему примерно 45, и он - реально ходячая энциклопедия. Но вот с общением у него не все так гладко, мысли путаются (это же явный звоночек, не так ли?). Когда спрашиваешь его о чем-то конкретном, он пытается объяснить абсолютно все нюансы, хоть как-то касающиеся вопроса. Он может час тебе объяснять ответ на вопрос, на который надо было ответить либо да, либо нет. Однако он идеально и практически без ошибок работает и укладывается даже в нереальные сроки.


  1. newyorkin
    11.02.2022 18:23

    > Если человек многословен, то и код его будет избыточен.

    10000% так


  1. vitaliyalserov
    11.02.2022 18:23

    Легко понять - постоянно ноет что все плохо, кговавый режым и пора валить


  1. lilouse
    11.02.2022 18:24

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


  1. Nerli
    11.02.2022 18:28

    Внимание! Здесь я буду откровенно придираться к тексту.

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

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

    При разработке сервиса бронирования (ресторана, отеля, медицинских услуг) такой разработчик может потратить лишние часы или дни на особую обработку случаев, когда база данных пустая, когда объект бронирования меняет свой ID, когда два запроса от разных пользователей конкурируют за общий слот, и так далее. Важно, что это может быть неплохая идея сама по себе, но отличие в том, что «сильный» разработчик поинтересуется у менеджера или заказчика, насколько это важно делать прямо сейчас, и реальна ли вообще проблема, прежде чем ее решать. Тогда как «слабый» программист, склонный к переусложнению, потратит на это время при любом раскладе, ни с кем не посоветовавшись.

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


  1. iyurip
    11.02.2022 18:28

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


  1. realchel
    11.02.2022 22:40
    +1

    ничего не изучает нового,главное.


  1. hockfan
    12.02.2022 12:28

    "Зачем в автомобиле ставить подушки безопасности и тратить время на их разработку. Делать удобные кресла. Зачем-то оставлять место для багажника"... Надо быстро сделать.
    "Зачем тратить время на проклейку пароизоляции при строительстве каркасного дома?" Главное быстрее достроить стоит вроде дом да и ладно.
    и так можно продолжать бесконечно. Не нужно ничего переусложнять. Как персонаж из известного мультфильма "и так сойдёт"...
    Живём мы в эпоху такую "Эпока коекакеров". При чём когда на нашем пути приходится заказывать работу у таких людей результат никому обычно не нравится.

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

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