[about] [index] [prev] [2022-02-10 10:43:07+03:00] [cfecdc4be3592114888e23a726193500d32b099c]

Как понять, что перед вами плохой разработчик

https://habr.com/ru/company/hexlet/blog/650603/
Уже наверное с год я стал замечать как люди говорят. Видя всяких
блоггеров время от времени, видя интервью с молодняком и Брайанами
Керниганами (89c4d5373d535a0b04b499a583d6f69312f302ea), стал
отмечать насколько же отличается речь. И действительно заметна
корреляция между уровнем разработчика и тем, как он говорит. Это
замечаю и в жизни у коллег. Отличный список критериев в статье:

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

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

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

Переусложнение или оверинженеринг -- самое первое что бросается в глаза
у не очень опытных разрабов! Но тут всё очевидно.

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

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

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

[leave comment]
comment 0:
From: kmeaw
Date: 2022-02-13 23:35:20Z

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

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

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

2. Если гипотеза из п.1 провалилась, то я этот код удалю. На работе его
бы просто никто никогда не увидел, я даже коммитить его не стану. Если
посмотреть на историю в VCS, то может показаться, что типичному
разработчику очень везёт - все небольшие по форме идеи почему-то
срабатывают. А если посмотреть на каждый символ, который он вводил в
текстовый редактор, то окажется, что 80-90% кода выкидывается.

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

Возвращаясь к предыдущей теме - на мой взгляд, то, что человек
использует скудный словарный запас, часто поправляет себя, проявления
нецелостных и противоречивых мыслей - всё это является индикатором не
то, что он будет писать плохой код, а то, что он будет писать плохой код
в прямом эфире с первого раза. Володарским ему не быть, но и плохим
разработчиком он может не являться.
comment 1:
From: Sergey Matveev
Date: 2022-02-14 10:40:45Z

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

Согласен что 90% кода выкидывается, тьма вообще никому не видна кроме
автора, коммитится окончательный результат его мыслей. Во время
"разговора" или подглядывания за тем что и как он делает: будет видно
направление куда он движется или что он пробовал. Для меня это из серии
сравнения человека без высшего образования и с высшим: точно так же
имеется корреляция. Бывают программисты/инженеры и без высшего
образования, но редкость, скорее исключение из правил, и не потому что
бумажка нужна, а потому что или они отсеиваются в институте и понимают
что не могут быть инженером, либо институт учит пользоваться головой,
иметь системный подход. И с опытом аналогично.

Я в 9-ом классе подрабатывал в ЦУПе и уже тогда видел огромнейшую
разницу между теми, кто заканчивал Бауманку, МАИ и Лестех (я на полном
серьёзе думал и обсуждал с родителями что лучше пойти в армию, чем туда
-- но в нём куча людей из Королёва училась и учится потому что он рядом
и не сложно поступить). Я пускай и далеко не всё понимал, но видно как
Лестеховцы еле-еле излагают свои мысли, а выходцы из МГТУ/МАИ чётко,
ясно, кратко и быстро. Просто корреляция :-)

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

Безусловно. Но корреляция имеется :-). Как и с корреляция с высшим
образованием (оно тоже ничего не гарантирует или его отсутствие не
ставит крест).