June 2nd, 2019

2019

Системная неконфа, 1 июня 2019

Сегодня мы провели системную неконфу -- провели день и вечер на крыше в неформальных разговорах. Сначала собрали интересы для обсуждения -- и сразу стало очевидным, что за день столько не обсудить. Из списка интересов стало понятно, что собравшихся тянет обсуждать не столько системное мышление или менеджмент, сколько экзистенциальные проблемы с формулировками типа "как быть счастливым" или "как не быть несчастным". После обеда дискуссия так и свалилась в эти обсуждения -- и самыми активными в них были не наши выпускники (радует это, или печалит тут отдельный вопрос). Я дообсуждался до 21:30 и сильно замёрз, днём-то было жарко, а вечером на крыше стало ближе к 15°. Зато свежий воздух!

Я сам там рассказал про терминологию в новом учебнике -- например, про практику как поведение оргроли и сервис как поведение оргзвена. Вот оргроли в прежнем варианте учебника не было. Но это ж те самые "стейкхолдеры", функции/поведение которых -- практики/деятельности с их специфическими интересами и оценками этих интересов, и которые совершенно необязательно должны реализовываться отдельными людьми. Проектная роль и оргроль оказываются одной природы, разве что в проектной роли мы ставим акцент на проект по созданию целевой системы (один, но думаем о нём как при проектировании, "в классах"), а в оргроли ставим акцент на деятельность в рамках множества проектов. Это различие проектных ролей и оргролей оказывается несуществующим -- роли, они роли и есть, играет ли десяток ролей один организованный внутри себя человек или десяток организованных человек играет одну роль. И мышление тут такое же, как мышление про роль гвоздезабивателя, которую играет либо молоток, либо камень, либо микроскоп. Обеспечение -- это оргроли и оргзвенья, а поведение обеспечения -- это жизненный цикл как практики/функции оргролей и работы/сервисы оргзвеньев. Это уже отражено в тексте учебника.

Некоторое время пообсуждали неотменяемое правило 10тыс. часов. Что толку заниматься курсами, если они экономят 1000 первых часов из этих 10тыс.? Ну, экономия 1000 часов и впрямь небольшая, 10% от всего срока обучения. Но это крайне важные 10%: на первых 10% срубается огромное количество людей, просто бросают обучение. А тут они потратят 1000 часов и отвалятся потом. Сколько дойдёт до полных 10тыс. часов? У меня интуиция подсказывает, что всё равно дойдут единицы, но этих единиц будет вдвое больше: это те люди, которые не отвалились на первом сэкономленном тысячечасовом шаге. А если при этом иметь нормальную знаниевую платформу, то и оставшиеся 9тыс. часов можно существенно подсократить, это ещё больше увеличит КПД. Эффективные курсы ведут к масштабируемости просвещения (тут можно ещё пообсуждать, что мы делаем -- просвещаем или образовываем. Просвещение это обеспечение передачи массовой передачи SoTA компетенций населению -- акцент на передаваемое содержание, а образование это обеспечение крутости личности -- акцент на личности. Как всегда с давно известными словами, тут терминологических мнений миллион, есть и полностью противоположные трактовки).

Отсутствие интереса к каким-то системным уровням в платформе (в том числе просвещенческой/образовательной) внутри собственной головы -- это ведь нормальная вещь. Как поднять интерес к нижним уровням знаниевого стека -- к методологическим дисциплинам? Дальше оказывается, что о существовании таких интересов нужно хотя бы сообщить, чтобы дать шанс появлению этого интереса у конкретного человека. Не знаешь об онтологике -- с чего бы ей интересоваться?! Не знаешь про системное мышление -- нет интереса к отсутствующему в уме, поэтому ничего и не учим. Вот это разбирательство с интересами, инженерия требований к образованию, "инженерия интересов" -- как раз и обсуждалось. Идея в том, чтобы отследить не абстрактную историю интереса в культуре (жизненный цикл динозавров как эволюционирующего вида -- откуда вообще берутся новые интересы, и куда они потом исчезают), а жизненный цикл интересов в конкретной голове человека (жизненный цикл отдельного динозавра -- откуда в голове человека берутся новые интересы, и что с ними потом происходит). Инженерия личностных интересов -- это где-то близко к началу этого жизненного цикла, затем нужно стать компетентным в практиках работы с этими интересами, а затем "жить по интересам" -- применять практики, работающие с интересом, играть тем самым проектные роли. Интересом же (озабоченностью, concern) может быть что угодно. То есть этот разговор привязывает concerns к проблемам образования/просвещения.

Соотношение exploration и exploitation (сколько времени учиться, сколько времени жить с выученным) -- ещё одна большая сквозная тема, всё время поднималась. Достаточно ли имеющихся интересов, или их лучше иметь побольше, и искать поэтому подольше? Можно ли чему-то выучиться, и дальше пользоваться? А если не пользуешься -- повторять выученное, или выучить что-нибудь ещё (и потом не пользоваться уже новым выученным)? В теории, заметим, для explotation против exploration нет правильного соотношения, проблема не решаема.

Интересный вопрос был различия прокрастинатологии (общей) и образовательной прокрастинатологии. Предположим, что инженерия интересов выполнена, и мы хотим учиться какой-то практике. Хотеть -- это не учиться! И тут прокрастинатология в её текущем виде "не прощёлкивать текущие задачи" оказывается не про изменение образа жизни (выделение достаточного времени на обучение ежедневно, иначе скорость забывания будет больше скорости обучения), изменения ролей в жизни (новые практики -- новые роли, и практикование тоже нужно организовывать, это тоже изменение образа жизни), которые нужны для образования. И поэтому мы говорим о какой-то самодисциплине в образовании/образовательной прокрастинатологии/методе самоорганизации себя на образование. Кирилл Гайдамака сделал заявку курса "как учиться, чтобы научиться" (ну, или по аналогии с "как доводить дела до ума", "как доводить учёбу до ума", то есть чтобы прямо в голову).

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

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

Выживало наибольшее общее кратное: в счастье и телесности понимают все, а вот в предложенных для обсуждения вычислительном мышлении, SysMoLan и прочих таких специальных штуках понимал мало кто. Вот эти темы никто и не поднимал. Моё краткое выступление про терминологию системного мышления не вызвало никаких комментариев, увы. Small talk/светские беседы школы системного менеджмента оказались о счастье, не больше и не меньше -- а не о системном подходе и не о менеджменте (но хотя бы о школе, "как научиться счастью", "как научиться отсутствию несчастья").

Была и попытка уйти от этих "проблем счастья" и просто перечислить какие-то большие классы проблем, которые удалось решить присутствующим, и которые существенно подняли качество их жизни в последние годы. Например, поправка здоровья (да! это важно для счастья!), но и умение решать какие-то классы задач, держать больший объём внимания, удерживать бОльшую сложность, юзать больше экзокортекса/экзотела для этого всего, омни/многоканальность коллаборативных связей, участие в более сложных коллаборациях, прорывы в коммуникациях, овладение трансдисциплинарностью.

Ничего, мы повторим это мероприятие. И таки пообсуждаем системный подход. Например, я рассказал про пробематизацию системного мышления как аристотелевской физике: в риторике системного мышления обычно "взаимодействие систем", но когда говорим о функциях и сервисах систем, то почему-то акцент на действии, а не взаимодействии. Палец давит на стол, но стол не давит на палец. Станок обрабатывает деталь, но деталь обрабатывается станком, и нет "системного" способа обсудить взаимодействие -- в древних "биологических" вариантах системного подхода только так "в обе стороны" и понималось, а вот современные инженерные варианты системного мышления таки односторонни (все эти subject-object-predicate как раз отражение этой односторонности). То есть обсуждать взаимодействие можно, но удобной терминологии нет. Или есть разные тренды в углублении разделения образовательного труда -- все эти расщепления на тьюторов, педагогов и т.д.. Вот такое бы и пообсуждать на неконференции (и даже успели эти темы поднять!). Но нет, это непопса, и поднять-то темы можно, но пообсуждать -- уже нет. Мне после сегодняшнего дня уже понятно, что исследования возможны на таких неконференциях только в области попсы, то есть популярного и доступного всем содержания. Здоровье (и без терминов и спецлитературы, только "общими словами"!), обучение (без этих ваших западных академических теорий и мудрёных слов!), и прочий small talk. Получилась светская тусовка, весьма интересная, networking в количестве, а исследовательского захода не получилось.

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

UPDATE: обсуждение в фейсбуке -- https://www.facebook.com/ailevenchuk/posts/10215528655143554
2019

О предмете курса вычислительного мышления

Вычислительное мышление/computational thinking/информатика -- просто мышление с использованием понятий computer science, примерно так же как "физическое мышление" связано с физикой-наукой или химическое мышление связано с химией-наукой. Термин появился в середине 80х, когда computer science потребовалось внести в школьные программы (в США и СССР -- в США назвали computational thinking, в СССР -- информатика), для обсуждения с организаторами образования нужно было делать акцент не на содержании предмета, а на навыках мышления, которые даёт знание нового школьного предмета. Тогда вычислительное мышление/информатика понималось прежде всего как навыки планирования каких-то действий, возможно с условиями (то есть по факту это была императивная алгоритмика). Но по мере того, как акцент сдвигается с императивной алгоритмики на другие виды вычислений/inference/evaluation, вычислительное мышление становится просто мышлением об операциях с моделями -- преобразовании одних моделей в другие, выводе на базе информации моделей, моделирование в части разбиения на уровни абстракции в моделировании и т.д.. Вот тут я делал разбор отличий научного, инженерного, вычислительного мышления и ссылался на июльскую публикацию 2018г. в Communications of ACM -- https://ailev.livejournal.com/1439141.html. Вот 2006 год, Jeannet Wing, про то же самое и там же -- https://www.cs.cmu.edu/~15110-s13/Wing06-ct.pdf

Один из трендов -- вычислительное мышление скатывается к пониманию его как "просто мышлению", "мыслительными вычислениями", независимо от природы компьютера. Мозг человека тоже подойдёт, но полно работ и о вычислениях какой-нибудь плесневой слизи, типа https://www.sciencedaily.com/releases/2014/03/140327100335.htm. Серьёзным вопросом последних лет в вычислительном мышлении стал вопрос о включении в computer science алгоритмики вычислений/вывода на дифференцируемых программах/differentiable programming и далее дифференцируемых моделях в целом/differentiable modeling -- "дифференцируемое всё: от чёрно-белой модели мира к рябенькой", https://ailev.livejournal.com/1464563.html.

Just as functional programming involves reasoning about and expressing algorithms using functional patterns, differentiable programming involves expressing algorithms using differentiable patterns. Many such design patterns have already been developed by the deep learning community, such as for handling control problems or sequence and tree structured data. This post has introduced a couple of new ones, and as the field matures many more will be invented. The resulting programs are likely to make even the most advanced current deep learning architectures look crude by comparison. -- https://fluxml.ai/2019/03/05/dp-vs-rl.html

Karpathy про Software 2.0 тоже ясно написал, что "градиентный спуск лучше пишет код, чем программисты". Тренд понятен. А ещё моделирование данных: непонятно, где там программирование, а где уже нет (работа с кучерявыми типами данных ведь без разницы, в базах данных, или в переменных — и там тонкая разница про "языки запросов" и "обычные языки").

Коннективистские модели тем самым тоже попали в предмет вычислительного мышления. Авторы алгоритмов обучения нейронных сеток ЛеКун, Бенжио и Хинтон стали лауреатами Тьюринговской премии этого года -- https://awards.acm.org/about/2018-turing, то есть искусственный интеллект (занимающийся мышлением-не-в-человеке) признали частью computer science и software engineering в профильной ассоциации, Association for computing machinery. Я вот уже делал вывод (https://ailev.livejournal.com/1469822.html), что по мере ухода всей науки/science в компьютеры она будет называться learning, а в пределе -- self-supervising learning, а по мере ухода инженерии в компьютеры она будет называться search. Всё это будет алгоритмика обучения и поиска, computer science, а мышление на эти темы -- computer thinking.

И это далеко не весь список "программирований". Вот, например, квантовое программирование -- https://en.wikipedia.org/wiki/Quantum_programming

Это совершенно не означает, что забывается классическая "информатика", про работу агентов (людей и компьютеров) с текстами и кодами -- http://ailev.livejournal.com/1008054.html. Там тоже мутновато получается, ибо в сферу информатики попадает и лингвистика, и когнитивистика, и философская логика, и даже биосемиотика. А классическая computer science занималась описанием перекодирования: как из одного кода получить другой код. Код -- это формальное в части семантики и синтаксиса использованного языка представление какого-то содержания. А текст -- это вообще "всё есть текст". И одна из основных практик информатики тем самым -- форматизация и деформализация (фордеф как тип софта для такой практики, как модем/модулятор-демодулятор), https://ailev.livejournal.com/969337.html. Информатика должна быть информатикой-в-большом, распределённым моделированием мира. А программирование-моделирование-онтологизирование суть одно, и это и есть информатика/computational thinking, https://ailev.livejournal.com/1167761.html. Поэтому тематика вычислительного мышления оказывается близка к тематике и системного моделирования, где у нас есть какие-то размышления про System Modeling Language, SysMoLan, https://ailev.livejournal.com/1443879.html (заодно понимаем, что модели SysMoLan могут быть вычислимыми/executable, вероятностными, дифференцируемыми -- это как раз обсуждается в рамках вычислительного мышления, а не системного моделирования! Из системного моделирования там как раз онтология системного мышления, а собственно моделирование и вид модели, включая обсуждение идей про теорию категорий как основу представления моделей и всё остальное, что там было наобсуждено -- это вычислительное мышление).

В курсе вычислительного мышления должен быть какой-то более-менее попсовый рассказ про разные "программирования" — разные модели вычислений. Императивное, функциональное, объектное, вероятностное, дифференцируемое и т.д.. И data science, где обсуждаются разные алгоритмы работы с данными прежде всего -- хотя предметом вроде как и являются сами данные. Вообще, ещё Дейкстра сказал, что программа = алгоритм+данные. А данные стали весьма и весьма кучерявыми: поглядим на базы данных! Domain driven design — это ж всё про данные, но вроде как про разработку программ! Текущее программирование в большинстве своём -- простые алгоритмы над сложными данными, утрамбованными в какие-то базы данных. Простые алгоритмы вывода/оценки/вычислений над сложными моделями мира.

Курс вычислительного мышления, по идее, должен втыкаться в линейку методологических курсов "мышлений": рядом с онтологикой, научным мышлением, системным мышлением и должен учить абстрагированию и композиции/декомпозиции моделей мира с выполнением потом вычислений/вывода/оценки моделей.

Вот этот акцент на моделирование и является важным. "Алгоритмика, информатика, моделирование, далее везде" -- https://ailev.livejournal.com/1265432.html про обучение информатике детишек на примере четырёх роботов (платоновский робот, робот-из-программы, физический робот-на-коврике, робот-из-возможного мира где-то в космосе). И этот подход продолжает реализовываться, см. доклад Кушниренко и Райко "Дошкольная информатика без компьютера" (видео второго доклада https://vimeo.com/337031069, слайды http://g-l-memorial.ice.ru/files/941738/Kushnirenko_Raiko_2019.pptm).

Собственно, когда-то SICP (Structure and Interpretation of Computer Programs вышел в 1979 году, 40 лет назад) был "фундаментальным курсом" для computer science (https://mitpress.mit.edu/sites/default/files/sicp/index.html), но он был уволен из-за маленькой неувязочки: курс реально помогал постановке вычислительного мышления, но был абсолютно бесполезен для построения на его основе дальнейших курсов программирования или каких бы то ни было других -- что-то в мире пошло не так с ролью функционального программирования: In short, sicp, Scheme, and functional programming don’t prepare students properly for other programming courses and thus fail to meet a basic need -- https://www2.ccs.neu.edu/racket/pubs/jfp2004-fffk.pdf. Название этой критики SICP ровно то, что нам нужно -- The Structure and Interpretation of the Computer Science Curriculum (Matthias Felleisen, Northeastern University, Boston, MA, USA, Robert Bruce Findler, University of Chicago, Chicago, IL, USA, Matthew Flatt, University of Utah, Salt Lake City, UT, USA, Shriram Krishnamurthi, Brown University, Providence, RI, USA).

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

На первых порах нужно не столько учить, сколько создать сам предмет/дисциплину. Предмет создаётся в форме учебника, то есть в форме учебного курса -- но поначалу с акцентом не на лёгкость обучения (instructional design), а с акцентом на "все нужные понятия под одной обложкой". Я учебник системного мышления так и сделал: вытащил из десятка инженерных стандартов кусочки про системы, и объединил в связное изложение. Вот и получилось "Системное мышление 2019". С computer science тоже нужно что-то подобное сделать. Выдрать правильные фундаментальные/методологические идеи из разных мест и изложить связно текущий state-of-the-art под одной обложкой -- с надеждой, что над этими идеями можно будет потом строить кругозорные курсы software engineering, data engineering, neural networks engineering и т.д.

И тут два пути: ждать каких-то Великих Гениев, или самим объявлять себя такими и делать. С системным мышлением я просто взял, и сделал -- хотя до сих пор не закончил, работа-то началась по факту осенью 2007 года, когда я столкнулся с системной инженерией и тамошним вариантом системного мышления. С онтологикой и научным мышлением — это делает сейчас Прапион Медведева (https://ailev.livejournal.com/1461525.html). Понятно, что это курс не для специалитетов/магистратур, а для бакалавров -- то есть курс не должен предполагать, что выпускник станет потом software engineer или data scientist. Но что искусственный интеллект не результат работы алгебраических торсионных полей выпускник такого курса должен знать. И потом использовать знание материала курса для продолжения обучения более прикладным инженерным дисциплинам, самым разным.

С вычислительным мышлением самая интересная тусовка людей, знакомых с классикой computer science и всеми этими новомодными заходами на другие модели вычислений собралась вокруг языка Julia -- русскоязычная публика обсуждает проблемы языка в телеграм-чате тут: https://t.me/JuliaLanguage. Почему Julia? Потому что Julia заточена под моделирование. Вот, например, заход на инженерное моделирование: https://ailev.livejournal.com/1366789.html. А вот заход на differentiable programming и искусственный интеллект, это ж по сути дизайн-цель языка: https://julialang.org/blog/2018/12/ml-language-compiler. У меня простая мысль: строить новый курс на базе Julia примерно так же, как SIPC строился на базе Scheme.

DISCLAIMER: по сути дела, это не текст с собственным содержанием, а аннотированный набор ссылок с текстами, откуда и нужно брать идеи для дальнейшего продвижения в создании курса. Без какого-то знакомства с материалами, изложенными по этим ссылкам (а внутри текстов по этим ссылкам есть и много других ссылок!), текущий пост -- просто многабукофф, провоцирующих споры о терминах.
2019

Включение методологических курсов в прикладной куррикулум

Как бы мы вставляли наши методологические курсы в прикладные (например, магистерские) образовательные программы? Краткий ответ: as is, без традиционных доработок для соответствия прикладной предметной области. У нас в этом плане курсовой модуль с чётким прикладным интерфейсом. Теоретический аппарат системного мышления и других дисциплин один и тот же для любых специализаций – хоть образовательные среды делать, хоть медициной заниматься, хоть фемтосекундные лазеры разрабатывать. Мы учим студентов основам мышления, то есть учим думать, мы не учим именно прикладным практикам, в этом наша сила.

Мы просто считаем, что должны быть написаны учебники «траектории полёта болонки, если её пнуть», «траектории полёта теннисного мяча, если его кинуть» -- нет, нужно один раз рассказать базовое знание про траекторию полёта физического тела в курсе физики, чтобы понять: все они полетят по параболе (включая полёт фемтосекундного лазера, если его уронить). И с системным мышлением то же самое: рассказываем о системах один раз в курсе системного мышления, а приложение к цифровой трансформации, медицине, фемтосекундным лазерам или даже танцам не требует отдельного учебника, отдельного курса.

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

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

И это проблема: учить методологическим дисциплинам хочется пораньше, ещё в школе, а максимальную пользу они могут нанести потом -- когда будет осмысленная рабочая, а не учебная прикладность. Например, даже не в бакалавриате или магистратуре, а на курсах повышения квалификации (там, где ожидается наоборот, не базовое методологическое знание, а самое что ни на есть прикладное знание, "трёхдневные курсы" -- бесполезные без базового знания).