5 декабря 2018 г.

Просвещение и образование для Украины

На днях исполняется 150 лет со дня основания общества “Просвіта”. В связи с этим на одном из телеканалов собираются делать передачу и меня попросили высказать мысли по поводу “Просвіти” и просвещения для Украины в целом. Так родился следующий текст с лёгким налётом фантазий и мечтаний.

Прежде всего, давайте разберёмся с определениями. Согласно различным статьям Вики, просвещение - это движение во второй половине 18 века за образованность населения, против обскурантизма, против политических и религиозных преследований. Так же иногда называют деятельность государства. Сейчас преследования не совсем актуальны - достаточно просто выполнения Конституции :) А вот обскурантизм остался. Образование - это процесс приобретения знаний, привычек, навыков, ценностей, мировоззрения. Таким образом, “просвещение” - это образование на государственном уровне. А вот “Просвіта” - это организация, которая ставила своей целью образовательную деятельность для создания национальной идентичности, для создания украинской нации. То есть это очень узкая и специфическая образовательная деятельность националистического характера, как я понял.

Нужно ли нам просвещение в формате “Просвіти”?


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

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

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

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

Какое просвещение нужно сегодня для завтра? (преимущественно для детей)


Раньше был информационный голод. Сейчас - перенасыщение. Перенасыщение фейками, неправдой, старьём, ошибками и искажениями, некомпетентностями. Хорошей и качественной информации по-прежнему мало, но она тонет в остальной массе. Обучать раньше означало обеспечить доступ к относительно хорошей информации. В современном мире это уже не актуально - доступ есть. В Украине ещё нужно обеспечить 100% населения Украины доступом к быстрому инету - это задача №1 государства в рамках просвещения. Но обучать сейчас - это учить находить, выявлять и отличать хорошую информацию от плохой.

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

Что нужно человеку ближайшего будущего? Здоровье, компетенции STEM (Science, Technology, Engineering, Mathematics) и умение приятно и конструктивно выстраивать социальные отношения. Что нужно для счастья? Быть здоровым, быть востребованным как специалист и получать взаимное удовольствие от общения с другими людьми. Нужно растить самостоятельных и отвественных людей!

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

STEM. Обучать умению учиться, учиться всю жизнь. Обучать критическому мышлению. Давать через активное обучение (inquiry-based learning) понимание современной научной картины мира, и давать понимание того как устроена наука.

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

Заметьте, я пока что ни слова не сказал о “моральном воспитании” и т. п… Мне кажется, это лишнее, это нужно исключить из образования. Мораль частично прошита в людях биологически, а частично усваивается и перенимается в качестве подражания поведению окружающих. Как родители и учителя будут себя вести, какой пример они будут подавать своим поведением - такие и будут дети в меру своей биологии. Не нужно воспитывать, нужно подавать пример ответственным и разумным поведением (см. пункты про здоровье, STEM и отношения) и этого, на мой взгляд, достаточно.

Какое просвещение нужно для граждан сегодня? (чтобы мы на выборах не делегировали власть мудакам и популистам)


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

Нужно давать людям понимание.

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

Давать понимание денежных потоков. Сколько куда расходуется и главное, “зачем?”. Чтобы люди научились требовать (!) прозрачности ответов на эти вопросы. Особенно это актуально в связи с реформой децентрализации. Сделать самостоятельной уплату налогов - тоже для понимания.

Давать понимание макроэкономики и непопулярных решений, которые требует МВФ и другие (цены на газ, рынок земли, налоги, …). Да, я пониманию, это сложно, но нужно привлечь экономистов и учителей и сделать курсы повышения макроэкономической грамотности, как в Южной Корее, например, где есть музеи денег/экономики, куда водят детей с детства а взрослому населению разъясняют уже несколько поколений.

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

6 июля 2018 г.

Ричард Фейнман. КЭД – странная теория света и вещества

Richard Feynman “QED: The Strange Theory of Light and Matter”.

Собирался прочитать “КЭД – странная теория света и вещества” Ричарда Фейнмана уже лет 8, если не больше. Всё время что-то отвлекало и мешало купить. И вот, наконец, прочитал. Фейнман - один из любимейших мною авторов и лекторов, да ещё и крутой физик. И если от его автобиографических книжек получаешь просто хорошее настроение и вдохновение, от его курса лекций - вдумчивость и внимательность, то от этой научно-популярной книжки я получил огромадное удовольствие особого рода.

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

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

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

29 мая 2018 г.

Про точность в науке, или чему действительно нужно учить детей

Довольно часто от адептов разных религий и течений, да и просто от обычных людей можно услышать фразы вроде “Наука не знает всего”, “Теория эволюции - это всего лишь теория”, “Учёные не доказали ...”, “Научное знание не абсолютно точное”, “Учёные не могут претендовать на истину” и тому подобные. Апологеты таких точек зрения пытаются навязать идею, что научные знания и теории стоит рассказывать и преподавать как равноправные к альтернативным знаниям - религиозным, философским и другим. Апофеозом такого восприятия и отношения стала петиция про внедрение в школьную программу креационизма и попытки её пропиарить в различных комьюнити учителей и родителей. Попробую разъяснить некоторые терминологические моменты и высказать в противовес этой петиции и её сторонников свою точку зрения насчёт того, что действительно нужно преподавать детям в школах.

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

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

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

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

Проблема в том, что мы в принципе не знаем о мире ничего абсолютно "точного" или "правильного". И никогда не узнаем. Начиная с того, что мы познаём мир через органы чувств, через электромагнитное воздействие на рецепторы нашего тела, а наш мозг на основе этой информации строит приближённую модель, интерпретацию внешнего мира. И мозг очень часто ошибается. Вспомните обманы зрения и слуха, игру в испорченный телефон и многочисленные ошибки в рассуждениях и восприятии. Всё, что мы в своей жизни видим, слышим, осмысливаем, переживаем, ... - это приближённые абстрактные модели - продукты жизнедеятельности нашего мозга. Люди издавна хотят узнавать мир, делать правильные предсказания природных явлений, управлять природными явлениями. Проблема в том, что чистое воображение людей мысленно строит ошибочные, неработающие модели мира. Наш мозг просто абсурдно сбоит ошибками восприятия. Да, это могут быть красивые или эмоционально сильные истории и объяснения, но они не позволяют уверенно предсказывать поведение окружающего мира. Воображение людей - это по большей части условный "бред" не имеющий никакого отношения к реальности, а только лишь метафорически её описывающий. Увы, но вот так мыслит наш мозг. Такова природа нашего сознания, что мы даже причинно-следственные связи можем нормально строить только лишь для примитивных визуальных бытовых вещей: когда учимся двигаться и двигать предметы; когда распознаём опасность в условиях дикой природы; в простейших социальных отношениях; к примеру, если типа тигр кого-то скушал, значит, нужно опасаться тигра и рассказать об этом другим. Наше воображение в целом находится на примитивном первобытном уровне и приспособлено под потребности выживания в дикой саванне и потребности простых социальных навыков.

За редкими фрагментарными исключениями практически все творения человеческого ума в истории ранее 16-17 веков - это вот такой метафорический не имеющий отношения к реальности бред. Они совершенно не позволяют, или позволяют крайне плохо, неточно и неуверенно предсказывать поведение явлений природы. Сказки для развлечения наших эмоций, не более чем. И Библия тут не является исключением. Ну невозможно на основе никаких древних текстов построить уверенный прогноз чего-либо - урожая, погоды, течения болезни человека, влияния продукта питания, положений планет на небе, течения беременности, экономического благополучия предприятия... Именно в этом смысле я употребляю слово “бред” - все эти модели и метафоры не работают, не предсказывают объективно и уверенно. Максимум на что способны старые тексты - это вызывать эмоции и переживания у отдельных людей и иногда, при благополучном стечении обстоятельств, давать зачастую субъективно верные прогнозы.

Всю свою историю человечество жило в таком вот неведении и угадывании относительно того, как работает природа. Да, оно методом проб и ошибок на периоде в несколько поколений постепенно училось делать что-то материальное - дома, корабли, механизмы… Но по-прежнему не было уверенности. Никакой человек не мог заранее уверенно сказать, что корабль поплывёт так-то и так-то, что мост простоит минимум столько-то лет, что пациент выздоровеет. Человечество продолжало самоуверенно играть в метафоры, поэзию, философию, чистое воображение и изредка наугад “щупать” природу. Понадобились тысячелетия для того, чтобы некоторые отдельные люди поняли и признали, что наш ум не может самостоятельно, сам по себе, понимать реальность, не может строить работающие модели, что нужен контролируемый эксперимент, постоянная и тщательная проверка на работоспособность вот этих метафорических измышлений из наших голов. Человечество начало усмирять своё эго, начало признавать своё несовершенство, понимать своё невежество и начало не доверять себе, а внимательно всё проверять. Вот так в 16-17 веках начинал развиваться научный метод познания. Зародилась наука.

Так вот, возвращаясь к смыслу слов "точный" или "правильный". "Точная теория" в науке - это модель, для которой выяснена область применимости. То есть, это модель, объясняющая и предсказывающая поведение некоего природного явления с наперёд известным уровнем достоверности, с заранее известной погрешностью или вероятностью. Вот это смысл слова "точный". Считать, что есть какой-либо другой смысл, более "точный", или в мире существует "абсолютная точность" - это тешить своё эго или самолюбие, заниматься самолюбованием и думать о возможностях человека больше, чем есть на самом деле. Только последние 3 века человечество сумело нащупать метод, который позволяет не тупо бредить, а учиться предсказывать с наперёд известной погрешностью. Какого-либо более "точного" метода у человечества просто нет. Точка. Точная ли теория гравитации Ньютона? Да! Это точная теория. Для неё известны границы, где она работает в рамках заранее известной погрешности. Точная ли теория гравитации Эйнштейна? Тоже да! Для неё тоже известны границы, в рамках которых проверено, что она работает. Теория Эйнштейна чуть точнее теории Ньютона. Но и то и другое - точные и работающие теории.

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

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

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

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

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

В третьих, нужно наконец прекратить поощрять уважение к старым текстам. Нужно наконец признать прогресс, не только технологический, но и ментальный, который совершает человечество на своём историческом пути. Знание и текст 17 века априори должны быть ценнее текстов тысячелетней давности. Статьи и учебники 21 века - должны цениться выше, чем более ранние. В “топку” поклонение старым текстам. У детей и вообще людей должно быть стремление к новому, переосмысленному, перестроенному - новые теории всегда лучше объясняют и более точны. В своих суждениях и принятии решений люди должны стараться искать самые свежие взгляды и объяснения, переосмысливать и обдумывать их. Только так происходит движение вперёд и развитие человечества.

22 мая 2018 г.

Программирование как дизайн

Нередко в команде software development проекта рано или поздно наступает момент, когда начинают вестись ярые споры и обсуждения вокруг соглашений о кодировании, об архитектурных решениях, о том, что важно, а что нет. Часто это переходит в формат холиваров или неконструктивной аргументации типа “надо делать так, потому что у ХХХ сделано так”, “надо делать так, потому что в YYY написано так”, “мне так кажется лучше и удобнее”. Попробую в этой статье немного порассуждать вокруг этих вещей. Как, мне кажется, лучше думать и рассуждать о коде и архитектуре? На что опираться в своих доводах? Начну издалека и немного в стиле капитана очевидность, но надеюсь, что к концу это прояснит мою мотивацию, поможет участникам диалога лучше понимать друг друга и конструктивнее договариваться.

Какую роль выполняют язык программирования, соглашения о кодировании, архитектура кода, вот это всё? Они выполняют роль посредника между человеком и компьютером, между программистом и алгоритмом. Это средство выражения и средство отображения мыслей, желаний человека и процессов реального мира в алгоритмы, в архитектуру железа компьютера. На это средство переноса человеческих идей в машину Тьюринга естественным образом налагаются ограничения. В первую очередь, налагаются ограничения со стороны компьютера - выполнимость, ресурсы, скорость и алгоритмическая сложность операций. Когда придумываешь программу - нужно беспокоиться о том, чтобы она остановилась, о контроле ресурсов и об алгоритмической скорости работы. Это вроде понятно. Но откуда возникла и продолжает возникать вся эта возня с языками высокого уровня, модульностью, декомпозицией, паттернами, стилями, архитектурой кода? Ведь ничего из этого в железе компьютера нет, там просто ячейки памяти и инструкции. Алгоритму ведь абсолютно не нужна архитектура или модульность, чтобы выполниться на машине Тьюринга. Зачем разработчики компилятора заморачиваются обнаружением мёртвого кода? Зачем нам средства обнаружения утечек памяти? Зачем счётчики ссылок или сборщики мусора? Зачем каждому языку программирования нужна стандартная библиотека структур данных и функций для работы с ними с гарантиями быстродействия? Зачем вот эта вся странная эволюция языков и средств разработки, длящаяся уже более полустолетия? На мой взгляд, это всё нужно из-за ограничений “архитектуры” на другом конце - из-за ограничений человеческого мозга, особенностей нашего мышления, особенностей работы наших органов чувств. Всё вышеперечисленное, языки высокого уровня, стили, паттерны, … - это всё следствия ограничений нашего мозга. Даже некоторые архитектурные решения на уровне кода, казалось бы, диктуемые практической целесообразностью, как, например, декомпозиция функций, препятствующая комбинаторному взрыву вариантов тестирования, - это тоже, как мне кажется, следствие взаимных ограничений алгоритмов и мозга. Наш мозг неспособен мысленно проверить сложный алгоритм на корректность и выполнимость, ему сложно обнаруживать мёртвые участки, нам сложно мысленно для большого алгоритма проконтролировать использование ресурсов, нам сложно отслеживать и гарантировать быстродействие - наш мозг абсолютно не приспособлен мыслить машинами Тьюринга, хотя последние и являются его творением.

У нас мизерная оперативная память - мы способны в один момент времени держать в уме не более 3-5 кусочков информации. Мы с трудом, после лет тренировок, способны мысленно, без подручных средств, отслеживать линейную логическую цепочку заключений и выводов длиной до десятка и более. Лишь малому проценту нормальных людей удаётся в уме отслеживать цепочку логических заключений одновременно по нескольким признакам - это хорошо демонстрирует известная Задача Эйнштейна и её разные вариации. Мы неспособны концентрироваться на нескольких смысловых контекстах одновременно - в этом смысле наш мозг однозадачен. Это из недостатков. Но что наш мозг умеет хорошо? Для чего он приспособлен эволюцией? Мы очень быстро привыкаем к любым однородным, регулярным и повторяющимся вещам, какими бы абсурдными они нам в начале не казались. Наш мозг прекрасно, на уровне подсознания, с параллельной обработкой, распознаёт уже знакомые / привычные образы (паттерны) в визуальной и речевой информации - и мы способны на уровне автоматизма реагировать на привычные вещи, и нам это, как правило, приятно. Наш мозг прекрасно выявляет неоднородности, отступления от правил, нарушения в однородных и привычных образах (визуальных и речевых) - вспомните это ощущение, когда само собой внезапно повышается внимание, происходит раздражение или возбуждение - глаз как будто сам цепляется за дисгармонию или исключение, не вписывающееся в общую закономерность или привычный фон. Это всё вероятно из-за того, что у нас в мозге есть специализированные “сопроцессоры” для анализа картинки (зрительная кора) и речи (области Брока и Вернике) - мозг людей специализируется на быстрой, бессознательной и эффективной обработке визуальной и речевой информации.

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

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

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

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

Пример 1. При работе с кодом нужно быстро понимать предназначение любой именованной сущности (константы, переменной, функции, …). Для этого, во-первых, придумывают стили именования, использующие визуальную информацию, - правила смешения больших и маленьких букв, специальных символов. Тогда мозг вырабатывает привычку автоматически и бессознательно трактовать изображения названий на экране. Во-вторых, полезно использовать соглашения для грамматических форм слов - придумать паттерны для использования существительных, глаголов, причастий, суффиксов, префиксов и т.п. Это эксплуатирует возможности речевого распознавания мозга. Визуальный анализ и чтение названий должны быть осмысленны и однородны. Делать отступления от внедрённых правил - плохо, это будет вызывать когнитивное напряжение и нервозность, аналогично тому, как если бы в 90% интерфейса главные кнопки диалогов назывались глаголами с большой буквы (“Сохранить”, “Отменить”, ..), но в остальных 10% использовались бы другие визуальные и грамматические формы (“запуск”, “ЗАКРЫТИЕ”).

Пример 2. Что является аргументом в пользу правила, что функции нужно стараться делать не более 40-60 строк? Ограничения мозга. Хорошо, чтобы код функции или алгоритма помещался на один экран, чтобы была возможность анализировать его изображение охватывая взглядом целиком, на полную мощность задействуя визуальную кору. Что является аргументом в пользу того, что следует ограничивать цикломатическую сложность функции? Тоже особенность мозга - линейность мышления. Цикломатическая сложность - это как раз количество линейных путей через код, то есть количество ментальных путей логического анализа алгоритма.

Пример 3. Перед программистом часто возникает вопрос “А вот стоит ли вот этот повторяющийся кусочек функционала вынести в отдельную функцию или же стоит оставить дублирование кода?”. Много написано о вреде дублирования кода. Но я бы хотел сказать, что и чрезмерное увлечение декомпозицией и небольшими функциями - это тоже нехорошо. Легко впасть в крайность и заводить функцию на каждый чих, и потом сгибаться под тяжестью их поддержки и понимания. И главное - непонятно, на какие чувства или аргументы стоит опираться при решении. Мне кажется, что и тут стоит подумать о работе мозга и полезно представлять аналогии с графическим интерфейсом. Каждая новая функция - это как бы новая кнопка или контрол. И аналогичный вопрос в графическом интерфейсе звучал бы так “Стоит ли вот на это повторяющееся действие завести отдельную кнопку/контрол, со своим дизайном и изображением? Или же стоит оставить выполнение действия через старые, возможно, более привычные, контролы?”. Думаю, чтобы принять разумное решение, нужно подумать о таких вещах как осмысленность и понятность этого действия для человека - можно ли удачно назвать одним словом или словосочетанием, атомарность действия - могут ли в процессе возникать ошибки, повторяемость, необходимость модификации… В любом случае, впадать в крайность и заводить по умолчанию на каждое действие по отдельной кнопке или функции - на мой взгляд это было бы неразумно.

Пример 4. Хороший программист при работе с кодом находится в постоянном поиске улучшений и пересмотре концепций и абстракций. А если это ещё и надо для целей проекта - код с налётом истории, с рядом недостатков, подлежит рефакторингу - то такой постоянный поиск и пересмотр становится непосредственной обязанностью программиста. Для того, чтобы оценивать удачность декомпозиции, удачность того или иного архитектурного решения, человек при работе с кодом должен ясно понимать и отслеживать зависимости. Какая функция или объект из какого модуля импортированы - это в данном случае важная информация. Значит, нужно позаботиться о том, чтобы эта важная информация была доступна на визуальном изображении кода, в локальном контексте, прямо там, где она необходима - в самой строчке, где используется функция или объект. В разных языках программирования это делается специальным синтаксисом - вызовом через точку или двоеточие, например. Чтобы человек мог охватить взглядом экран, изображение кода и сразу же легко, на уровне подсознания анализировать зависимости, отсеивать валидные и выявлять проблемные. Можно ли не выражать зависимости в коде, а полагаться лишь на возможность IDE - кликнуть на функцию, чтобы показало её происхождение? Давайте опять проведу аналогию с графическим интерфейсом. Представьте, что вы делаете интерфейс с инфографикой или табличным отображением данных. И часть данных вы показываете сразу, а другую, не менее важную, часть вы делаете доступной только в контекстном меню, выпадающем по клику - адекватный ли это интерфейс? На мой взгляд, IDE в данном случае играет роль не более чем “костыля”, слегка сглаживающего недостатки самого кода, а уж никак не интерфейсного решения.

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

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

6 мая 2018 г.

Дік Свааб. Ми - це наш мозок

Dick Swaab “We Are Our Brains”.

Книгу всесвітньо відомого нідерландського дослідника мозку Діка Свааба “Ми - це наш мозок” я читав невеличкими шматочками протягом декількох місяців. Це виявилось одне з найдовших некинутих читань у моєму житті. Не знаю, через що так сталося - чи то через мій трохи пригнічений настрій цією весною, чи то стиль книжки для мене виявився трохи нетиповим та нелегким - але в будь-якому разі ця книга однозначно заслуговує на те, щоб бути прочитаною більшістю людей по всьому світу, і в українському суспільстві також.

Як мозок пов’язаний з абсолютно всіма аспектами життя людини, так і ця книга про мозок чіпляє надзвичайно багато важливих тем, важливих як для окремої людини, так і для суспільства. Як взаємодіє мозок матері з мозком дитини під час вагітності та народження? Стать, гендерна ідентичність та сексуальна орієнтація - на яких етапах розвитку плоду вони формуються? Яка хімія статевого дозрівання, закоханості та сексуального потягу? Агресія, аутизм, шизофренія - що про них відомо сучасним дослідникам? Механізми пам’яті. Яка біологія закладена в основу моральної поведінки? Які особливості розвитку мозку зумовлюють релігійність людей? Що спричиняє присмертні переживання: бачення “тунелю зі світлом”, згадування “всього життя перед очима” та відчуття виходу зі власного тіла? Наскільки ми вільні у своїх вчинках? Наскільки педофіл як людина з дуже особливою сексуальною орієнтацією чи маніяк, як людина з порушенням емпатії та особливою агресією відповідальні за те, ким вони є? Чи за це, може, більш відповідальна їхня мати, котра палила тютюн на стадії вагітності чи вживала інші шкідливі речовини? Наскільки люди вільні у виборі того, ким вони є чи ким вони стають? Які бувають порушення мозку та хвороби? Наскільки часто та різноманітно природа “помиляється” у своєму творенні людей з особливостями та порушеннями розвитку? Хвороба Альцгеймера - як деградує мозок? Про що варто подумати заздалегідь з приводу своєї смерті або смерті близьких? Що відомо про еволюцію мозку тварин та людини як одної з тварин? Оце неповний перелік тем з книжки, щодо більшості яких, на мій погляд, в суспільстві або майже відсутня сучасна інформація, або ця інформація та дискурс є надзвичайно недостатніми.

Якщо б мене спросили, яку найкориснішу ідею можна здобути з цієї книги, то я б сказав, що це наступне. Формування мозку починається на ранніх стадіях вагітності й завершується приблизно у 20-25 років. Що раніший етап взяти, то інтенсивніші біологічні процеси відбуваються і то більший вплив на розвиток мозку та особистості людини можна вчинити. Дуже багато речей і аспектів особистості та характеру, навіть тих, які проявляються лише в підлітковому віці, закладаються ще до народження. Ще на етапі вагітності недостатнім харчуванням або вживанням наркотичних (тютюн, алкоголь та інші) чи просто токсичних (свинець, …) речовин можна спричинити надзвичайно серйозний вплив - від простого відхилення в сексуальній орієнтації чи рівня агресії в характері до багатьох серйозних захворювань та порушень. У ранньому дитинстві на вроджені аспекти накладаються типові паттерни поведінки, сприйняття світу через рідну мову, релігійність - паттерни, які потім залишаться на все життя. Сформованою особистість варто вважати лише з 20-25 років. До цього періоду - все важливо, і що раніше, то важливіше.

Отже, зміст цієї книги має важливе суспільне значення. З ним варто знайомити людей. Але є одне “але”. Особисто мені дуже не сподобався стиль, в якому ця книжка написана. Якщо коротко, то, на мій погляд, автор веде розповідь не з позицій обґрунтування та аналізу, не від бажання пояснити читачеві звідки береться те чи інше твердження, а скоріше з позицій простого викладення кінцевих фактів від авторитетної людини. Тобто я як читач не отримав абсолютно ніякого задоволення від дійсно розуміння, як науковці дійшли того чи іншого висновку, мені довелося покладатися на авторитет Діка Свааба і приймати багато речей на віру, а я цього не люблю. Так, автор - дійсно класний науковець, один з провідних дослідників мозку у світі. І дійсно, в багатьох моментах він дає для своїх тверджень начерки обґрунтувань, трошки розповідає, що були проведені такі й такі досліди, зустрічалися такі патології… Але все одно, на мій погляд, він постійно дозволяє собі надзвичайно багато категоричних необґрунтованих тверджень. Якщо б я не читав ще книжки та наукові статті на цю тему і багато фактів не знав вже заздалегідь, то, чесно кажучи, в мене як у інколи доволі прискіпливого читача виникли б претензії на кшалт “автор забагато собі дозволяє у висновках та твердженнях”. Хочу ще раз уточнити, що в мене отакі претензії лише по стилю, я не зустрів у книжці жодної неузгодженої з іншими джерелами інформації. Тобто книжка, дійсно, корисна і правдива, але на жаль для впливу на читача, мабуть, потрібна певна неабияка довіра до автора. Такі справи.

Але в будь-якому разі зміст, теми та цінності, що несе книга “Ми - це наш мозок” варті того, щоб познайомитися з ними.