From: kmeaw
Date: 2022-02-13 23:35:20Z
Соглашусь, что умения понятно излагать свои мысли и решать задачи
написанием понятного кода коррелируют. Но при чтении кода коллег мы
обычно сталкиваемся с кодом, который был написан в несколько (хотя бы
10-15 минутном) прошлом. Тогда как при живом общении мысли собеседника,
которые он кодирует естественным языком, появляются гораздо
интерактивнее и имеют куда более молодой возраст (в единицы или десятки
секунд).
Я последнее время стал заниматься странной вещью - вечерами
транслировать в прямом эфире неопределённому кругу лиц процесс написания
программы, по возможности комментируя его голосом. Качество как кода,
так и моих комменатирев по ходу процесса сильно проигрывает тому, что я
делаю, например, на работе, и этому я вижу следующие причины:
1. Если у меня появляется какая-то идея, требующая совсем немного кода
для проверки, и я сильно сомневаюсь в её применимости, то я быстро
напишу низкокачественный код для её проверки. По мере написания этого
кода я просто не успею подумать, как понятным для потенциального
собеседника образом рассказать, а в чём же именно заключается моя
текущая гипотеза, и каким именно способом я её проверяю - поэтому речь
будет и слова-паразиты содержать, и в целом окажется достаточно
скомканой.
2. Если гипотеза из п.1 провалилась, то я этот код удалю. На работе его
бы просто никто никогда не увидел, я даже коммитить его не стану. Если
посмотреть на историю в VCS, то может показаться, что типичному
разработчику очень везёт - все небольшие по форме идеи почему-то
срабатывают. А если посмотреть на каждый символ, который он вводил в
текстовый редактор, то окажется, что 80-90% кода выкидывается.
3. Если я осознаю, что кто-то наблюдает за процессом написания кода, то
я начну вести себя по-другому - больше переживать, что напишу
какую-нибудь глупость, скажу какую-нибудь глупость. На это тратятся мои
когнитивные ресурсы, из-за чего страдает качество кода, качество
комменатриев, да и вообще я просто быстрее устаю - и меньше всего успею
сделать.
Возвращаясь к предыдущей теме - на мой взгляд, то, что человек
использует скудный словарный запас, часто поправляет себя, проявления
нецелостных и противоречивых мыслей - всё это является индикатором не
то, что он будет писать плохой код, а то, что он будет писать плохой код
в прямом эфире с первого раза. Володарским ему не быть, но и плохим
разработчиком он может не являться.
From: Sergey Matveev
Date: 2022-02-14 10:40:45Z
В принципе согласен и солидарен со всем сказанным. По каждому пункту у
меня аналогичный опыт. Но тут речь скорее про то, что у "профи" просто
не возникнет совсем уж глупая идея, он никогда не перепутает
"аутентификацию" с "авторизацией" (ну... если это его область, конечно
же) в беглой речи.
Согласен что 90% кода выкидывается, тьма вообще никому не видна кроме
автора, коммитится окончательный результат его мыслей. Во время
"разговора" или подглядывания за тем что и как он делает: будет видно
направление куда он движется или что он пробовал. Для меня это из серии
сравнения человека без высшего образования и с высшим: точно так же
имеется корреляция. Бывают программисты/инженеры и без высшего
образования, но редкость, скорее исключение из правил, и не потому что
бумажка нужна, а потому что или они отсеиваются в институте и понимают
что не могут быть инженером, либо институт учит пользоваться головой,
иметь системный подход. И с опытом аналогично.
Я в 9-ом классе подрабатывал в ЦУПе и уже тогда видел огромнейшую
разницу между теми, кто заканчивал Бауманку, МАИ и Лестех (я на полном
серьёзе думал и обсуждал с родителями что лучше пойти в армию, чем туда
-- но в нём куча людей из Королёва училась и учится потому что он рядом
и не сложно поступить). Я пускай и далеко не всё понимал, но видно как
Лестеховцы еле-еле излагают свои мысли, а выходцы из МГТУ/МАИ чётко,
ясно, кратко и быстро. Просто корреляция :-)
>Володарским ему не быть, но и плохим разработчиком он может не являться.
Безусловно. Но корреляция имеется :-). Как и с корреляция с высшим
образованием (оно тоже ничего не гарантирует или его отсутствие не
ставит крест).