Разработка и цифровое слабоумие, 2.2/3

Писать о влиянии качества памяти на разработку просто и сложно одновременно. Просто потому, что влияние памяти на всё в человеке очевидно, никому ничего лишний раз доказывать не надо. Сложно потому, что классификаций, видов, типов, механизмов памяти столько, что глаза разбегаются. И снова фиг поймёшь, куда какую у программиста, т.к. никто нас не исследует. Я опять заползаю на минное поле, потому напоминаю: это конспект, много условностей, везде упрощения, с точки зрения нейронаук могу ляпнуть полную чепуху, потому лучше разбирайтесь сами, а это эссе воспринимайте лишь как импульс. Ну и как копилку ссылок на всякое.
Сначала кратенько о том, что из области памяти интересует.
Во-первых, семантическая память. Годный долговременный склад наших знаний о мире, нейтрально окрашенная система с прикольной (близкой программисту) организацией в виде графа (как предполагается), узлами которого факты, концепции, абстракции, всё такое. Здесь вы помните о том, что такое «цвет», что такое «синий» (не конкретный синий цветок), что «синий» — это «цвет». Сюда же вы записываете семантические структуры программирования, отсюда их и берёте в процессе работы.
Во-вторых, рабочая память. Тип кратковременной памяти, которую мы используем вот прямо сейчас, информация в ней хранится 20..30 секунд, если не повторяется на входе, ограниченный объём, зато огромная скорость. Можно сказать, это наш кэш процессора. О ней же есть хорошая статья на русском языке, показывающая, как всё сложно, блин.
В-третьих, закон Миллера. Вам он известен как «человек может держать в памяти семь слов одновременно», например. Очень дизайнеры интерфейсов любят. Статье уже 60+ лет и с тех пор представление о ёмкости и характере рабочей памяти изменились, а дебаты о том, сколько, чего и как долго мы в этом буфере храним, не прекращаются. Факт в том, что он ограничен и живёт очень недолго.
В-четвёртых, можно ли прокачать память? Ответ: а хрен его знает. Если вы покликали по линкам выше, уже знаете, что встречный вопрос прям сразу: какую именно память? Не все прокачиваются. Начинаете копать. Есть тысячи статей о прокачке, есть тысячи статей о том, как та или иная прокачка не работает. Также вы можете весь прогресс убить нехваткой сна, например, но тут тоже всё индивидуально и зависит от того, умеете ли вы запоминать вообще, быстро ли утомляетесь и т.д. В одном все сходятся: память будет фиговой, если её не использовать.
В-пятых, лондонские таксисты (не Uber, но трушные), в которых влюблены все, кто изучает память. Дело в том, что чувакам надо сдавать экзамен на знание Лондона: 320 маршрутов, 25000 улиц. По памяти. К экзамену готовятся несколько лет, за эти годы мозг меняется так, что исследователи выстраиваются в очередь с подрагивающими от вожделения электродами в лапках. Как по мне, это отличный яркий пример: хочешь мозг? начни им пользоваться.
В-шестых, концентрация внимания: «удержание информации о каком-либо объекте в кратковременной памяти». Предполагается, что мы лучше запоминаем то, на чём заостряем внимание. Кагбэ говорим мозгу «алёу, чувак, вот эта штука важна». Эффект крепче, если мы это ещё и повторим N раз, тогда до мозга лучше дойдёт, что вот эту штуку надо из оперативки на винты записать. Но тут тоже до фига открытых тем, потому не аксиома.
В-седьмых, нейропластичность. Относительно недавно доказали (раньше предполагали), что мозг не статичная структура, в какой-то момент решающая, мол, всё, я вырос и теперь таким до смерти носителя буду. Оказывается, он всё время меняется не только изменением «силы» связей между нейронами, но и разрушением / созданием связей, например. Фишка в том, что мозг интенсивнее реагирует на новый опыт, новые знания. Общим местом в этой теме являются кроссворды. Вроде бы вы ежедневно напрягаете мозг, вспоминаете слова, всё такое. Отличный метод для того, чтобы к старости поддерживать часть функций мозга (мне это видится продувкой труб от пыли и мха), но почти бесполезно для развития. Если упростить, на первом этапе мозг организует структуры для работы с кроссвордами, дальше пользуется ими, не создавая ничего нового.
Наконец, формализуем для эссе «плохую память». Для рабочей памяти это слишком малый объём и слишком короткий цикл жизни. Для семантической памяти это пониженная доля сохраняемого в неё, низкая скорость поиска, низкая скорость разгуливания по графу структур, качество сохраняемых данных (об этом ниже детальнее).
Как-то так. Думаю, этой базы достаточно, чтобы двигаться дальше. Если вам хочется больше и толковее про мозг, из множества книг посоветовал бы [Дик Свааб. Мы — это наш мозг. От матки до Альцгеймера. Издательство Ивана Лимбаха, 2018] (общая книга обо всём) и [Норман Дойдж. «Пластичность мозга: Потрясающие факты о том, как мысли способны менять структуру и функции нашего мозга». Эксмо, 2010] (примеры нейропластичности из медицины). Да, книг про мозг много, можете нагуглить списки. Они разного качества, разного возраста, написаны разными людьми. Ну а я советую именно эти.

Итак… Ну, давайте от очевидного. Человек, который не помнит, в рабочем процессе может превратить вас в невротика. У меня есть такой опыт, с тех пор поклялся себе сразу вставать и уходить на другую работу, если руководитель как золотая рыбка (кстати, фигня, давно доказано, что у рыбок норм память), а подчинённых рыбок как-то… в общем, не нагружать. Не потому, что я эгоистичная сволочь, просто память очень важна разработчику. Как джуниору, так и лиду.
Во-первых, с вами сломаны все устные договорённости. Вот совещание. Вот час обсуждаем, принимаем решение, озвучиваем задачи. На следующий день разворот на 180 градусов. Вы не помните. Ни детали обсуждения, ни часть решений, ни состав и порядок задач. Пофиг, что два-три свидетеля, конспект, резюме встречи. Нет, всё было не так. Раз за разом. Выбешивает невероятно. Можно было бы внутренне примириться с этим через стратегию «возможно, это болезнь, больных надо беречь, XXI век», но нет. Хирурга, у которого трясутся руки, переводят из хирургии. Руководитель с плохой памятью вообще не должен руководить, т.к. всё за ним записывать каждую минуту как-то не очень.
Во-вторых, с вами сломаны все устные договорённости. Только теперь вы не руководитель, но разработчик. Вот вам озвучена задача. Даже записана, пожалуй, и тикет поставлен. У вас возникли вопросы. Вы задаёте, получаете ответы, а то и лекцию, если обнаруживается, что вопросы из-за чего-то глубокого. Проходит час, другой… И вы половину уже не помните. На следующий день вы перечитываете тикет и у вас возникают те же вопросы. Те же. И так всё время. Всё плохо.
Несколько лет осмыслял такие ситуации, всё избавлялся от неловкости и комплекса терпения с жертвенностью пополам. Человек с недостаточной для хотя бы нормальной разработки памятью не является инвалидом. Он просто не на своём месте. А на этом месте он тормозит все процессы, портит чужие нервы, порождает особые костыли (чтобы компенсировать «память»). Этих людей футболят туда-сюда из команды в команду, рука не поднимается уволить, «ну он же не виноват» (цитата). А те десять страдальцев, что под ним, виноваты? Нет. До свидания.

Что может произойти, если у вас плохо с семантической памятью?
Во-первых, вы путаетесь в терминах. За каждым термином стоит семантическая структура в семантической памяти. От неё связи «туда» и «сюда». При хорошо работающей памяти вы получаете в голову запрос (слово «функция», например), а из головы быстро получаете выборку наиболее релевантных (с точки зрения мозга, а не здравого смысла) «функций». А у вас не быстро. При высоконагруженных диалогах заметно, как вы начинаете прогребать, пока все терпеливо ждут.
Во-вторых, вы снова путаетесь в терминах. Только теперь потому, что связи у вас между структурами либо отсутствуют (потому вы абы как додумываете прям в процессе), либо неверные (в голову вошло 100KB информации, а запомнилось рандомно 25KB, после чего в агонии осмысления состыковались как получилось, на что потом накатили через месяц 10KB отрывка из «Пионерской зорьки»). Диалог с вами превращается местами в угадайку (что же этот чувак на самом деле хотел сказать), местами в подсовывание словаря (смотри, это слово означает вот это, а мы говорим не про это).
В-третьих, у вас медленный процесс обучения. Тут ваще всё просто. Берём язык X, учим. Заполняется семантическая память. Берём язык Y. Учим. А уже идёт гораздо быстрее, т.к. много пересекающихся структур, но вы-то уже их знаете, вам не надо тратить время на осмысление и запоминание. С языком Z ещё круче дело идёт. И так буквально со всем. Фактически чем больше материала по специальности вы перерабатываете, тем быстрее вы можете его перерабатывать. Только не в вашем случае. У вас нет (или не задерживаются) нужных структур в голове, каждый новый блок информации для вас «новый» чаще, чем для Пети, у которого всё норм.
В-четвёртых, от вас реже поступают хорошие и цельные решения высокоуровневых задач. Скажем, архитектура системы. Фигня в том, что архитектура должна учитывать очень много факторов, при анализе которых интенсивно скребутся сусеки памяти. Вспоминаются и классические архитектуры, и личный опыт, и стандарты де факто, и стандарты де юре, и локальные факторы (от особенностей конторы до особенностей платформы раскатки), и опыт других фирм со схожими архитектурами (который вам надо было усвоить за предыдущие годы мониторинга прессы и болтовни в тусовочке), и ещё до фига всего. Соответственно, чтобы выдать решение в разумный срок, да ещё не пытаться скрестить козу с баяном и пятым колесом, в памяти должна быть стройная система знаний, связей, весов. И с обоснованием на каждый пункт. Вы так не можете. Ну или (тут говорю из опыта наблюдений) начнёте изобретать своё, даже что-то получится, но система будет представлять собою комплекс велосипедов и пара-тройка из них обязательно со временем выстрелит.
В-пятых, у вас нарушен механизм повышения веса у знания. Ну или как-то иначе это назовите. Скажем, однажды вы увидели, как плохо для выходных и команды закончилась выкатка релиза в пятницу вечером. Хм, подумали вы… Лет за пять видели такое ещё раз десять. И читали, что так нельзя. И коллеги рассказывали случаи из своего опыта. Через пять лет это «нельзя релиз в пятницу вечером» настолько подкреплено, что превращается в аксиому. Но не в вашем случае. Вы и через десять лет будете спрашивать «а что такого?».
Дальше расписывать не вижу смысла, т.к. буквально каждое действие программиста использует память.

А вот рабочая память ближе к окопу.
Вы читаете исходный код. В 2018 году вы не просто читаете исходный код, но в IDE тыкаете в методы / функции, проваливаясь всё глубже. В это время в рабочей памяти формируются хлебные крошки — вы помните, откуда попали сюда. Бац, уже не помните. У одних этот момент наступает раньше, у других позже. Некоторым подспорьем служит chunking (когда N элементов в рабочей памяти «закрепляются» одним метаэлементом, идентификатором группы, etc), но для того, чтобы он удобно работал, нужны знания. Есть подозрение, что без знания «1 — число» и «2 — число» дополнения «1» и «2» группой «числа» не произойдёт.
Вообще у программиста при работе с исходным кодом (да и в целом) как-то нефигово одновременно удерживаемых в рабочей памяти контекстов должно быть. Потому, когда вас отвлекают, в голове всё разваливается карточным домиком. Попробуйте отстранённо последить за собою в работе. Помнить уровни вложенности кода. Постоянно обновлять в памяти образ задачи и образ решения. Помнить про запущенные в фоне процессы (запустил сборку, вернулся в IDE, через N тиков внутреннего таймера глянул в консоль). Помнить это так, чтобы после отвлечения вернуться и моментально восстановить то состояние рабочей памяти, что было. А, ну и мельком посматривать на нотифайки от мониторингов, срочные чаты, срочные письма. Жонглирование контекстами — наша работа.
И… Кажется… Слушайте, я признаю, что домысел и вымысел, но я ни разу не вижу эффективную работу этой системы, если у человека нет в семантической памяти готового набора более высоких структур. Ладно на простых примерах у всех всё хорошо: мы вроде как с первых GOTO в жизни не держим в памяти исходник цикла целиком, хватает структуры «цикл», но на более сложных штуках всё сыпется.

Занимательны и модели того, как плохая память может сформировать позицию по отношению к чему-нибудь.
Тыщи лет назад, вы находитесь в племени. Охотники ходят на охоту, добывают пищу, распределяют между ценными членами племени. Вам достаются кости, т.к. места охоты запомнить не можете, места и циклы развития полезных корешков тоже, а уныние и подавленность от голодухи тоже не способствуют популярности. Как выжить? Предположим, развивать память и становиться ценным не вариант. Бинго: вам нужно убедить охотников, что они должны давать вам еду. Поначалу охотники отмахиваются, а то и по попе дубинками дают. Но если долго и с помощью таких же чуваков (ещё и жалостливые мамки племени помогут) кататься по мозгам с общечеловеческими ценностями, с уверениями о том, что слабость не означает бесполезность (с этим сложно не согласиться, но под ковёр изящно ныкаем факт, что вы одновременно слабы И бесполезны), что вы такой вот беспомощный цыплёнок, который однажды, быть может, ну вдруг, а станет мегакрокодилом и тогда ух!
Ничего не напоминает? Это не я научусь, это вы должны меня научить, а я и пальцем не пошевелю, пока меня на пять конференций не отведут. Это не я ничего понять не могу, это вы должны так и такие говорить слова, чтобы я понял. Это не я подучусь и настрою себе рабочее окружение, это вы должны мне всё настроить и почему ваще это не было сделано ещё вчера?
Вроде бы и модель для хихи, но… Я однажды вдруг (ну ок, после нескольких присутствий рядом с неприятными сценами) осознал, что как и в жизни, так и в разработке чем больше и толще «вы мне должны», тем более ослаблена у него какая-то функция (функции). Перебирал чуваков в памяти, таки сходится. Вася, Петя, Вова и Олег крутые и я ни разу от них не слышал подобного нытья, они сами создавали, делали, «брали» нужное. Игорь, Дима, Игнат и Ваня менее крутые и от них порою долетали подобные сигналы. А вот Фёдор и Степан были профессиональными рупорами «вы должны то! вы должны это! я добегу только до этой линии, а дальше не побегу, вы должны обеспечить мне солнечную погоду!» и в то же время самыми хреновыми разработчиками на моей памяти.
Является ли плохая память единственной или очень значимой причиной такого поведения? Да нет, конечно. Но вместе с остальными причинами она тоже может сформировать из вас убедительно выпрашивающую личность.

В разговорах о памяти есть болезненные моменты, на которые живо реагируют по разным причинам. Давайте я избавлю нас от части ненужных дискуссий, обозначив эти моменты.
Во-первых, следует понимать, что память хоть и является огронафигмаднейшим подспорьем интеллекту (слово для того, что вы им называете), понижение её характеристик не делает человека идиотом. Вася может медленно добывать факты и медленно делать выводы, но каждый его вывод будет стоить по миллиарду. Или, скажем, количество семантических структур у Васи меньше, чем у Пети, но Вася какой-нибудь раздолбайский Ландау, а Петя бесполезный игрок в ЧГК.
Во-вторых, иногда проблемы с памятью не являются следствием… ща осторожно сформулирую… недосмотра, во. Очевидно, травмы, болезни, плохое кровоснабжение мозга, объективная хроническая усталость (это когда вы месяц всем фронтом с боями грязь месите в непрерывном наступлении, а не когда ну очень устаёте пять чашек чая на работе с бухгалтерией высёрбывать), факторы внешней среды (десятки работающих клепальных станков — фактор) — всё это не способствует.
В-третьих, часть людей под обработкой с детства. Ребёнок мог быть гиперактивным, любить физические игры и не особо в книги. Или вот дома фиговые родители со скандалами, бухлом и драками — тоже с чтением не очень. Плохие оценки в школе. Год за годом человек слышал от равнодушных учителей, например, что у него плохая память, а от родителей уверения, что он дурак. И всё. Не виноват он в этом, конечно, но попутно заработал привычку принимать в штыки попытки как-то исправить ситуацию. У меня плохая память. Идите в жопу. Точка.
В-четвёртых, да, мы в быту почти ничего не знаем о памяти: такая типа корзинки, туда складываешь, оттуда берёшь, нейроны! во… ещё мы чёт там на 10% используем (фигня), а ещё… блин, забыл. Соответственно, когда говоришь человеку, что у него плохая память и стоит над ней поработать, для человека это звучит как раздражающее «у тебя какая-то неведомая хрень сломалась, ты понятия не имеешь, что это и где это, но давай как-то чини, кароч, а не то ты унтерчувак». Человек немножко расстраивается, немножко злится, начинает ругаться. Ну… Не ругайтесь. То, что наука не до победного конца разобрала мозг на молекулы, не означает, что наука ничего не понимает и не знает. Много популярных книг, много статей, куча видосиков. Только руку протянуть, было бы желание.
И привычно уже напоминаю, что я не психолог, не социолог, не учёный, не много чего. Примеры в тексте используются иллюстрацией, которая может дать вам импульс для самостоятельной задумчивости. Моё представление о том, как работает память, является моей упрощённой моделью, удобной для моих размышлений. Нейронауки не в ответе за те ошибки, что здесь есть (а они есть).
Продолжение следует.

Разработка и цифровое слабоумие, 2.2/3: 2 комментария

Добавить комментарий