Архив недели @grigoryvp
Понедельник
#НоваяАватарка #АвторНедели
Всем привет!
Меня зовут Григорий и я перенимаю эстафету. На этой неделе у нас будет нейрофизиология, проблема сложности, DevRel и зачем нужны конференции.
В двух словах обо мне: всякое бывало. В конце 90-х писал на заказ всякое разное, затем много лет делал Radmin на C++, после программируемое телевидение NPTV и телефонию Voximplant. Последнее время занимаюсь Python тусовкой, конференциями и DevRel.
План на неделю
IT это сложно.
2): Как работает наше сознание, для программиста.
3): Проблема сложности, когнитом и кошелек Миллера.
4): Код, который рассказывает истории.
5): Конференции и темы.
6): Как выступать: нечестные способы и трюки.
7): Зачем ходить на offline.
Раньше я много писал на C++, но потом пришлось изучить Python, затем как-то сам собой образовался макбук с Ruby, потом JavaScript, Objective-C - и понеслось
Много лет помогаю делать конференцию Moscow Python, вести одноименный подкаст и вообще участвую в развитии Python тусовки.
Но пригласили меня сюда не из-за этого, а из-за нейрофизиологии :) Это наука о том, как работают наши мозг. Мое самое любимое хобби уже много лет. Уже до фундаментальных учебников докатился. 1600 страниц!
Так что эта неделя у нас будет посвящена нейрофизиологии программирования и выступлениям на конференциях. Ну и что делает DevRel в айти компаниях.
Зачем мне понадобилось изучать нейрофизиологию, если я не хочу стать неврологом, психиатром или нейрохирургом? Об этом - в следующем треде.
Программировать - сложно. На то есть несколько печальных и переплетенных между собой причин, о которых я время от времени рассказываю на конференциях: youtu.be/SS9ddV622Jk
Как биологический вид мы социальны. Родившийся ребенок имеет топологию мозга, хорошо приспособленную, чтобы освоить речь, письмо, социальное устройство. Но чтобы эти навыки получить, ребенок должен им обучаться. В мозгу нет от рождения языка или умения водить автомобиль.
И топология мозга, и наше общество организовались для обучения от простого к сложному. Мы больше десяти лет обучаем детей сначала устному счету, потом математике, и только в университете сложным штукам.
Мы привыкли строить образование от простого к сложному. От фундамента устного счета к вершинам ядерной физики. Программы школ и университетов надстраивает более сложные штуки поверх уже существующих знаний.
А потом в этот уютный мирок врывается программирование, которое не имеет простых и понятных "корней". Это не математика, не журналистика, не инженерное дело.
Самая близкая аналогия программированию, которую я знаю - "фантомная инженерия вымышленных конструкций, в вымышленных мирах, работающих по вымышленным законам".
Нет простого способа научить человека математике, а потом программированию. Или писать тексты, а потом программированию. Или считать сопромат, а потом программированию.
В программировании мы используем идентификаторы, чтобы давать имена и рассказывать истории. Но знания журналиста о составлении читаемых текстов почти никак не помогут ему рассказать историю о взаимодействии объектов, контейнеров и путей выполнения.
В программировании мы используем плюс, минус, иногда даже умножение - но то, что мы называем "переменными", бесконечно далеко от переменных в математическом анализе.
Мы не можем взять математика, инженера или филолога, "немного доучить" и получить программиста. Большинство программистов, которые я знаю - самоучки.
Программирование - молодая индустрия. Это не было бы проблемой само по себе, в мире постоянно появляется что-то новое. Но отсутствие "корней" не позволяет системе образования надстроить программирование над существующей дисциплиной.
Система образования - штука неторопливая. Несколько сотен лет назад мир менялся медленно, и университеты могли себе позволить так же медленно развивать образовательные программы, добавляя ветки специализаций к уже существующей программе обучения.
Тридцать лет назад университеты честно попробовали взять математику, физику или инженерию, добавить пару семестров "синтаксис языка программирования бейсик" с "алгоритмами и структурами данных" и обучить "инженеров-программистов".
Не получилось. Программирование оказалось чуть большим, чем синтаксис учебного языка и десяток контейнеров. Выпускникам требовались годы самостоятельного обучения, что могли позволить себе не все.
А к концу 90-х оказалось, что проблем больше двух. Создаваемый программистами код - это текст. Который легко копировать, и эта легкость быстро наложила на индустрию "проклятье нулевой цены копирования". О ней - в следующем треде.
Программисту не нужно писать один и тот же код два раза. "Проклятье нулевой цены копирования" называют проклятьем, потому что оно вынуждает программиста всегда писать новый код.
Мы не можем, как строители, десятки лет строить похожие друг на друга дома, набираясь мастерства. Скопировать однажды написанный код ничего не стоит, поэтому мы всегда пишем код решения задач, которые мы никогда до этого не решали.
Трудно учиться на своих ошибках, когда каждая новая задача делается первый раз в жизни. Да, мы используем тот же язык программирования, у нас есть багаж фреймворков и библиотек. Но это инструменты, которыми мы каждый раз делаем новые штуки и не успеваем найти закономерности.
Интуитивное мышление не позволяет понять программирование. Можно примерно объяснить человеку без образования что такое электричество, вакцина или кредит. Можно даже попробовать убедить что земля не плоская, хотя это уже сложнее.
Но вот объяснить "на пальцах" что такое программирование, технический долг или рефакторинг уже не получится.
Топология нашего мозга позволяет человеку освоить речь, счет, несложные социальные ритуалы. Она неплохо приспособлена для сравнения диапазонов и простой логики вроде "после этого - значит вследствии этого".
Фантомную инженерию в вымышленном мире, которая возникла несколько десятилетий назад, которой пока не могут обучать университеты и над которой довлеет проклятье нулевой цены копирования гуманитарию "на пальцах" не объяснишь.
Отсюда проблемы с оценкой сроков, сложности и взаимные претензии программистов и бизнеса. Программирование - это сложно.
Ерунда. Не существует неплохого математика, которого нельзя было бы за пять минут обучить программированию. Техническое высшее (биология, химия, физика, и т. п.) — 102% гарантия того, что уж программировать этот человек будет намного не хуже коллег. Чай, не рокет саенс. twitter.com/itunderhood/st…
Курсы learn python, которые мы делаем, показывают, что математики (так же как и медики, и физики) тратят ровно столько же времени и имеют ровно те же сложности что и все остальные. Никак не помогает 😥 twitter.com/mudasobwa/stat…
Ожидание: Каждый раз писать новый уникальный код, решающий новые уникальные проблемы Реальность: Парсишь разный JSON каждый день twitter.com/itunderhood/st…
И, сюрприз, парсится он одной простой строчкой, а вот обрабатывается потом каждый раз для разной задачи) twitter.com/tygeddar/statu…
@itunderhood Эм, рили? Программирование не объяснить? Запись человеком последовательности команд для исполнения ЭВМ?
Тру стори. Очень трудно объяснить человеку, далекому от программирования, почему накопился технический долг и нельзя "просто взять и сделать эту интеграцию за неделю". twitter.com/I7PAKTuKAHT/st…
Я с почти профильным образованием - инфобезопасность(правда из средненького вуза, да и учился так себе) всё ещё хреновастенький такой джун. Короч, не в специальности дело, наверное. Ну и доучивать придётся всех в разном объёме. Математикам можно сразу Хаскель давать. twitter.com/itunderhood/st…
Вот я очень не уверен насчет Хаскеля. Которые в "мейнстрим" программировании никак не поможет. А опыт многолетних курсов learn python показывает, что у людей с разным бэкграундом один и те же проблемы. Это в принципе непросто и количественно сложно. Завтра расскажу подробнее) twitter.com/technosham/sta…
Я пришел обсуждать интересное, а не труизмы. Да, есть. Мы берем человека с медицинским образованием, немного доучиваем и получаем терапевта или хирурга. Оба прочно стоят на шестилетнем фундаменте медфака. Им норм. Для программирования я такого фундамента не знаю. twitter.com/aarexer/status…
@itunderhood А что говорит нейрофизиология нам про людей "за 30-35", желающих войти в айти? Там всё ещё печальнее? Или нет разницы
Нейрофизиология не знает ответов на многие вопросы 😥 Есть "окна возможностей". Двухлетке несравнимо проще изучать устный язык. Молодому студенту возможно проще изучать программирование. Я нанимал и 18-летних и 50-летних программистов. Если гипотеза, что чем старше - тем сложнее twitter.com/4rontender/sta…
Где-то год назад понял что программирование хорошо объясняется аналогией с конструированием например самолетов. Технические вещи типа переполнение стека так не объяснишь, а вот более общие (тот же рефакторинг) вполне twitter.com/itunderhood/st…
Только вот мы можем десятки раз делать почти один и тот же боинг, постепенно учась на ошибках и набираясь опыта. Материалы и законы физики ведут себя плюс-минус предсказуемо. За несколько сот лет мы научились норм учить математике, физике, сапромату. А так, да, очень похоже 😂 twitter.com/Urving_errful/…
@itunderhood Математика, теория информации и электроника тоже плюс-минус предсказуемо работают Просто конструкторы самолетов знают сопромат, а конструкторы ПО — не всегда
Математика, теория информации и электроника работает предсказуемо. Эволюция операционных систем, языков и библиотек - нет. 20 лет назад писали на Perl, 10 лет назад на Ruby, сейчас на Python - технологии быстро меняются, накопление опыта идет медленно. Про фронтенд вообще молчу. twitter.com/haotishno/stat…
Гриша зашел с козырей! (Если набрасывать на вентилятор - то по-крупному и сразу в понедельник) twitter.com/itunderhood/st…
Мне нравится эта гипотеза. Она неприятная, но имеет предсказательную силу и дает хоть какие-то ответы, вместо интуитивного "да все вокруг просто ленивые дураки и программировать не умеют" 😊 twitter.com/tsafin/status/…
Это хорошая аналогия. Опытному разработчику на C++ понадобится примерно столько же времени на освоение Java, как обучившемуся 6 лет по специальности "врачебное дело" студенту стать терапевтом или хирургом. У него уже есть хороший "фундамент". twitter.com/aarexer/status…
@itunderhood Вряд ли. Чтоб хорошему плюсисту подтянуть Java до уровня "продать себя как середнячок-миддл", времени надо пару месяцев от силы. Хирургу, который "подтягивал знания" два месяца я б себя не доверил...
Есть такое мнение. Я сейчас знаю порядка 20 языков программирования, и могу с печалью сказать, что переход между любыми двумя до уровня "крепкого мидла" это сотни часов. То есть год-два по часу-два в день. Но синтаксис, конечно, за вечер можно выучить 😇 twitter.com/LeontyevGeorgi…
@itunderhood А за фронтенд, конечно, не чокаясь надо
Хочешь, страшное покажу? matestack.io оно еще и SPA делает "нетиповым" способом, через turbolinks. twitter.com/haotishno/stat…
@itunderhood Так там времени-то, открыл гугл, поставил IDE - пошел писать. Цена ошибки у начинающего программиста минимальная же и есть старшие товарищи для ревью
В среду по плану как раз про "цену ошибки" 😊 Есть такая штука, как software complexity problem. Она не просто так problem. Она доставляет. twitter.com/I7PAKTuKAHT/st…
@itunderhood Если искать фундамент знанмй для программирования, то что насчёт дискретки, курса "алгоритмы и структуры данных" и тому подобным дисциплинам первой пары лет обучения в вузе на любой околокодерской специальности. Это же и есть база?
Есть гипотеза что нет, это не база. Более подробно я это хочу обсудить в среду. Мне нужна предварительная подготовка, рассказать про attention schema и когнитом. А то будет совсем непонятно 😂 twitter.com/technosham/sta…
Мы берем электрика, немного доучиваем и получаем проектировщика атомных электростанций. Оба прочно стоят на трехлетнем фундаменте ПТУ. Им норм. Для программирования я такого фундамента не знаю. twitter.com/itunderhood/st…
А вот нет. Атомные станции там ядерная физика и инженерия сооружений. Разные фундаменты, разветвление на специализацию класса от 9 школы. Но ход ваших мыслей мне нравится) twitter.com/i_am_romochka/…
Ошибка в том, что "интуитивное мышление" у всех разное, и кому-то сложно интуитивно понять готовку, кому-то актёрское мастерство, кому-то программирование. А кому-то - легко. Абстрактная логика, необходимая в программировании, это, считай, тот же талант. twitter.com/itunderhood/st…
А вот и нет) Как раз "интуитивное мышление" у нас более-менее одинаковое, об этом еще Канеман писал в своей древней книге "Thinking: fast and slow". Завтра расскажу подробнее! twitter.com/XeniaKorinets/…
@itunderhood Григорий, очевидно, что у разных людей разные способности к абстрактному логическому мышлению, так же как и способности к умению мастерить руками, к эмпатии, и так далее. С этим невозможно поспорить, разные дети и взрослые люди показывают разные способности к разному
Хорошо, что в большинстве областей программирования абстрактное логическое мышление не очень нужно. Сложности у нас другие, я о них в среду поговорю. Keep tuned. twitter.com/XeniaKorinets/…
Да и вообще, весь тред выглядит как оправдание, почему зафакапили релиз. Программисты сразу разводят руками и говорят, что: "ну всё очень сложно, в наших веб формочках АРХИТЕКТУРА, такому в институте не научат" twitter.com/itunderhood/st…
И все, действительно, очень сложно 😊 Завтра будет небольшой экскурс в то как работает сознание и какие у него ограничения, а вот в среду как раз про сложность: откуда берется и что с ней делать. twitter.com/bunopus/status…
@itunderhood Очевидно, что для того, чтобы программировать было достаточно легко, необходимо умение понимать общие логические законы, применимые к разным случаям. И тогда уже не страшно, что все время появляется что-то новое - базис у всех языков программирования, насколько мне известно, один
Перефразирую: для того, чтобы говорить на иностранном языке было достаточно легко, необходимо понимать общие лингвистические законы, применимые к разным случаям. И тогде уже не страшно, базис-то у всех языков один. Домашнее задание: выучить Японский 😂 twitter.com/XeniaKorinets/…
@itunderhood Иначе говоря, если ты хорошо представляешь себе скелет млекопитающего хищного животного, то тебя не смутит, что их тысячи. По сути эти животные не так уж различаются (и на понимание их различий нужны только память и Гугл). Поэтому - в чём такая уж трудность, не понимаю.
В среду. Все будет в среду. Наберитесь терпения. twitter.com/XeniaKorinets/…
@itunderhood Почему не объяснить? Есть какие-то научные аргументы, показывающие, что мозг «гуманитария» не способен воспринять эту информацию никак? Если кто-то объяснить не может, это не значит, что это невозможно. Выстроить правильные нейронные связи можно в любом здоровом мозге.
Об этом я расскажу завтра. Если в двух словах - "когнитом Анохина" и "attention schema theory Грациано" twitter.com/mkalygin/statu…
@itunderhood Чем отличается «фантомная инжерения» от всего остальноего? Почему именно она не поддаётся обычным законам усвоения навыков человеком? Есть гораздо более сложные вещи, которые талантливые люди сумели объяснить «на пальцах», а уж инженерию и подавно можно так объяснить.
"Корней" нет. Приходится почти с нуля учить, в отличии от большинства остальных штук. Долго, дорого, тяжело. Вот научимся к программированию с детского сада подводить, сделаем правильную теоретическую базу - станет сильно проще. twitter.com/mkalygin/statu…
@itunderhood Нет, не совсем. Язык - это система. Если ты это понимаешь, то выучишь хоть китайский, хоть японский. Если нет - будет сложно. Умение понимать и видеть систему и законы, действующие внутри неё - это то, что не у всех развито одинаково хорошо.
Выучишь, конечно. За несколько лет напряженной работы. И еще десяток, чтобы можно было свободно говорить с носителем. Долго. Количественая сложность. В массовом программировании я не вижу каких-то качественно сложных штук. Но начинающему разработчику приходится учить МНОГО штук. twitter.com/XeniaKorinets/…
@itunderhood Про модель Вернике — Гешвинда и отличие естественных языков от программных будет?
Только косвенно. Меня интересует когнитом как таковой, а не так его часть, что участвует в формировании грамматик брока-вернике. twitter.com/bunopus/status…
Хайп "войти в айти", дизайнерские офисы с плойками до зомби-апокалипсиса, изобилие "IT-HR" и отдельная профессия DevRel. Почему? Бизнесу нужна разработка, но программистов мало, обучать мы их не умеем, что спрашивать на собеседовании не знаем, с оценкой сроков беда.
DevRel, "Developer Relations" - то, чем я занимаюсь последние несколько лет. Почти как "Public Relations", только специализированно. Потому что разработчики нужны, их мало, как с ними работать непонятно.
@itunderhood ИМХО, то, что не можешь объяснить ребёнку, чем занимаешься - значит лишь, что сам в этом недостаточно хорошо разбираешься
Есть небольшая разница между "объяснить чем занимаешься" и "научить заниматься тем же". Отдельным пунктом идет "объяснить, почему оно работает не так, как хочет клиент а так, как сложилось" 😇 twitter.com/crrlcx/status/…
@itunderhood О, приветствую 🎩 Смотрел разные ваши доклады, хоть и мобильщик, а не питонист. Доклады хорошие 💪понравились, спасибо
Приятно это слышать. На следующий год сделал прототип нового доклада, где показываю сложность кода с точки зрения процессов, которые происходят в мозгу. И что с этим можно делать. Завтра и в среду немного поспойлерю. Где буду его выступать пока не решил) twitter.com/ashumidub/stat…
@itunderhood Как тебе тезис: DevRel - плохой программист, потому что большую часть времени тратит на болтовню, Твиттер и прочие конференции. И вообще, в DevRel скорее преуспеет харизматичный болтун, чем фанатичный программист
О связи качества программиста и количество времени, которое он посвящает программированию, мы поговорим в среду. После того, как я рассказу про сознание, обучение и динамику внимания. twitter.com/bunopus/status…
Работа DevRel программирование не включает. Вопрос, будет ли он программировать, чтобы поддерживать навыки, остается открытым.
Могу сказать за себя: у меня есть несколько пет-пректов (публичный - Xi, youtu.be/q4Ftg63diDs) и я читаю все, что публикуют на realpython. Достаточно ли это, чтобы не разучиться программировать и насколько мои навыки заржавели по сравнению с коллегами кто пишет код по 8 часов?
Я не знаю. Работа DevRel - это интерфейс к конференциям, большую часть времени я либо готовлю спикеров, либо сам готовлю доклады, либо исследую новую технологию, чтобы определить, что будем обсуждать.
Нужно ли мне для работы DevRel программировать? Писать код мне не нужно. Знать о том, что происходит в индустрии и уметь говорить об этом с коллегами - нужно. Можно ли это делать, если не писать код? Не знаю. Я каждый день что-нибудь пишу, мне интересно.
@itunderhood я пришел сюда обсуждать зарплаты и бить *бала. И я только что услышал вот из того угла про 300кк/сек.
Козулю проиндексировали шепотом. 400кк. @vkozulya twitter.com/valera_pro/sta…
Ого! Всем читать! twitter.com/itunderhood/st…
Кстати, Виталий, раз ты зашел на огонек. По твоему опыту преподавания, если взять человека с математическим образованием и второго человека без технического образования (историка). Оба никогда не программировали. Оба садятся учить Python/Whatever. Какое преимущество у математика? twitter.com/_bravit/status…
@itunderhood У математика самомнение выше. Вообще, мне кажется, что математика и программирование — это существенно разные вещи, и то, что исторически программисты произошли от математиков — это скорее случайность.
Мне тоже нравится эта гипотеза) Самомение я тут в комментах огребаю, но уже не первый год, так что привык. Завтра буду про зретельную кору рассказывать - могут вообще на вилы поднять как колдуна и еретика 😂 twitter.com/_bravit/status…
Так же как и PR, DevRel решает разные задачи в разных компаниях. Одна из популярных задач - модификация воронки найма. Если компания постоянно нанимает разработчиков, то у нее есть "воронка": начиная от большого количества кандидатов и заканчивая теми, кто принимает оффер.
Компания предлагает разработчику ценности: чем он будет заниматься, с кем, где, чего может достигнуть и получить. Суррогат ценности, деньги. Разработчик предлагает в ответ другие ценности: те задачи, которые он сможет решать.
В зависимости от того, что может предложить компания и кто ей нужен, воронка может выглядеть очень по-разному. И в ней могут быть разные проблемы: мало кандидатов, не те кандидаты, не принимают оффер, высокая текучка - десятки их.
DevRel может воронку найма менять, разговаривая с разработчиками на конференциях, митапах, на страницах Хабра или VC. Чаще всего это коммуникация ценностей: DevRel рассказывает, чем компания полезна и кого ищет.
Почему это не может сделать гуманитарий, владеющий только интуитивной логикой и русским языком? Все вот это "у нас молодой и дружный коллектив, просторный офис в центре, печеньки и рыночная зарплата"?
Потому что когда разработчиков мало, а желающих много, разработчики могут выбирать, с кем работать. Они начинают смотреть на ту пользу, которую им может принести бизнес. И часто эта польза связана непосредственно с работой.
DevRel рассказывает о том, что ценно для разработчиков: используемые технологии, подход к работе, плане на будущее.
Еще DevRel может обеспечить такую штуку, как социальное доказательство. Можно рассказывать о том, как хорошо знаешь английский. Но как это доказать? Поговорить по-английски.
Можно рассказывать о том, как компания заботится о разработчиках, выбирает технологии, делает работу комфортной, помогает разработчикам становиться лучше. Но как это доказать?
Приводить разработчиков компании выступать на айти конференции. Ближе ко второй половине недели я расскажу, как это делается технически: bit.ly/37zKULK
Готовить полезные для разработчиков статьи. Например, bit.ly/3mGUznY
акие штуки доказывают, что компания не только говорит о каких-то ценностях, но и обеспечивает их. Что, в свою очередь, привлекает разработчиков, для которых эти ценности важны.
@itunderhood Расскажи про последний(текущий) проект
Мой текущий проект - это DevRel в evrone.ru Обеспечиваю нам спикеров на Highload, TeamLead, Frontend и других конференциях. Ну и входящий поток питонистов. И интервью с интересными людьми из айти evrone.ru/cases#articles twitter.com/kinnalru/statu…
Найм - не единственное, с чем помогает DevRel. Мало, чтобы разработчик согласился работать с компанией. Нужно, чтобы он приносил пользу. Шутка про то, что разработчик полгода входит в курс дел, а потом уходит в следующую компанию, она не просто так.
DevRel помогает разработчикам выступать на конференциях (ближе к концу неделя я расскажу, почему им это интересно), организовывает митапы, делает дайджесты "что происходит", радары технологий.
Можно сказать, что DevRel делает так, чтобы разработчикам было "интересно" приносить компании пользу. "Интерес" и "развлечения" - разные штуки. Играть в киберпанк это "развлечение", собираться по четвергам и обсуждать как лучше использовать Django это "интересно".
Еще DevRel может транслировать техническую экспертизу, есть специализации Developer Advocate и Technology Evangelist - то я не хочу настолько углубляться в детали.
В первый день я рассказал, какие сложности вижу в индустрии разработки, что у нас есть даже специализированный PR и хайп "войти в IT". Завтра я перескажу интересные гипотезы о работе сознание, которые помогут мне в среду и четверг поговорить уже про код. Keep tuned!
Вторник
@moof_kit @itunderhood «Элитность программирования и невозможность понять» не превосходство? Вся эта псевдоэлитарная хуерга объясняется за пару вечеров на коробке спичек ребёнку 10 лет
Интуитивное мышление. "Да я любого ребенка научу по Японски читать за пару вечеров". Потом начинаешь учить, и понимаешь, что 2136 символов алфавита как-то не учатся за пару вечеров. И за пару недель. И за пару месяцев 😥 Ничего сложного, просто МНОГО. twitter.com/punknavsegda/s…
@punknavsegda @mermoon @moof_kit @itunderhood Ну, некоторым айтишникам присуще считать себя компетентными в любой области, которой они интересуются и по которой можно чето погуглить. Нейрофизиология 😅
Один из учебников по нейрофизиологии. 1600 страниц 😜 Нагуглить, ага. 5-е издание, кстати. А не 4-е, которое в вузах. С американского амазона приползло, пять килограм 😊 twitter.com/cyrricine/stat…
Понедельник - день тяжелый. Вчера вы смогли посмотреть на проблемы индустрии моими глазами. Многие читатели обнаружили, что их мнение отличается от моего. И не только от моего, но и от мнений других читателей!
Прежде, чем поговорить про код, я хочу уделить один день и рассказать о современных гипотезах работы сознания. Что такое делает наш мозг, что мы можем "думать", осознавать что "в интернете кто-то неправ", иметь свое мнение и высказывать его?
Гипотезы о работе сознания нужны мне, чтобы разбираться в том, что делает код "сложным" или "простым". Мне нравится решать задачи и делать это в разумное время, а не "тут 5 мегабайт лапши, мне нужно полгода".
Точно! Надо же закладочки показать 😳 twitter.com/tagir_valeev/s…
Определить "сознание" сложно. Уважающие себя книжки посвящают этому не один десяток страниц, не забывая давать исторический экскурс, определения мыслителей, философов, видных политических и религиозных деятелей.
Мне удобно работать с определением сознания через наблюдения: о чем именно люди говорят, когда произносят слова "я в сознании", "я осознаю".
То есть не определить "сознание это..." а определить "сознание, это когда...". Помните, как в Гарри Поттере? "То, что стоит в этом кругу - новый учитель защиты от темных искусств. Хз что это".
Когда люди говорят о сознании, мы имеем в виду совокупность разных вещей. Из основного можно выделить:
Модель окружающего нас мира. Зайдя в комнату и находясь в сознании мы осознаем, что у нас за спиной есть дверь, откуда мы пришли. Даже если в данный момент ее не видим.
Работу с причинно-следственными связями. Находясь в сознании мы можем связывать друг с другом происходящие события. Например, что оставленный на несколько часов чай остынет.
Речь. Находясь в сознание мы можем осознавать что нам говорят и сами что-нибудь говорить окружающим.
Список можно долго продолжать, отдельных его элементов может не быть (человек может быть немым) и этими элементами могут обладать не только люди (у животных есть модели мира и они могут в несложные причинно-следственные связи).
Для моих практических целей (Код! Почему так сложно?!) Достаточно найти не сильно противоречивую гипотезу, которая расскажет, почему мы этими признаками обладаем, а кошки, например, или наши программы - не обладают.
@itunderhood А есть мысли как можно улучшить процесс собеседования?
Я изучаю нейрофизиологию как раз с целью понять, что отличает хорошего программиста от плохого) Пока у меня нет ответа на этот вопрос, но я с оптимизмом смотрю в будущее и надеюсь, что через несколько лет вернусь с ответом. И расскажу про собеседования! twitter.com/ashumidub/stat…
@itunderhood А знаете, кто ещё усиленно искал физиологические основы различий между хорошими и плохими людьми?
Примерно все. Но у меня есть цель: я хочу предсказуемо делать хороших программистов) Все остальное меня не очень интересует. twitter.com/letopisi_rus/s…
@letopisi_rus @itunderhood Не стал читать толстую книгу по нейрофизиологи, посмотрел вместо этого лекции @ampanmdagaba youtube.com/playlist?list=…
На первый взгляд выглядит пользительно. Мне нравятся учебники тем, что там материал разбирается максимально глубоко, без скидок на популизм. twitter.com/d_razorenov/st…
@letopisi_rus @itunderhood @ampanmdagaba Знаете, что лекарства от шизофрении можно испытывать на рыбках? А я теперь знаю
Не только от шизофрении. У нас есть много "модельных животных", начиная от крыс и заканчивая мармазетками. Но там свои сложности. Не все, что работает на мышах потом так же работает на людях 😢 twitter.com/d_razorenov/st…
@itunderhood Вы теоретик в нейрофизиологии или все-таки немного практик?
Крыс скальпелем резал, если это интересует. Но медицинского образования у меня нет. По образованию я программист, и это было слишком давно, чтобы на что-то сейчас влиять. twitter.com/chikiro_twi/st…
@itunderhood А почему вы вообще уверены, что именно нейрофизиология даст ответ на вопрос - как сделать хороших программистов?
Других способов я не знаю) twitter.com/sunrizz/status…
@itunderhood А что насчёт просто психологии? Может, просто взять тех, кто считает, что программирование это не так уж сложно и попросить их пройти какие-то тесты, чтобы понять, чем их способ мышления отличается, развито ли у них абстрактное мышление, хорошая ли от природы память и т.д.?
Пробовал. У меня близкий друг психолог, сбежавший из айти в когнитивно-поведенческую и массово чинящий сейчас коллегам выгорание, прокрастинацию и все такое. Штука хорошая, но не отвечает на вопрос, как сделать так чтобы правильно именовали идентификаторы, делали декомпозицию итд twitter.com/XeniaKorinets/…
@itunderhood Наверное, если ОЧЕНЬ упрощать, то разрезав их мозг, мы найдём причины. Но их вполне можно найти с помощью подобных тестов. Просто сделать тест надо хорошо, с вопросами на рассуждение, логику, от общего к частному и наоборот, и так далее, а не как IQ
Без гипотезы как работает процессор очень трудно это понять, наблюдая только за экраном работающего ноутбучека 😢 twitter.com/XeniaKorinets/…
@itunderhood Знаете, ведь стереотипный "айтишник" в замызганном свитере не сам по себе появился в народном фольклоре. Часто бывает, что успешные программисты - это люди, которым не важен внешний вид, у которых достаточно бедные внешние проявления эмоций, не очень хорошие социальные навыки
У меня есть смешная гипотеза по этому поводу, но я пока не готов ее озвучивать) twitter.com/XeniaKorinets/…
Перебрав популярные гипотезы (Global Workspace Theory, Integrated information theory, The Radical Plasticity Thesis, Higher-order theory, Attention Schema Theory) я остановился на последней.
Attention Schema Theory за авторством Майкла Грациано (bit.ly/3mMsGLv) ищет закономерности в том, как мы говорим о сознании и как мы говорим о других, более изученных штуках.
Грациано, долгие годы сидя в нейрофизиологической лаборатории Принстонского университета, заметил, что мозг, похоже, строит внутренние модели происходящих процессов.
Например, у мозга есть упрощенная модель белого цвета как "максимальной яркости при минимальной насыщенности", что сильно отличается от поступающего в глаза сигнала. Но, по-видимому, удобно для внутреннего использования.
Грациано нашел много таких моделей: модель физики (как в мультиках, имеет мало общего с действительность), модель тела и так далее. После чего задался вопросом: моделью чего может быть то, что мы ощущаем как "самосознание"?
@itunderhood а есть какая-то взаимосвязь с нагрузкой на мозг и шизофренией/другими заболеваниями мозга ? Мы все знаем, что программирование это продолжительная нагрузка на голову. Пора ли нам уже выдавать молоко за вредность ?
Этот вопрос мне очень интересен, но, как и для многих других, я пока не нашел ответа. Некоторые клинические психиатры, у которых я консультируюсь по механикам мозга, утверждают, что "мозгу все равно, какие мысли думать". twitter.com/valenok_husky/…
Гипотеза Грациано состоит в том, что сознание - это модель нашего внимания. Звучит кратко, но мне понадобится полтора десятка твитов, чтобы расшифровать эту фразу.
Нейрофизиология не знает, что такое "внимание" и как оно реализовано. Есть много экспериментов, результаты которых рассказывают о тех или иных свойствах внимания, но хорошей гипотезы что это такое я не знаю.
Предполагается, что внимание - это некий физический процесс в мозге (привет, таламус!), который выбирает, на какие внутренние или внешние сигналы реагировать в данный момент. Как он это делает мы не знаем.
Но мы подозреваем, что у внимания есть то, что можно назвать "динамикой": оно не случайно, мозг разучивает последовательности внимания и применяет их.
Прямо сейчас, когда вы читаете этот твит, ваш мозг использует привычную динамику внимания: перемещает глаза по словам и фразам, активирует соответствующие им смыслы в когнитоме (что такое когнитом - завтра).
Грациано считает, что с рождения мозг обучается использовать разные динамики внимания, перемещая его на предметы, которые мы видим, на воспоминания, на область вернике, чтобы говорить и на моторную кору, чтобы совершать движения.
Чтобы выбирать, какие динамики внимания ему полезны, а какие не очень, мозг скорее всего использует reward system, систему подкрепления. Как она работает - темный лес, даже писать об этом не хочу.
Тем не менее, через несколько лет после рождения мозг обучается десяткам и сотням тысяч успешных динамик внимания: ребенок может ходить, произносить слова и делать другие сложные действия.
Грациано считает, что вместе с обучением пользоваться теми или иными динамиками внимания мозг создает упрощенную модель об этих динамиках, в чем-то похожую на автобиографическую память.
Только если автобиографическая память отвечает на вопрос "что со мной было", то модель внимания отвечает на вопрос "что я делаю в такой ситуации". Множество ответов на вопрос "кто я", почти как в Westworld.
Гипотеза Грациано наделяет модель внимания не только описательной, но и управляющей функцией. Майкл утверждает, что динамики внимания, "трюки", разученные мозгом и модель внимания, "описание этих трюков", связаны друг с другом.
Следите за руками: со временем мозг начинает использовать модель внимания для того, чтобы этим вниманием управлять. Звучит странно, но я могу попробовать использовать аналогию.
Если сравнить внимание с процессором (физическая штука, умеет исполнять код), а модель внимания с кодом (информация в памяти, к которой процессор имеет доступ), то наше внимание постоянно исполняет код личности, записанный в модели внимания. И этот же код меняет.
Получается такой странный компьютер, где процессор выполняет программу, созданную из следова ранее выполненных программ 😳.
Наше внимание постоянно обращается к модели внимания, задавая вопросы "кто я?", "что я делаю в такой ситуации?", "что дальше?" и выполняет те или иные "динамики": на что смотреть, что вспомнить, что говорить.
Хотя, когда я говорю "постоянно обращается", я упрощаю. Не постоянно. А только в тех случаях, когда мы этому обучились. В тред врывается дедушка Фрейд с "подсознательным" наперевес и хипстеры с "осознанностью".
@itunderhood Но тут скорее вопрос интенсивности "думания". Обрабатывать визуальную информацию на прогулке это одно, решать какую-то сложную задачу это другое.
Такие гипотезы тоже рассматриваются. Но пока ни один нейрофизиолог не смог мне предложить внятное объяснение того, "как может устать нейрон". Я уже многих опросил. Но многих предстоит опросить! Работы непочатый край. А я коллективный твиттер веду) twitter.com/dmitriy_ex/sta…
Заслуга Фрейда перед нейрофизиологией была не в том, что он всюду расставил опорные половые органы. Сидя в кафе и наблюдая за читающим газету и покачивающим ногой джентльменом, Фрейд понял, что джентельмен не осознавал, что качает ногой.
До Фрейда считалось, что все наши действия инициируются сознанием, но дедушка показал, что это не так. И теперь, имея на руках гипотезу AST мы можем предположить, что осознаются только те динамики внимания, которые взаимодействуют со схемой внимания.
Очень хочется назвать "схему внимания" чем-нибудь вроде "код личности" или "ДНК личности", чтобы во фразах не стояли рядом "динамика внимания" и "схема внимания", но Оккам против и я, пожалуй, не буду так делать.
Фрейд отметил, что в мозгу скорее всего есть много динамик внимания, которые мы не осознаем. Важно не путать такие динамики внимания с рефлексами: когда мы отдергиваем руку от горячего, это простая рефлекторная дуга сенсор-мышца через спинной мозг.
А вот когда мы не задумываясь отвечаем "молоко" в ответ на вопрос "что пьет корова" (смешной нейрофизиологический трюк, можете погуглить и подшутить над знакомыми) - это оно. Динамика внимания, которая сработала, не консультируясь с модель.
Одна и та же динамика внимания может как взаимодействовать с моделью внимания, так и работать автономно. Мы выходим из квартиры и привычно идем к транспорту. Осознаем себя уже садясь в него. Что это было?
Это была сложная динамика внимания, которая "вела" нас по привычному маршруту. Вокруг не происходило ничего интересного, ничего нового, и динамика внимания "не касалась" модели внимания. Мы, строго говоря, не были в сознании.
"Осознанность", про которую так много говорят хипстеры - это тренировка динамик внимания, чтобы они почаще консультировались с моделью, а не работали на автомате.
@itunderhood ну как, может. для передачи/активации же химия используется, а её запас не безграничен?
И такая гипотеза есть. Но нет, вокруг нейронов глия, которая эффективно собирает нейротрансмиттеры и возвращает их обратно нейронам. Плюс транспорт от ядра до аксональной терминали постоянно доставляет новые порции "химии". Запас безграничен. twitter.com/wrong_habits/s…
Завтра на базе гипотезы AST я покажу, откуда берется сложность кода. А сегодня хочу выделить те свойства сознания, о которых говорит гипотеза и которые нам, как программистам, интересны.
@itunderhood (Понятие переменной означает некое множество значений, которые она может принимать, и абсолютно тождественно для математического анализа и программирования)
Есть у меня на этот счет одна старая лекция 😂 youtu.be/js7aP3A_4Ts twitter.com/SpeakerTheBird…
Во-первых, обучение. Если предположить, что гипотеза Грациано верна, то обучается мозг, повторяя динамики внимания.
Вначале случается повторяющаяся динамика внимания. Она может быть порождена сознательно, например, когда мы повторяем слово иностранного языка. Или складываться автоматически в ответ на что-то, например, когда мы отдергиваем руку от костра.
Через несколько сотен повторений на протяжении нескольких месяцев (польза от нейрофизиологии - я знаю цифры long term potentiation!) динамика становится частью модели внимания.
В модель внимания добавляется фрагмент "я - тот человек, который может произнести это слово". Или "я - тот человек, который не сует руки в костер".
Все, в личность добавлен еще один кусочек и дальше мы можем использовать новое слово при общении и безопасно выезжать на шашлыки.
Во-вторых однозадачность. Нет точного понимания, почему сознание и внимание по большей части однозадачны. Мне нравится гипотеза периферии: так как большая часть нашего ввода-вывода (глаза, уши, руки, ноги) может одновременно выполнять только одно действие,
то и динамики внимания вырабатываются те, которые приводят к выполнению одной задачи за раз.
Нейрофизиологический курьез: если несколько месяцев тренироваться, то можно научиться делать две сознательных активности одновременно. Но вряд ли из этого можно извлечь какую-то практическую пользу.
В-третьих, raward system, она же "система подкрепления". Нейрофизиология слабо представляет себе как работает эта штука, но она как-то определяет пользу и вред разных динамик внимания.
Возможно, "польза" и "вред" растет как огромный куст когнитома (о нем завтра) с рождения.
Когда ребенок рождается, топология его мозга определяет "пользу" как "съел вкусняшку", "поспал", "мама погладила" и "вред" как все остальное.
Со временем поверх этого фундамента нарастают более сложные оценки, и вот мы уже можем прокрастинировать, потому что не ощущаем ценности в коде, который пишем.
Мозг выбирает динамики внимания, основываясь на прогнозируемой пользе и вреде. Мы делаем то, что ведет к пользе и не ведет к вреду. Где "польза" и "вред" определяется нашим жизненным опытом.
@itunderhood а есть какие советы по «уходу» за мозгами ? Ну как за мышцами и тому подобное :)
Повторять те навыки, которыми собираемся пользоваться. Прямо брать и повторять. Сотни раз, на протяжении месяцев) twitter.com/valenok_husky/…
@jbaruch @itunderhood А к тому чтобы писать в коллективный аккаунт нужно готовится?)
У меня есть план-черновик на неделю) twitter.com/kam_if/status/…
В-четвертых, интуитивное мышление. Все динамики внимания, которые не транслируются в сознание. Самые странные из них мы называем "когнитивные искажения" и записываем на википедии.
Но гораздо большее количество "просто работает", позволяя нам не консультироваться постоянно с моделью внимания, решая ежедневные рутинные задачи.
Есть гипотеза, что похожая топология мозга и похожий социум приводит к развитию похожих динамик внимания. Отвечая быстро и "не задумываясь" люди делают типовые "логические ошибки".
На этом я завершаю краткий пересказ AST. Теперь я могу пользоваться терминами "динамика внимания" и "модель внимания", чтобы завтра рассказать про мышление, рабочую память software complexity problem. Keep tuned!
Среда
@itunderhood Абаждите, я кажись пропустил: уже есть чёткие определения хороших программистов? Ну или хотя бы нормальных? Тут даже сранную матрицу компетенций никак не могут свести, т.е. ещё не понятно а чем программист заниматься должен
Четкого определения я не видел, но есть то, что нейрофизиологи называют "коррелянтами". Если код решает поставленные бизнесом задачи, разработка и изменения занимают среднее по рынку время, другие программисты могут работать с этим кодом, то как назвать человека, написавшего код? twitter.com/stokito/status…
@itunderhood новое же изучать, разве нет? мозг любит новые навыки, нейроны под это дело отращивает.
Мы не знаем, как работает система подкрепления. "Любит новые навыки" - это "поисковое поведение", с которым все сложно и непонятно. Особенно с возрастом. twitter.com/wrong_habits/s…
Во вторник я познакомил читателей с "динамикой внимания" и "моделью внимания", которую очень хочу назвать "кодом личности", но нельзя. Сегодня рассказываю, как вся эта машинерия работает, когда мы смотрим на код.
И динамики внимания, и модель внимания - статичные штуки, которые меняются очень медленно. Нужны сотни повторений на протяжении месяцев, чтобы выучить новое слово иностранного языка или добавить свойство личности.
Несмотря на это, наш мозг как-то оперирует в реальном времени. Мы осознаем не только "себя", модель внимания, но и то, что происходит в данный момент. Что происходило минуту назад. Что делали и что будем делать.
Как это организовано? С помощью памяти. Долговременной и коротковременной, которую еще называю "рабочей".
Я еще не нашел ни одной годной гипотезы, которая непротиворечиво описывала бы работу памяти. При долговременном запоминании нейроны "как-то" меняются. К сожалению, в них меняется столько много всего, что мы не может понять, где там "память".
В каких отношениях долговременная память с моделью внимания мне непонятно. И то и другое создается сотнями повторений и используется динамикой внимания, но это все, что мне известно. Как реализованы "мысли" и "воспоминания" AST пока не рассказывает.
А вот с рабочей памятью чуть более понятно. Если продолжить некорректные аналогии, в которых внимание это "процессор", модель внимания "код личности" а долговременная память "жесткий диск", то рабочая память - это оперативка. Целых пять байт.
О рабочей памяти удобно рассказывать с помощью когнитома и зрительной коры. Как мы осознаем окружающий мир, который видим? В школе нам рассказывали, что изображение с сетчатки поступает на зрительную кору, где "как-то обрабатывается мозгом".
Внимательное изучение показывает, что "какая-то обработка" начинается еще в сетчатке, продолжается в таламусе и то, что доходит до зрительной коры уже мало походит на "картинку" из точек.
Гораздо больше информация в коре похожа на "признаки", которые мы используем при машинном обучении искусственных нейронных сетей. Горизонтальные и вертикальные черточки, всполохи цветов, направления движения и уровни контрастности.
До внимания и схемы внимания доходят уже "смыслы". Звучит максимально крипово, но мы осознаем не картинку из точек, а что-то похожее на облако тегов.
На лекциях в этот момент в зале кто-нибудь встает и говорит "Григорий Валерьевич, вы прямо сейчас лжете! Вот я смотрю на вас и вижу изображение. Картинку. Какое облако тегов?!"
Мы видим картинку. Но осознаем облако тегов. Это легко проверить: закройте глаза и представьте, что вы только что видели. Интуитивная логика подсказывает, что никакой "картинки" в зрительной коре при этом не появится)
Облако тегов (или, правильнее сказать, "смыслов") осознается как изображения благодаря ряду механизмов. Оно перестраивается вслед за нашим вниманием, движением глаз и их каскадами.
Когда мы входим в комнату, то осознаем облако смыслов "комната", "пол", "потолок", "диван", "телевизор".
Наши глаза совершают саккады, динамика внимания, не транслируемая в сознание, быстро дополняет это облако смыслов мелкими деталями. Мы смотрим по сторонам, фокусируем внимание и облако смыслов перестраивается вслед за ним.
Есть гипотеза, что наша рабочее память - это то самое облако смыслов, которое активировано в текущий момент. Откуда оно берется? Последний герой моего рассказа, академик Анохин, внук того-самого-Анохина, рассказывает про "когнитом" youtu.be/I0_Zr1eGVog
Смыслы, которые могут активировать вниманием, копятся у нас с рождения, образуя огромный граф, "когнитом".
Новорожденный ребенок видит черно-белое изображение до полуметра от себя. Но раз за разом поступающие сигналы позволяют мозгу находить закономерности, и годам к пяти выросшее дерево когнитома с миллионам смыслов дает полноценное цветное зрение.
Ключевое свойство когнитома в том, что смыслы в нем связаны друг с другом. И активируются они тоже связанными друг с другом кусками. Когда мы смотрим на свой ноутбук, то у нас активируется один огромный участок когнитома - "ноутбук".
Теперь у меня на руках все кусочки пазла: динамика внимания, модель внимания, долговременная память в виде дерева когнитома и рабочая память в виде активированных в данный момент участков этого когнитома.
Прямо сейчас, когда мы читаем твиттер, привычные динамики внимания обеспечиваю движения глаз по буквам и словам, из месива зрительной информации выделяются признаки, в дереве когнитома активируются смыслы.
Динамика внимания постоянно консультируется с моделью внимания: "кто я? что я делаю в такой стиуации? что я делаю, когда осознаю такие смыслы" и мы увлеченно пишем комменты, испытываем эмоции, формируем новые смыслы в когнитоме.
Активация цепочек смыслов в когнитоме быстрый процесс. Все остальное: новые динамики внимания, модификация модели внимания, новые смыслы в когнитом - сотни повторений на протяжении месяцев.
Собираем пазл: динамика внимания может одновременно активировать конечное число несвязанных частей когнитома.
Сами "части" могут быть довольно большими. Заходя в свою комнату, мы активируем огромный кусок когнитома "моя комната", который содержит тысячи деталей.
Но смотря на раскиданные на кровати предметы, осознание каждого из этих предметов активирует отдельную, несвязанную часть. И так частей одновременно может быть активировано не очень много.
Мы не знаем, почему так. Может, глюкозы не хватает. Или так обучилось. Или пересечения. Или еще что-нибудь. Но число одновременно активированных частей когнитома около пяти.
Закономерность давно известна как "кошелек Миллера", но десятки лет назад говорил про "семь плюс-минус два", то есть от 5 до 9. Современные исследования с фМРТ говорят о том, что скорее пять.
Наличие когнитома, внимания и модели внимания - гипотезы. Когда мы смотрим на мир вокруг и осознаем "облако тегов", этих тегов, или "смыслов" гораздо больше пяти, и как они связаны с осознаваемыми частями когнитома непонятно.
Но эта гипотеза обладает предсказательной силой. Если предположить, что код мы осознает точно так же, через ограниченное количество активированных участков в огромном графе смыслов, то можно выделить ряд закономерностей.
Сложность кода. Наконец-то! Я столько писал про теоретическую часто что, наверное, остались самые стойкие. Которые теперь вместе со мной могут использовать термины "динамика внимания" и "активация участков когнитома". Пора поговорить про код.
Как я уже рассказывал, нейрофизиология меня интересует всего для одной цели. Я хочу какую-то рабочую гипотезу, которая бы непротиворечиво объясняла, что именно делает код сложным.
За последние двадцать лет я десятки раз видел огромные кастрюли с мегабайтами лапши. Это была лапша на C, C++, Java, C#, PHP, Python, Ruby, JavaScript, TypeScript.
У всей этой лапши была одна общая черта: новые разработчики тратили месяцы, чтобы в ней разобраться и еще больше времени, чтобы вносить изменения.
Бизнес формулировал хотелку "Гриша, ну сделай что нибудь". А я не знал что делать. Многие проблемы можно залить деньгами, временем, нанять лучших программистов, использовать лучшие практики, переписать, покрыть тестами - но это не масштабируемо.
В реальном мире у меня обычно есть несколько мидлов, десяток мегабайт лапши и интерес развивать и поддерживать проект именно в такой конфигурации.
Почему мидлы пишут лапшу? Почему мидлам тяжело понимать лапшу? Почему мидлам тяжело менять лапшу?
Когда у меня в руках оказались AST с когнитомом, я решил посмотреть на код глазами этих гипотез. А что вообще может происходить в наших мозгах, когда мы читаем код?
Я уже писал выше, что когда мы смотрим на комнату или читаем текст, привычные динамики внимания раскладывают зрительный поток на "облако смыслов", активируя ими несколько областей в когнитоме.
Возможно, при чтении кода происходит то же самое? Мы смотрим на код, и если за годы работы у нас сформировались динамики внимания и смыслы в когнитоме, то активируются его участки.
И их, точно так же как и для любой другой рабочей памяти, может быть активировано ограниченное количество. Пять штук. У кого-то, возможно, шесть. Или десять. Но не сотня.
Что будет, если для осознания участка кода нужно активировать больше пяти участков когнитома? Разработчик не сможет осознать этот код. Точно так же, как он не сможет осознать слишком длинное и запутанное предложение.
мне кажется тяжело менять лапшу не только мидлам, рефакторинг лапши более опытными чуваками это тоже больно twitter.com/itunderhood/st…
Все так. Но есть некоторые опытные разработчики, которые могут в лапшу. Сам одного такого знаю) Так что фокусируюсь на мидлах, их много и с ними работать. twitter.com/mood_tuna/stat…
Проблему сложности кода можно сформулировать вот так: чем больше несвязанных участков когнитома нужно активировать для осознания что делает код - тем сложнее этот код.
Из такой формулировки можно сделать несколько практических выводов.
Помните, я рассказывал, что активированный участок когнитома может быть большим? Очень большим?
Если программист хорошо знает синтаксис языка, используемый фреймворк, библиотеку - то для осознания больших частей кода ему нужно будет активировать всего одну область когнитома.
Чем больше в коде типовых, хорошо знакомых разработчику конструкций - тем проще разработчику осознавать такой код.
Здесь стоит передать горячий привет олимпиадному программированию, преждевременной оптимизации и "креативным, прикольным решениям" в коде.
@itunderhood Т.е., тезис про то, что олимпиадники, в среднем по больнице, хуже справляются с бизнесовыми задачами имеет место быть? Исходя из вашего объяснения, они привыкают к типовым решениям типовых проблем и в условиях рабочих задач их решения могут быть хуже "бизнесового" программиста?
Олимпиадники привыкают решать совсем иной класс задачь совершенно другим способом. Как результат, с их кодом тяжелее работать другим разработчикам. Но верно и обратное: им самим тяжелее работать с не-олимпиадным кодом. twitter.com/ryzzhov/status…
Полагаю, большинство коллег и без кучи стремных гипотез знают, что чем привычнее конструкции в коде и чем их меньше на единицу объема - тем проще читать такой код. Откуда тогда берутся мегабайты лапши?
Понаблюдаем за художником. Он подходит к холсту, делает несколько мазков кистью, отходит на шаг назад, смотрит картину целиком. Снова подходит, делает несколько мазков, повторить до готовности.
Мы пишем код точно так же. Держим в фокусе внимания какой-то небольшой фрагмент, делаем небольшие модификации, запускаем тесты, переключаем внимание на следующий фрагмент, повторить до готовности.
Только вот мы не можем отойти на шаг назад. Для текста кода у нас нет всей той зрительной машинерии, которая организовалась за долгие годы и обеспечивает "зум" облака смыслов со скоростью 240 кадров в секунду.
Мы модифицируем код небольшими кусочками, затем возвращаемся через неделю - и уже не можем осознать его целиком. Потому что не влезает в лимит одновременно активированных областей в когнитоме.
Добро пожаловать в дивный мир software complexity problem.
Этим я завершаю экскурсию в нейрофизиологию. Завтра поговорим об исключительно прикладных вопросах: как писать читаемый код
Четверг
@itunderhood Видимо, по этой причине периодически предпринимаются попытки создавать визуальные языки программирования и порог вхождения у таких языков ниже.
Интуитивное мышление сильно) К сожалению, квадратики со стрелочками и текстом - не художественная картина. Машинерия так не работает. twitter.com/serg_rubtsov/s…
@itunderhood ➡️ Таким образом, выводим когнитивные правила — в методе желательно не более 7 строк (ну, единиц смысла), в интерфейсе все подчинено смыслу интерфейса (одному) — отсюда сегрегация интерфейсов, и т.п.» Пользоваться бы ещё научиться (и не только себе) ⏹
Собственно, я все это изучаю с целью вывести практические правила, которым можно следовать. Keep tuned. twitter.com/norrittmobile/…
За прошедшие три дня я подвел теоретическую базу под то, что мы "и так всегда знали" (ретроспективное когнитивное искажение, между прочим): чем меньше в коде частей, тем он проще. Чем привычнее эти части, тем он проще.
Но гипотезы не бесполезны. Они позволяют добавляют конкретики. "Меньше или больше чего?" Пяти. "Что такое часть?" То, что активирует одну область когнитома. "Привычная это сколько?" Сотни повторений на протяжении месяцев.
Гипотезы позволяют из толстой книги "500 советов как писать крутой код" выделить те несколько штук, которые могут работать. Что может работать? Напишу чуть позже.
Начну с того, что у разных разработчиков разный когнитом. Разработчикам с разным бэкграундом нужно активировать разное количество несвязанных частей когнитома чтобы осознать один и тот же код.
Перефразируя: код, простой для одного разработчика будет сложным для другого. Не потому что один "сильнее и умнее" а другой "слабее и глупее". А потом, что деревья когнитома у них выросли разной формы.
Здесь можно передать горячий привет отсутствию фундаментального образования по разработке софта. Алгоритмы и структуры данных это круто, но совсем не то, что активируется у нас в когнитоме, когда мы пишем бизнес логику.
Если в команде мидлов опытный разработчик пишет код, то мидлам с таким кодом будет тяжело. То, что у опытного активирует 1-2 части когнитома у мидлов будет пытаться активировать десяток.
Опытным разработчикам с разным бэкграундом будет тяжело с кодом друг друга. Опытные плюсовик, джавист и фронтендер, взявшись писать бэк на пайтоне (которые все трое "как-то знают") обнаружат, что им тяжело понимать код друг друга.
@itunderhood Кстати напомнило про лица Чернова - способ отображения многомерных данных в виде человеческого лица. Как раз для использования веретенообразной извилины в задаче поиска аномалий
Да, это очень удобный способ заюзать огромный массив уже существующих динамик внимания и кусок когнитома. Но применение сильно ограничено задачами классификации. twitter.com/rin_xiii/statu…
@itunderhood а почему пяти?
Этот вопрос я задаю на допросе каждому нейрофизиологу. Гипотез много, хорошего ответа нет. Может это типовое обучение. Может глюкозы не хватает. Может физические пересечения в нейрональных ансамблях. Неизвестно. У кого-то не пять, а шесть, к примеру. Или семь. Но не сто. twitter.com/wrong_habits/s…
Когнитом, динамики внимания и модель внимания прирастают повторениями. Сотни раз в разных контекстах на протяжении месяцев. Чтобы хорошо осознавать пайтон нужно почитать и пописать много разного пайтона.
Бывают ситуации, когда человек что-то увидел или услышал и запомнил на всю жизнь. Но мы не знаем как такая штука работает и не умеем ее воспроизводить.
Иначе бы запоминание любого объема информации было простым делом: говорим информацию, сильно пугаем. Повторять до победного. Но нет, так не работает.
Опытному разработчику, за пару вечеров выучившему пайтон, первое время будет сложно с пайтон кодом. Как бы нам не хотелось обратного.
Здесь вспоминаем шутку что опытный программист на Паскале может на любом языке писать как на Паскале. Теперь мы знаем почему.
Сколько времени понадобится, чтобы стало легко? Тысячи типовых фрагментов кода, сотни повторений разных комбинаций элементов в разных контекстах, на протяжении месяцев.
Чем больше разработчик пользуется библиотекой или фреймворком, тем проще ему работать с кодом. Больше кода можно осознать "за раз". Больше слотов рабочей памяти свободны под осознание чего-то другого.
Я часто провожу аналогию с шахматами. Когда человек только учится играть, все фигуры не влезают в его рабочую память, и он переводит внимание с одной на другую, к шестой забывая что было с первой.
Но через десяток лет он вырабатывает нужные динамики внимания, модель внимания и элементы когнитома, чтобы осознавать доску целиком в активацию одной-двух больших частей когнитома.
Для него доска выглядит как "угроза справа, похожая на такой-то гамбит" и "возможности слева, как в таком-то матче". Остальные три слота свободны для подумать.
Первый контринтуитивный вывод: если команда использует один и тот же набор фреймворков и библиотек хотя бы полгода, им легче с кодом друг друга.
Второй контринтуитивный вывод: если текущий стек хорошо знаком но не очень подходит для задачи, то использование опытным программистом идеального, но малознакомого стека породит худший код, с которым ему будет тяжело.
Можно приводить много примеров, мой месседж в том, что знание нескольких закономерностей избавляет от знания многих фактов и попыток выяснить, что из 500 советов работает, а что нет.
Другой небезынтересный момент, который я хочу обсудить: а как понять, насколько сложен код? Мы же не можем вставить электроды в мозг разработчика и считать, сколько частей когнитома у него активируется при осознании кода.
Хотя бы потому, что само наличие когнитома у нас в голове - это гипотеза. Мы не знаем, как в нейронах представлены индивидуальные "смыслы" и как они активируются вниманием. И как работает внимание тоже не знаем.
Что в такой ситуации можно сделать? Я обучаю разработчиков ментальному трюку: предлагаю посмотреть, какую историю рассказывает код.
"История, которую рассказывает код" звучит как бессмысленный набор слов, и мне снова понадобится десяток твитов, чтобы детализировать удобно заучиваемое заклинание.
Моя аналогия основана на том, что если разработчику хватает частей когнитома чтобы осознать нужный фрагмент кода, то он сможет сформулировать этот фрагмент как историю.
Я сажусь рядом с разработчиком и предлагаю ему пересказать происходящее в коде построчно в виде истории.
Есть нюансы. Разработчик, который работает над проектом и недавно писал этот код владеет "контекстом". Когнитом, динамики внимания, модель внимания - аналоговые, а не дискретные штуки.
Когда я говорю про сотни повторений на протяжении месяцев это не значит, что до 299 повторений элемента не будет в нашем когнитоме, а на 300-м он "включится".
Аналоговый мозг медленно копит изменения, группы нейронов активируются и медленно затухают, оставляя "тени" того чем мы занимались минуту, час или день назад.
Только что написавший код разработчик может сформулировать, что скрывается за идентификаторами "pm" и "dk", зачем он обращает список или вызывает ".reset()" для подключения.
Сидящий рядом коллега способен страховать такие штуки и проверять, что историю действительно рассказывает код, а не читающий его разработчик.
С опытом такой фокус можно проворачивать и в одиночку, со стороны смотря на свой собственный код.
Какой код хорошо рассказывает историю? Тот, для осознания которого разработчику нужно активировать минимальное количество разных частей когнитома.
Идентификаторы, отвечающие на вопрос "что это".
Комбинации идентификаторов и вызовов, отвечающие на вопрос "зачем это".
Использование привычных для разработчиков конструкций языка вместо попыток сэкономить несколько строк на "красивый однострочник, как в той задаче с собеседования".
Использование популярных библиотек и фреймворков, с которыми хорошо знакомы другие разработчики, а не "вот этой новой штуки, а то скучно что-то, мне же надо развиваться".
Использование тестов, чтобы показать, как работают те или иные части кода.
Использование комментариев только там, где историю не удалось рассказать кодом. Если мы не делаем апишку с документированием через комменты, конечно.
Подводя итог я хочу сказать, что за двадцать лет видел разное. Но я гораздо чаще вижу, что проект умирает от сложности кода, чем от того, что код медленный или написан не на том языке программирования.
Software complexity problem - то чудовище, которое убивает наши проекты. Интуитивное мышление мешает нам понять, что мы физически не способны удержать в рабочей памяти работу мегабайт кода.
Рисуя картину кода идентификатор за идентификатором мы не видим создаваемую сложность. Контекст и тени того, что мы делали только что, час назад и вчера поддерживают нас, позволяя работать с кодом здесь и сейчас.
Но когда мы возвращаемся к этому коду через месяцы или работаем с кодом коллег, невозможность одновременно осознать больше нескольких штук играет с нами злую шутку.
Код становится сложным, изменения вносятся все медленнее, растет технической долг, ошибки и обходные пути, просто потому что нам все тяжелее и тяжелее осознать, что происходит в коде.
А через некоторое время код проекта сгнивает под собственной сложностью. Мы привычно обвиняем во всем что-нибудь и идем к следующему проекту, где "все сделаем правильно". И так год за годом.
В ДНК нет информации о позиции и работе каждой из ста миллиардов клеток нашего мозга. Гены задают общую топологию, направление роста, а детали реализации у каждого человека немного отличаются.
Есть люди, худые от природы. Им не нужно соблюдать диеты, чтобы всю жизнь не иметь лишнего жира.
Есть люди, которые хорошо рисуют. Выросшая у них топология мозга позволяет легко решать задачи пространственной визуализации, работать с цветами и отражение геометрии на листах бумаги или поверхности планшета.
Есть люди, которым легко читать и писать код. Топология мозга, организовавшиеся динамики внимания и его модель, выросший когнитом дают им очень широкие возможности.
Хорошо, что такие люди есть. Я искренне ими восхищаюсь, мне нравится с ними работать, они могут делать очень крутые штуки.
Но их мало. А мне очень хочется предсказуемо и с командами мидлов делать проекты, которые бы за пару лет не сгнивали под весом сложности собственного кода.
Для этого я изучаю как работает мозг, собираю гипотезы с предсказательной силой, тестирую на разработчиках разные способы борьбы со сложностью кода. Помогаю с коллективным твиттером 😊
Это все на сегодня. Завтра я расскажу про конференции и как они могут помочь лучше писать код. Keep Tuned!
Пятница
Пятница - время очешуительных историй. Сегодня я буду продавать вам оффлайн конференции! Те самые, билет на которых стоит несколько десятков тысяч рублей, нужно куда-то ехать и слушать мутных типов, затирающих со сцены странное.
@itunderhood те самые, которых нынче нет
Нынче нет, а на после НГ планируется целый выводок: conf.ontico.ru twitter.com/dbg_nsk/status…
Зачем и кому нужны конференции при живой курсере, работающем интернете, с ютубом и нетфликосом? Интуитивное мышление подсказывает, что оффлайн конференции - пережиток прошлого, который скоро исчезнет.
За последние несколько лет я организовал десяток конференций, подготовил полсотни спикеров ну и сам выступил сотню раз. То, о чем я буду писать дальше - профессиональное, но личное мнение.
Планирует больше одного организатора. Ты выдал секрет, но это не один секрет на всех. Кто-то планирует на осень, кто-то уже через пару месяцев 😜 twitter.com/jbaruch/status…
Конференции очень разные. Highload в Сколково и отчетная конференция нейрофизиологов в Дагомысе общим имеют только слово "конференция" в названии.
Я умею только в айтишные конференции и говорить буду только про них. Все что написано дальше - про конференции для разработчиков, тестировщиков, двеопсов (которые не люди, а методология), тимлидов и прочих причастных.
Я хорошо умею в оффлайн конференции. Сделал несколько онлайн, на нескольких выступил, один из докладов даже стал лучшим докладом конференции. Не понравилось. Так что все что я буду дальше писать - оно про оффлайн. Если он когда-нибудь вернется.
Я три дня рассказывал про интуитивную логику 😥 Через полтора месяца я процитирую твой твит со сцены Highload. И да, я переболел и у меня антитела. Было тяжело. twitter.com/jbaruch/status…
@itunderhood И в конце такая ссылка на статью: sobolevn.me/2019/10/comple… Бах!
Очень хорошая статья, всячески рекомендую. twitter.com/elixir_lang_mo…
Во всех айти конференциях, которые я видел, можно выделить три главных темы, представленных в разных пропорциях.
Первая тема - образовательная. "Приходите к нам на конференцию, узнайте новое, обучитесь новому". Интуитивное мышление как оно есть.
Если аккуратно зафиксировать организатора такой конференции и инструментально спросить, почему он считает обучение задачей конференции, то можно услышать что-то про детский сад, школу, универ.
Форма конференции похожа на то, что мы видели в своей жизни десятки тысяч раз.
Дети приходят в детский сад, там их сажают за парты, нянечка что-то затирает у стола. Что она делает? Учит. Что делают дети? Учатся.
Затем детей отправляют в школу. Там они садятся за парты, и у доски втирает уже не нянечка, а преподаватель ОБЖ. Что он делает? Учит. Что делают дети? Учатся.
Затем высшее образование. Студенты сидят за партами, профессор у доски за все хорошее и матанализ. Что он делает? Учит. Что делают студенты? Делают вид, что учатся.
Наш мозг - хороший pattern matcher. Интуитивное мышление хорошо может в простые закономерности, поэтому конференция, где спикер что-то говорит со сцены, а вокруг него сидят слушатели, вызывает автоматический ответ на вопрос "что здесь происходит".
Я крайне скептически отношусь к обучению на конференциях. Даже если забыть про курсеру, юдеми, ютуб и официальные документации то всегда остается план обучения и необходимость сотен повторений на протяжении месяцев.
Мозг обучается повторениями. Я говорил это в понедельник, говорил во вторник, и в пятницу тоже скажу. Нейрофизиология в лице long term potentiation указывает конкретные цифры: сотни повторений в разных контекстах на протяжении месяцев.
Большинство слушателей забудут почти все что за 30 минут рассказывал спикер на следующий день. Это что угодно, но не обучение. Обучение выглядит по другому. Как на курсере.
Пропоненты (это которые оппоненты наоборот) обучающей роли конференций любят рассказывать про "анонсы". Переобуваются в прыжке и говорят что "ну ок, мы не обучаем. Но мы рассказываем новости!"
А в чем ценность этих новостей? Зачем мне лететь на другой конец земного шара на конференцию, чтобы лично послушать, как DHH анонсирует hotwire? Все то же самое будет за несколько дней до конференции на официальном сайте.
На мой профессиональный взгляд, если рассматривать конференции как место где "поучиться и узнать новое", то овчинка катастрофически не стоит выделки. Но это не единственная тема.
Вторая тема - развлекательная. Все вот это сектантско-энергуйское и инфоцыганское "зарядиться энергией", "потусить вместе с единомышленниками", "вживую увидеть Столлмана и Юкихиро Матцумото".
Автор Ruby выглядит как обычный японский дедушка. Это даже не ряженые в картон ролевики на комиконе, bit.ly/38p0RDG
Типичная айтишная конференция - это тысяча интровертов-социофобов, радостно обсуждающая что-то друг с другом и не горящая желанием "тусить с единомышленниками".
Другое дело завтраки, бир митапы и афтапати... Только вот какое отношение они имеют к конференциям?
А "развлекательный сегмент" это, на секундочку, нетфликс, новый киберпанк и Genshin Impact, социальные сети, концерты, кино и все остальное.
Тяжело выбрать в слот "развлечения" конференцию, когда в этот же слот можно поместить поход в кабак с друзьями, рейд в WoW или новый сериал. Сильная конкуренция.
Третья, последняя и наиболее близкая мне тема - поговорить. Очно поговорить с коллегами по индустрии, выслушать личное мнение и обсудить неполиткорректные вопросы.
Помните, в понедельник я рассказывал о том, как вижу сложности нашей индустрии? Отсутствие "корней", фундаментального образования, проклятье нулевой цены копирования?
Программировать - сложно. За исключением нескольких специфичных областей с замороженными стеками и требованиями, мы постоянно решаем новые задачи, новыми стеками, в новых условиях.
Опыт копится медленно, парадигмы меняются быстро, с заказчиками общаться сложно, коллег искать тяжело. У разработчиков много вопросов.
Конечно, мы привыкли задавать вопросы на stack overflow. Но там можно задать только хорошо формализованный вопрос, а не "что-то у меня не так, а что - не понимаю".
На оффлайн конференцию можно прийти и поговорить с теми, кто не отвечает на stack overflow, потому что заняты. Задать вопросы в свободной форму, показать на ноуте код, обсудить что и как делается за закрытыми дверями конференций.
В таком общении я вижу главную ценность оффлайн конференций.
Самые широкие возможности поговорить у спикеров. В воскресенье я расскажу, что можно делать гостем конференции, а сегодня хочу про выступления и темы.
К спикеру подходят поговорить сами. Спикер задает тему для обсуждения. Спикер сидит в спикерской вместе с другими спикерами, которые собрались там... да, чтобы поговорить.
У спикера гораздо больше возможностей получить ответы на свои вопросы и обсудить интересующие его темы. Если, конечно, такие вопросы у него есть.
Если посмотреть мои технические выступления, то почти всегда я поднимаю на обсуждение интересные мне темы. Чтобы поговорить о них в кулуарах с другими спикерами и участниками конференций, youtu.be/PgOkxWd5PoI
Мой доклад на Highload через два месяца называется "Python и Ruby под нагрузкой". Это подгорающая тема, которую мне самому интересно обсудить.
Когда я готовлю спикеров для выступлений, их первый и главный вопрос: "откуда брать темы?!". И у меня есть штатный ответ: если конференция о поговорить, то выбирайте тему, которая подгорает. Которую сами хотите обсудить со сцены.
Но только если это айтишная конференция "о поговорить". Иначе программный комитет начнет с удивлением спрашивать "а где выводы?", "где решение проблемы?", "чему слушатели научатся, прослушав вашу лекцию?!"
За редким исключением тема вытаскивается наводящими вопросами "Что подгорает в той области, в которой ты занимаешь? С чем не согласны твои коллеги? По каким вопросам нет единого мнения?"
Во многих компаниях есть DevRel, об которого можно подумать. Можно написать мне в личку, нередко я нахожу десять-пятнадцать минут на созвон за чашкой кофе, чтобы потом познакомить с программным комитетом профильной конференции.
Кроме возможности обсудить сложные вопросы на собственных условиях, выступления на конференциях приносят и другую пользу спикерам.
Смешное слово "мотивация". Исследования и подготовка волшебным образом получают высокий приоритет после обещания выступить на Highload. Дедлайн мотивирует.
Тренировка речи вскрывает "дыры" в собственных знаниях. Я не перегружал первые два дня нейрофизиологическими подробностями, но у нашего когнитома есть типовые недостатки.
Например, хранящийся в нем граф никому не должен быть "логичным". Это просто связи между смыслами. Мы можем быть уверены что разбираемся в предмете, ровно до тех пор, пока не попробуем рассказать о нем словами через рот.
Чтобы с ужасом обнаружить, что... не можем. Уверенность "я это понимаю" есть, а самого понимания нет. Типовая проблема, успешно вскрываемая и решаемая при подготовке к конференции.
К примеру, я всю жизнь думал что неплохо понимаю, как работают syscall'ы в основных операционках. Ровно до тех пор, пока не понадобилось "объяснить на пальцах". Оказалось что нет, не понимал. С большим интересом покопался в теорикрафте.
Еще выступления на конференциях добавляют новые знакомства в записную книжку. Есть смешная гипотеза, что все наше общество построено на социализации, которая лежит в основе вообще всего.
Не знаю, насколько это верно, но если постоянно знакомиться с новыми айтишниками, сохранять их контакты в телеграм вместе с кучкой тегов, вместе фоткаться на конференциях а потом общаться - многие рабочие и не только вопросы становятся существенно проще.
На сегодня все. Завтра расскажу о нечестном способе выступлений. Что делать, если спикер мычит, заикается, не может связать двух слов, забыл доклад и описался, выйдя на сцену? Keep tuned и с пятницей всех! 😜
Осенью я не цитировал, потому что там были риски и непонятно. С весной более-менее все понятно. Риски тоже есть, но они уже значительно меньше. twitter.com/jbaruch/status…
Highload++ пройдет оффлайн в Москве. Он умеет "пятиться" 😊 twitter.com/jbaruch/status…
Суббота
Это именно то, что я утверждал ранее но не то, что ты осознал ранее 😂 Я тут три дня рассказывал про динамику внимания и когнитом. До конца недели буду буспощадно пользоваться терминологией 😜 twitter.com/jbaruch/status…
Суббота - время рассказывать про нечестные методы выступлений.
Есть несколько школ публичных выступлений для разных мероприятий и целей. Я рассказываю о том, чем занимаюсь: оффлайн айтишные конференции, где спикер поднимает на обсуждение интересные темы.
Мы очень постараемся в Феврале. Но если будут запреты на проведения - то будем пятиться до победного. Площадка, гостиницы и все прочее будут пятиться вместе с нами. Билеты на самолеты сейчас вроде и так меняют без вопросов. Так что план на весну есть, антитела есть, работаем. twitter.com/jbaruch/status…
@itunderhood но первоисточник-то у вас, нейрофизиологов есть? кто придумал про пять? или это опять "мы не знаем, но это так"?
Изначально Миллер, оттуда "Кошелек Миллера", он ставил эксперименты и называл "семь плюс-минус два". Затем перепроверили на fMRT: frontiersin.org/articles/10.33… twitter.com/wrong_habits/s…
Для оффлайн айтишного выступления "про поговорить" главное - сама история, которую рассказывает выступающий. Сможет ли он показать, почему тема "подгорает" в индустрии и организовать обсуждение?
Как придумать и рассказать историю для типового слота конференции в полчаса? У меня есть методика, по которой я готовлю свои доклады и подготовил полсотни спикеров.
Первый шаг методики - сбор фактуры. Лучше всего делать вдвоем, но можно справиться и одному. Садимся, открываем гугл док и очень кратко, тезисно записываем все, что мы знаем по теме, считаем интересным и обсуждаемым.
Вдвоем это обычно выглядит так: я веду допрос и быстро-быстро записываю, а будущий спикер рассказывает. Занимает 2-3 зум созвона по полчаса.
Пример фактуры для одного из моих докладов: bit.ly/34GhZnm
Второй шаг: из фактуры составляется тезисный план примерно на 30 минут.
Для этого я выделяю в фактуре логически связанные части и пробую выстроить историю. Чтобы хорошо получалось, нужно набить руку.
Иногда не получается и приходится рисовать квадратики со стрелочками: bit.ly/2KwKnBu
Получившийся тезисный план выглядит как-то так: bit.ly/2RG7xTz
Третий шаг: делаем слайды. Это примерно как "рисуем остаток совы".
Есть разные школы "как делать слайды". Не претендуя на топовые доклады, я придерживаюсь мнения, что для рассказа хорошей истории слайды не нужны.
Но если мы хотим рассказать историю на полчаса со сцены то есть ряд сложностей. Главная - наши слова будет тяжелее осознать.
Мозг использует дополнительную информацию, чтобы активировать нужные смыслы в когнитоме. Движения губ говорящего (привет, звуковые иллюзии), социальный контекст (кто он и о чем говорит), ожидания.
Лицо спикера, выступающего со сцены, видно не очень хорошо. Звук искажается колонками. О чем он будет говорить заранее неизвестно.
Поэтому, чтобы слушатели хорошо осознавали произносимое, ключевые слова и термины удобно выносить на сайды.
Идеально на каждом слайде держать минимум ключевых слов или иллюстрацию. Но тогда приходит вторая проблема: если штук, о которых говорит спикер, больше пяти, то слушатели не удержат их в рабочей памяти.
Поэтому я стараюсь организовывать слайды как списки кратких тезисов, разделяя их на кучки по 5 и помечая, на каком элементе в списке я сейчас говорю. Например, слайды для доклада, фактуру которого я показывал до этого: bit.ly/tl2019plan
Четвертый шаг: пользуемся нечестными трюками, чтобы всех обмануть и не заучивать доклад.
Есть люди с хорошей памятью, есть люди с обычной памятью, а есть я. Чтобы честно выучить получасовой рассказ и не ошибиться в стрессовой ситуации сцены нужно потратить много-много часов, что не круто.
Но можно всех обмануть. Если слайдов достаточно много и на каждом представлена одна мысль (описанный выше способ как раз такие слайды производит), то можно зрителям показывать слайд, а себе подсказку.
Посмотрите еще раз на слайды bit.ly/tl2019plan и небольшую область текста внизу, которая в гугловых слайдах называется "подсказки спикера". Там какие-то слова, фразы, цифры. Это то, что вижу я, выступая на сцене.
Как работает механика? Выходя на сцену, я ставлю перед собой ноут. Это можно сделать в подавляющем большинстве случаев, особенно если договориться заранее.
На ноуте я открываю гугл слайды и в правом верхнем углу выбираю "демонстрация с подсказками". В результате браузер порождает два окна: одно со слайдами, второе с "консолью докладчика", которая показывает время, миниатюры слайдов и подсказки.
Слайды идут ко мне за спину на проектор или видеостену - до конца доклада я их не увижу. А консоль докладчика остается в фуллскрин на ноутбуке, и я выкручиваю размер шрифта так, чтобы несколько слов подсказки занимали весь экран.
Итоговый сетап следующий: на сцене стою я, за моей спиной или сбоку от меня слайды, в метре передо мной ноут, на ноуте огромным шрифтом несколько слов подсказки. А за ноутом - слушатели.
Далее я выполняю следующий доведенный до автоматизма ритуал: смотрю на тезис к следующему слайду, переключаю слайды, рассказываю тезис. Повторять 30 минут.
Почему такой способ работает и результат выглядит естественно?
Во-первых, спикер стоит на расстоянии от слушателей, поэтому незначительные движения глаз на экран подсмотреть следующий тезис со стороны не видны.
Посмотрите любое из моих выступлений за последние несколько лет - почти невозможно определить, когда я читаю следующий тезис. А делаю я это перед каждой сменой слайдов.
Во-вторых, зоны брока-вернике в мозгу, которые отвечают за речь и ее смысловую нагрузку, работают не в реальном времени, а с чем-то вроде конвейера. Мы "загружаем" в них смыслы, после чего они произносят слова.
Так что если мы уже знаем, чем закончиться фраза, то можно продолжать говорить и одновременно с этим скосить глаза на экран, посмотреть следующий тезис, подумать, поднять глаза, кликнуть и бесшовно перевести рассказ с одного тезиса на другой.
Как я тренирую спикеров по этой методике. Обычно за пару месяцев до начала конференции у нас есть принятый доклад с тезисным планом, слайдами и тезисами-подсказками к каждому слайду.
Спикер тренируется один, из инструментов нужен только ноутбук, 15 минут времени в день и желание хорошо выступить.
На ноутбуке открываются слайды и запускается OBS: удобная штука для ведения стримов и записи экрана. В OBS для записи выбирается камера и экран со слайдами, а окно с консолью спикера делается на полный экран так же, как во время выступления.
Спикер включает запись и рассказывает несколько слайдов из случайного места презентации. Секунд на 30-60, не больше. Затем запись останавливается и тренирующийся смотрит записавшееся видео.
Где видит себя: заикающегося, мычащего, путающего слова, подсказки и слайды. Боль, слезы, унижение. Видео сразу же стирается, слайды отматываются назад и тренировка повторяется.
Так, записывая и просматривая короткие фрагменты по несколько раз спикер тренируется выступать по методике и вообще выступать. Месяц по 15 минут в день - и можно выходить на сцену.
После подготовки десятков спикеров я обнаружил несколько типовых ошибок, которые совершают примерно все. Для желающих попробовать хорошо об этих ошибках знать заранее.
Тезис пишется не к текущему, а к следующему слайду. Я перебрал все варианты, включая по два тезиса на слайд. Этот - самый лучший.
Тезис должен быть максимально краткий и понятный. Несколько слов, увидев которые, становится понятно о чем говорить дальше. Если тезис непонятен сразу - его нужно переписать. Прямо вот остановить тренировку и поменять.
Смотреть нужно не на экран, а поверх, представляя себе коллег, которым рассказываешь историю. Мозг работает ситуационно, а "говорить с экраном" - странная ситуация. На крайняк можно посадить кого с той стороны экрана и ему рассказывать.
И, наконец, после многочисленного прогона всех частей нужно записать доклад целиком и посмотреть на время. Если оно сильно меньше или больше нужного - поставить в тезисах пометку где говорить меньше, а где больше.
Последнее, о чем я хочу сегодня рассказать, это типовые ошибки во время выступления по такой методике.
Классика, о которой говорят все инфоцыгане и тренера личностного роста - не надо оборачиваться на слайды. Собственно, методика и создана, чтобы не нужно было оборачиваться, но некоторые спикеры все равно пытаются.
Обернувшийся на слайды спикер рушит социальный контекст "мне рассказывают историю". Человек, который вроде рассказывает что-то тебе, но смотрит при этом на стену воспринимается нашими динамиками внимания странно. Спать.
Смотреть очень рекомендуется поверх ноутбука на слушателей. И рассказывать историю им. Благо, чит с тезисами это позволяет очень хорошо делать.
Это все на сегодня. Завтра последний день моего дозора! Кроме ответов на вопросы я расскажу про конференции глазами участника. Что делать, если ты не спикер, а вокруг интроверты-социофобы, которые не горят желанием с тобой общаться?
Воскресенье
Последний день, и мой дозор будет окончена! Закончится нейрофизиология, рассказывающий истории код и конференции для разговоров. Но пока я с вами, хочу обсудить последнюю тему: что делать на конференции, если ты не спикер. В комментах уже предложили собрать лут и убежать 😂
Даже если у спикера нет вопросов, которые ему нужно обсудить по работе, то сама подготовка хорошего доклада позволяет стать лучше, покопаться в теорикрафте, поискать дырки в знаниях и научиться перекладывать их в слова.
Для гостя конференции главная польза, которую я вижу - это возможность поговорить с коллегами. Что для меня, как интроверта-социофоба, не всегда бывает легко.
@itunderhood У кого-то не пять, а шесть. или семь. а если чанки используются, вообще не сосчитать.
К кого-то шесть. Или семь. Ни у кого сто 😊 Ценность "Кошелька Миллера", как я вижу, не в том, что указывается конкретное число. А в наблюдении что это число есть и оно небольшое. Ну а что считать за "штуку" - я поделился одной из гипотез с когнитомом. twitter.com/wrong_habits/s…
Поэтому перед выбором конференции для посещения в роли гостя я рекомендую выписать вопросы, которые вы хотите обсудить. А затем смотреть на программу докладов и искать тех спикеров, с которыми эти вопросы можно обсудить.
При этом тема заявленного доклада мало на что влияет. Смотрите на бэкграунды спикеров: где они работают, чем занимаются, о чем рассказывали ранее. Конкретный доклад и поднимаемая на нем тема - повод поговорить.
Спикеров хорошо ловить сразу же после доклада. Во время самого доклада выбираем тему для завязывания разговора, далее подходим к спикеру после выступления (вы такой будете не один), ждете своей очереди, обсуждаете что угодно про доклад, после чего - то, что вас интересует.
Спикеры за редким исключением приходят на конференцию, чтобы поговорить. Если после доклада спикер сбегает - что ж, такое редко, но бывает. Поэтому на конференции крайне желательно иметь больше одной цели.
А еще спикера после доклада можно и нужно приглашать в сторону кофе. Это убирает неловкое стояние всей толпой рядом со сценой, где уже вешают микрофон на следующего кофе.
Даже ритуальная фраза есть - "Предлагаю пойти в сторону кофе, если у вас есть несколько минут на поговорить". Редко кто отказывается.
@itunderhood Но что если они не пьют кофе? :)
А это не важно. Социальные ритуалы они не про форму, они про содержание. Подавляющее большинство спикеров понимает, что "в сторону кофе" - это про поговорить. Если у спикера случится истерика что он веган и не пьет бесовский кофе - это маркер того, что говорить не хочет 😇 twitter.com/vgermaniu/stat…
Выбор нескольких спикеров - не единственное, что можно сделать перед конференцией. Хорошо работает поиск среди знакомых в айти тусовке тех, кто пойдет на эту же конференцию. И использование их в качестве "проводников".
Где искать проводников, если среди ваших знакомых никто не ходит на конференции? А на бесплатных митапах, айти завтраках и бир пати, которые организуют почти во всех городах. См. meetup.com
Последнее, что могу порекомендовать гостям конференций - это стенды партнеров. Они обычно ищут разработчиков или продают свои услуги, но более чем готовы общаться.
Так что достаточно подойти, поговорить и спросить есть ли кто из технической команды на конференции.
Ну что же, на этом я прощаюсь с вами и передаю микрофон следующему ведущему. Завтра у твиттера будет другое лицо, другие мысли и другая история. Ну а если вы хотите поговорить со мной - пишите @grigoryvp, этот хендл у меня во всех соцсетях.