Преподаватель, разработчик и эксперт в Node.js Тимур Шемсединов: "Нынешние разрабы потеряны для будущего навсегда"

Преподаватель НТУУ «КПИ им. И. Сикорского» и Киевской школы экономики, идеолог, организатор и архитектор программистского сообщества, образовательного проекта и технологического стека Метархия, энтузиаст Open source, специалист в области облачных технологий, программной инженерии, интерактивных сервисов, баз данных, архитектуры корпоративных информационных систем, сетевых протоколов, метапрограммирования, телеметрии и промышленной автоматизации, асинхронного и параллельного программирования, системной интеграции...

Тимуру Шемсединову — 41 год, и 26 из них он занимается программированием по принципу «ни дня без строчки». Побеседовали с Тимуром о его пути в IT и за жизнь.

Дисклеймер: JavaScript в интервью упоминается 40 раз, Node.js — 16 раз, Метархия — 42 раза.

Беседа получилась долгой, а текст длинным. Если вам совсем не хочется читать все-все — держите «таймкоды»:
— Как человек становится айтишником
— Про Big Data и суперкомпьютеры в 1990-е
— Про хаки и кряки как мерило успеха
— «JavaScript — это не язык моей мечты»
— Против квадратно-гнездового мышления в программировании
— Все будет Метархия
— «Нужно делать так, как нужно. А как не нужно, делать не нужно»
— «В Украине технологических компаний вообще нет»

— Когда я сказал главреду DOU, что хочу сделать интервью с Тимуром Шемсединовым, то реакция была примерно следующей: «О, Тимур? Классно! Только он нас не любит». Тимур Гафарович, за что ты не любишь DOU?

Я об этом первый раз слышу, и почему так говорят, даже не догадываюсь... Хотя, возможно, когда-то где-то я жестко высказался в комментариях в стиле «Ё**ного IT». И, например, от этого пошли слухи, что я вообще никого не люблю. Но это не так, я всех люблю! Только когда глупые вещи говорят с умным видом — вот этого точно не люблю.

— Как человек становится айтишником? Расскажи о своём «превращении в программиста» с самого начала.

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

Вторым источником моего интереса стало то, что еще подростком я совершенно случайно попал в реальные промышленные проекты. В «Киевэнерго», например, или в Институт прикладного системного анализа КПИ, где мы делали медицинские системы и базы данных для Министерства чрезвычайных ситуаций. А в Институте системных технологий занимались автоматизацией нефте- и газопроводов для «Укртранснафты», «Приднепровских магистральных нефтепроводов». Когда видишь, что результаты твоего труда приносят пользу огромному количеству людей, большим организациям, целым индустриям, а тебе в это время всего лишь 15–18 лет, то это производит неизгладимое впечатление на подростка.

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

— Ты из творческой, интеллигентной семьи: художники, архитекторы, народные просветители, преподаватели столичных художественных и архитектурных вузов... Как тебя, человека высокой гуманитарной культуры, угораздило попасть в технари, да ещё и в инженеры-программисты?

Маленький Тимур с мамой НаташейМаленький Тимур с мамой Наташей
Я учился в уникальной школе — № 195 им. Героя Советского Союза В. И. Кудряшова, что на Березняках в Киеве. Там у меня уже с 5 класса было серьезное программирование, причем сразу парами, по два урока подряд. Это начало-середина 1990-х годов, когда компьютеры — та еще диковинка. И нас, 5-6-7-классников, сразу же окунули в серьёзные задачи: писать локальную сеть и объединять все эти «Спектрумы», «ЕСки» и «Искры». Для этого школьники паяли сетевые карты, проектировали схемы, кто-то делал софт для «Спектрума», кто-то — для IBM-совместимого компьютера, а я писал на ассемблере драйвер сетевой карты. И всё это по книжкам, журналам, вырезкам, переводным статьям инженерным.


В 1994–1996 годах наш учитель Валерий Моисеевич Власенко рассказывал про базы данных: связи, таблицы, поля, нормальные формы. А параллельно с этим я учил ассемблер, алгоритмы по книжкам Дональда Кнута «Искусство программирования», изучал сразу несколько разных типов машин. Тогда не было еще никаких «линуксов» с «виндовсами», мы работали на DOS и UNIX, были и более старые ОС, которые никто и не вспомнит сегодня: РАФОС, ФОДОС, БК.

И мы, школьники, занимались всем этим: кто-то делал русифицирование импортных программ. Например, Norton Disc Doctor, открывая в HEX и заменяя английские слова прямо в 16-ричном коде на русские и потом пробуя на «работает-не работает», сохраняя десятками копий, переписывая-перезаписывая всё это дело. Кто-то декомпилировал что-то в ассемблере, правил, разбирал «на винтики» разные программы и утилиты. Творили, что хотели! У школьников существовал живой и пылкий интерес к машинам и программам — мы были готовы на что угодно, чтобы лишь прикоснуться к компьютеру, поработать хоть полчаса с машиной. Запилить игру примитивную с танчиками-самолётиками, переопределив знакоместа в знакогенераторах, соорудив из буковок танк, который стреляет точкой по буквенному же самолету, а тот на танчик сбрасывает бомбочку из буковок, и всё это движется, сталкивается, стреляет, отстреливается, реализует различные тактики... И это было поголовное увлечение.

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

Про Big Data и суперкомпьютеры в 1990-е

— Как у тебя появился первый ПК и когда ты начал работать в серьезных проектах с серьезным софтом и «железом»?

Сейчас расскажу. Эти пары по информатике и программированию были два раза в неделю. В результате те, кому это было интересно, сидели в компьютерном классе безвылазно и их даже отмазывали от других уроков. Например, я хорошо знал геометрию, поэтому договорился с учительницей, что буду заниматься геометрией, но через информатику: стану решать геометрические задачи на компьютере, а потом покажу и расскажу, как и что я сделал. И я написал на BASIC генератор геометрических задач по шаблонам: задачи с треугольниками, например, где рандомились входящие данные, параметры, а школьник их решает, потом вводит результаты в программу, и комп проверяет, правильный ли ответ.

Впрочем, у нас не было даже такого направления, как «языки программирования»: мы учили одновременно и вперемешку ассемблеры, BASIC, Clipper, dBase — всё, что попадало под руку. А потом знакомый инженер из Германии — Джордж Зик, он работал на фирме, которая для Nintendo делала портативную консоль Game Boy, — привез мне на дискете компиляторы Pascal и C. У меня их в Киеве не было. Их, конечно, можно было пойти на «Петровку» и добыть, но мы тогда ещё не особо знали даже про «Петровку»... Он же привез мне и свой 286-й компьютер. Это был такой железный чемоданчик, который он сам спаял. Внутри было одновременно несколько графических карт — Hercules, EGA и CGA! А на передней панели был тумблер, которым эти разные, не совсем совместимые между собой карты переключались. Они использовали одну видеопамять, но разные контроллеры. Вот так он всё спаял, что я даже сейчас не представляю себе схемотехнику этого решения, тем не менее всё работало, хоть иногда зависало. Но можно было перезагрузиться в любом случае и работать на той видеокарте, которая нужна.

В то время не все программы работали на любом «железе». Если в одной машине есть целых три видяхи — это как будто у тебя три компа сразу или какой-то суперкомпьютер! Это и был мой первый комп в 1994 году — самодельный, паяный, собранный в чемоданчике, с 4-цветным LCD-экраном.

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

Где-то на антресолях у мамы до сих пор лежит пачка грамот и дипломов за первые-вторые-третьи места. Тогда же меня заприметил в КПИ профессор ИПСА Валерий Яковлевич Данилов. В КПИ делали софтины для медицинских систем и захоронения ядерных отходов. И меня, малого, сразу к этому серьезному делу привлекли. Там я уже начал работать на 486-х машинах с dBase, Clipper, FoxPro, Delphi, С++ Builder. Сетевухи тогда были на коаксиальных проводах, а модемы можно было «пропищать» самостоятельно. Уже в 1997 году появились модемы посерьезнее, вплоть до 36 Kbps, но интернет тогда был практически пустой.

— Сеть же была «безвидна и пуста, и тьма над бездною». Что компьютерщики делали в этой пустоте?

Подключались друг к другу по телефонным сетям! Станции разные были BBS, эхоконференции по базам данных, например. FidoNet был, X-NET, я был активным фидошником. Пионеров сетевых коммуникаций было немного, сегодня некоторых встречаю на «Хабре», в GitHub. Периодически «олдовые» фамилии и никнеймы всплывают.

Или приходишь на клуб архитекторов и встречаешь там человека, фамилию которого помнишь ещё из Fido. Тогда были Yahoo, AOL, AltaVista, несколько программистских ресурсов: «Открытые системы», interface.ru, CIT Forum, Usenet (эхоконференции на базе интернета), очень мало сайтов было.

— Начало твоего обучения в университете практически совпадает с зарождением интернета в его привычном виде. Чем ещё, кроме сетевой активности, ты занимался в вузе?

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

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

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

— Рассказать всю правду!

Именно! Кто, где и чего нахимичил, скрутил-накрутил, врезался в трубу и так далее. То есть полный баланс ГТС в Украине никому не нужен. Но сбор информации и удаленное управление — это очень удобно, конечно. Тем не менее для меня это был огромный опыт работы в коллективе инженеров и ученых, которые работали в НИИ, преподавали на кафедре. Это Юрий Тимошин, Владимир Галаган, Валерий Ярченко, Михацкий, Шелепов, Киселев, младшие товарищи Денис Креп, Ярослав Лукьяненко.

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

До окончания вуза я написал много научных статей, за которые мне не стыдно до сих пор. И в НИИ системных технологий я работал вплоть до его закрытия, кажется, в 2017 году. В общем стажа работы в КПИ у меня, если даже по трудовой книжке посмотреть, больше 20 лет. Но с 2005 года госпроекты и разработки отечественных решений в сфере ПО для нужд промышленности потихоньку с ФИВТа начали забирать и отдавать коммерческим фирмам, а то и иностранным вендорам, которые умели хорошо лоббировать, откатывать и инвестировать...

— Кстати, что значит «платили хорошо» для IT конца 1990-х — начала 2000-х?

Ты знаешь, я даже не помню порядок цифр! Помню только эмоциональное ощущение, что эти шальные деньги вызывали у меня чувство недопонимания. Я не знал, куда их тратить, насколько моя зарплата адекватна или неадекватна затрачиваемым усилиям... Я просто работал над тем, что мне было интересно, иногда это приносило много денег, а иногда очень мало. Я вообще не думал о деньгах, потому что был увлечен по самое не могу. Думалось примерно так: «Я занимаюсь любимым делом, а мне еще за это платят?». Причем зарплата не всегда была официальная, что-то платили в конверте. Наверное, сравнивая с тем, к чему разработчики привыкли сейчас, то это было мало. Но всё равно это были такие суммы, с которыми я просто не знал, что делать, и просто отдавал семье.

Но потом нефтегазовые темы в КПИ накрылись, отечественные решения перестали разрабатывать, закупив в «преклонении перед Западом» готовые иностранные разработки SCADA-систем и учета от SAP, Siemens и так далее.

— И на что ты переключился?

А я параллельно с этим из чистого интереса кодил еще свой сетевой протокол и свою СУБД, то, что сейчас называется NoSQL. Вот где-то с 1998-го по 2002 год с несколькими коллегами сделали NoSQL-решение на Borland, которое работало очень шустро. Ведь какие тогда СУБД были? Informix, InterBase и Oracle. А тут мы выкатили маленькую встраиваемую СУБД, которая попадает вся в исполняемый файл, и её не нужно инсталлировать, она сверхбыстрая, все в памяти держит, но, конечно, не масштабируемая. Но это и не особо нужно было пользователям.

Тогда на СУБД можно было сделать кластер только при помощи репликации. Сейчас — с использованием multimaster, но тогда о таком никто даже мечтать не мог. Ни о каких алгоритмах консенсуса, синхронизации или сетевых блокировках, распределенных транзакциях никто не думал. Просто делали репликацию, и эта репликация становилась еще одним местом, откуда можно прочитать копию данных, которая с отставанием, но работает. Разве что таким образом масштабировались. Сейчас это называется шаблон CQRS — разделение чтения и записи.

В общем, мы тогда вместе с Денисом Крепом и еще несколькими людьми сделали и СУБД, и сетевой протокол, которые использовались в нескольких компаниях, например в «Правекс-Банке». Её использовал долгое время Ярослав Лукьяненко, который существенно дописал эти СУБД и протокол, когда я уже перестал этим заниматься.

Короче, проект жил своей жизнью, и оказалось, что мы сделали то, что называется Open source, хотя мы тогда и определения такого не знали. Казалось, а как можно по-другому? Написали и выложили в интернет — пользуйся, кто хочет. Мы даже никакой лицензии к нему не прикладывали. Исходники? Ну вот они, бери, если нужно. Даже мысли такой не было, что кто-то может подсмотреть мой код, использовать его и застолбить за собой под каким-то названием или брендом. Это было такое «дикое свободное ПО» по «дикой лицензии».

Про хаки и кряки как мерило успеха

— «Шальные девяностые» закончились и начались «жирные нулевые». Госзаказ иссяк, свободное ПО берет, кто хочет, а ты — вольный стрелок на зарождающемся тогда «IT-рынке». Как происходило твое встраивание в рынок?

Сначала я работал в компании «Внешэкономконсалтинг», где с командой сделал ПО «Проверки», экспертную систему по взаимодействию с государственными контролирующими органами. Она подсказывала разным типам предприятий, как в тысячах разных ситуациях вести себя с несколькими десятками контролирующих госорганов. Вела клиента по алгоритмическому пути, где он отвечал на вопросы, а в результате получал развернутые советы в виде статей и рекомендаций, шаблоны документов и так далее. И эта программа в своё время вытеснила с рынка года на 2–3 аналогичный продукт LIGA «Искусство обороны».

Это был успешный бизнес, на котором я подсмотрел, как сравнительно небольшие усилия приводят к появлению массового продукта, которым пользуется огромное количество людей. Программу взломали и продавали её клоны на лазерных дисках на рынке «Петровка» и радиорынке «Караваевы дачи», выложили её на торренты с хаками и кряками всякими!

Тогда я понял, что если тебя «крякают» — то это самый настоящий успех! Если люди это крадут и распространяют — это действительно то, что им нужно и полезно. И осознал, что ни в каком случае нельзя менять алгоритмы генерации серийных номеров, чтобы кряки у людей не просрочились и они получали все необходимые обновления. Я убежден, что, если кто-то хочет заплатить — он всегда заплатит из благодарности или желания поддержать дальнейшую разработку, а кто не хочет — не заплатит никогда. Но из-за своего упрямства или откажется от продукта, или же будет плодить сотни кряков, внося сумятицу, конфликты версий и принося вред общей экосистеме.

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

— Например?

Какие ОС? Ну а какие у всех тогда были «взломанные» операционные системы, о которых говорить неприлично?

— А-а-а... Ок.

Вот сегодня я практически уверен, что компании, разрабатывающие операционные системы, сами же и выпускали хаки и кряки своих решений. Потому что человек, а особенно наш человек, — он...

— ...Падок на халяву.

Даже не столько в халяве дело. Наш человек имеет стихийно «махновское» сознание. Если он взял что-то силой, скачал, купил за копейки у пиратов и может этим пользоваться — он это ценит и любит. А если заплатил по счету, сколько сказал официальный продавец, — то где-то тут ты лошок... Вот есть такой момент. Не знаю, из 90-х ли это годов, или гораздо более глубокий инстинкт...

Впрочем, отвлеклись. После «Внешэкономконсалтинга» я начал работать вместе с Димой Хмаладзе. Мы сотрудничали сначала с компанией Galaxy, а позже с IT-Adaptor и Real Time Intelligence, где делали медицинские информационные системы для американских клиник и домов престарелых по стандарту Minimum Data Set.

Со временем стали заниматься самой разной автоматизацией бизнес-процессов, в том числе складских и логистических систем, трекинга грузов и подвижного состава с датчиками RFID и GPS, картографией, отслеживанием параметров активности и так далее. С этими темами я работал до 2010-го. Мы выпустили тогда несколько софтов, которые даже вполне себе массово использовались, а ведь это — американский рынок, где примерно 85%, если не 95%, всего написанного программистами кода и придуманных ими решений никогда не используется на практике, а сразу идет на мусорку! При этом все довольны, всем заплатили, всех похвалили, а на вопросы о том, будет ли написанное использоваться, нужна ли поддержка и зачем всё это писалось, отвечают, что это не твоё дело. На меня такой подход производит удручающее впечатление.

— Так и сейчас много кто работает.

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

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

— Но всё это время ты продолжал работать и преподавать в КПИ?

Да, в основном писал научные статьи, где обобщил свой опыт в научной форме. Можно поднять архивы научно-технической библиотеки в «Тарелке», там всё есть: метапрограммирование, динамическая интерпретация метамоделей, мультипарадигменное программирование, data driven-подход, архитектурные и методологические основы проектирования распределенных информационных систем. Всё хорошо и подробно изложено. Хорошо тогда старался писать, чтобы не стыдно было. А по всему объему материала, что понаписывал, можно пять диссертаций нарезать!

«JavaScript — это не язык моей мечты»

— А не защитился почему? Хотя бы кандидатскую.

Была возможность защититься, но не было перед кем. Не было ученых советов, которые бы вообще понимали, чем я занимаюсь и что пытаюсь донести. Я несколько раз пытался делать предзащиты для разных советов на разные темы на разных кафедрах, но оказалось, что у нас в стране нет никаких ученых советов и специалистов, которые по теории программирования, метапрограммированию, мультипарадигменному программированию могли бы хоть что-то понять.

«Мы занимаемся автоматизацией, системами управления производством, а у вас, молодой человек, тема... программистская», — примерно такая была типичная реакция на эти попытки. Есть советы по параллельному программированию, могут принять защиту на кафедре вычислительной техники КПИ, есть по математическим моделям, но по метапрограммированию — нет, это в принципе направление не изученное, по нему нужно специальный совет формировать, чтобы защититься. Но это всё сложно и тягостно... Если это не затребовано фундаментальной наукой и на это не будут выделяться специальные фонды, то такой вид научного творчества выжить не может.

— А в других развитых странах защититься не хотел?

Можно, конечно, но мне было и остается не до этого. Я всегда занимался более практическими вещами, а со временем всё более активно в преподавание ушел. Писал научные статьи в свободное время, но больше для себя, в стол, чтобы обобщить опыт. А потом на популярные ресурсы начал писать типа «Хабра» или на конференциях делать презентации и доклады. Но в любом случае от практики печататься в этих толстых ваковских журналах, которые никому не нужны и которых никто не читает, где такая зачастую туфта, рядом с которой и фамилию свою стыдно видеть напечатанной, я постепенно отказался...

К тому времени я сменил уже десятки языков программирования. Кстати, я никогда на этом моменте не зацикливался и изучал их с ходу: начал с ассемблера, FoxBASE, dBase, Clipper, Pascal, BASIC, Delphi, C++, потом — JavaScript и PHP, собственно, Web освоил, параллельно с этим C# и .NET. И уже в середине 2000-х я понял, что из всего, что я попробовал, максимально развиваться будет и имеет перспективу именно JavaScript. Признавая, что это далеко не «язык моей мечты», не самый лучший язык программирования, но это язык победившего завтра, общепонятный и общепринятый!

Так и случилось. Примерно как латынь в Средневековье была далеко не идеальной, хаотично использовалась разными людьми и народами по-разному, но другого универсального языка не было, равно как и других писателей и читателей на нем. Так же и JavaScript — он из суровой практики появился, из потребности навести порядок в браузерах, где в 1990-е и 2000-е такой треш происходил, что мама не горюй! Вспомнить все эти переливающиеся свистоперделки а-ля WordArt-стайл, c дикими тикающими часиками, летящими снежинками и взрывающимися бомбочками... К середине 2000-х начали распространяться уже всякие штуки типа Gmail, Google Maps, зачатки Web 2.0, rich interactive user interface.

И вот такие штуки сразу с начала 2000-х годов мы стали писать самостоятельно, без всяких фреймворков и без помощи тех инструментов и Web-платформ, которые есть сейчас: WebSocket, WebAssembly, огромное API браузера, позволяющие работать с чем угодно...

— Вот мы плавно подошли к переднему краю современности, где я предлагаю от воспоминаний перейти к вопросам на злобу дня, предметным и практичным, а также — мировоззренческим. Ты один из самых известных апологетов Open source в Украине. Почему это важно для тебя лично и в общем?

Всё очень просто. Эта отрасль в программировании — единственная прогрессивная форма труда. Когда люди вместе пишут Open source, они делятся своими знаниями и умножают собственный опыт. А когда пишут проприетарное ПО — они сами же ограничивают свои знания, друг друга и замедляют прогресс, скрывая и достижения, и ошибки, запутывая друг друга, не находясь в полноценной и открытой коммуникации.

— Что такое прогресс в твоем понимании?

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

Против квадратно-гнездового мышления в программировании

— Принимается. Ты пишешь и пропагандируешь писать Open source именно на JavaScript. Почему ты такой энтузиаст этого языка программирования?

В течение последних 25 лет ему нет альтернативы и не предвидится, для Web-платформ точно. Какое-то время альтернативой была Java, встроенная в качестве плагина в браузер. Её оттуда вышвырнули. Потом — Flash. Его тоже вышвырнули. Затем пытались встроить Dart — результат тот же. Какой бы язык не засовывали в Web-платформы — JavaScript его обгоняет, а предлагаемые языки и решения пропадают или же занимают другую нишу. Нет альтернатив.

Только сейчас JS стал уже семейством языков, ведь есть TypeScript, AssemblyScript, много диалектов ES. Есть AssemblyScript, компилируемый в WebAssembly. По сути, сейчас ситуация такова, что есть JavaScript разных версий и есть компиляторы JavaScript, написанные на JavaScript, которые компилируют JavaScript в JavaScript, и есть runtime-системы, которые при помощи JavaScript исполняют JavaScript. Может сложиться впечатление, что ничего невозможного для JavaScript нет, но это не так.

Например, есть задачи реального времени, индустриальные решения, управления контроллерами и другие штуки, где нельзя использовать языки со сборщиками мусора, но это уже отдельная история. Есть люди, которые не любят JavaScript. Как правило, это товарищи старой формации, застрявшие на Java или C#, вытесняемых сейчас языках, которые, как FORTRAN или ALGOL, будут десятилетиями еще существовать в виде обслуживаемой кем-то архаики. Ну а им на смену приходят новые современные языки, такие как Swift, Kotlin, Rust, и в эту новую инфраструктуру JavaScript вписывается, в отличие от старых языков.

И, конечно же, люди не любят, когда их сгоняют с насиженных мест, а неосознанно это проявляется в бесконечных филиппиках против JavaScript и его энтузиастов. Отпускают набившие оскомину шуточки, мол, JavaScript — это язык без типизации, что само по себе действительно смешно, ведь всё, что исполняется на процессоре, не может быть без типизации, а в случае JavaScript — она динамическая. К тому же, если на JavaScript писать со всей строгостью, не меняя значения переменных, только через const, не используя неявного приведения типов, не делая примесей и кучу других ненужных техник, то код, написанный на JavaScript, будет работать, может, наполовину медленнее, чем, например С++ код. Но и это очень хорошо!

А в некоторых случаях на JavaScript можно написать вещи даже более эффективные, чем на Java и С#, потому что код на нем часто намного более короткий, легче читаемый, он может работать даже как небольшая строчка, в отличие от громоздких конструкций на упомянутых языках.

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

— Само собой напрашивается сравнение с фонетической азбукой и иероглифическими письменностями, например. В первом случае ты изучаешь 2–3 десятка значков азбуки за короткий период времени, а что ты уже пишешь — зависит от твоего уровня сознания, развития, способности оперировать категориями и уровнями абстракции: от «а-ба-ба-га-ла-ма-га» до «Критики чистого разума». Тогда как на овладение «китайской грамотой» могут уйти годы и годы заучивания тысяч иероглифов, их соединений, канонов, а выразительная способность тебя как личности останется весьма бедной, если не сказать примитивной, так как время жизни потрачено на овладение техникой записи, а не развития способности суждения и аргументированного последовательного и логического изложения. В итоге ты изъясняешься притчами, коанами и афоризмами, потому что по-другому не можешь...

Совершенно верно! На JavaScript пишет кто угодно и что угодно, и запускается он как кроссплатформенный на любых устройствах — от смартфонов-планшетов до контроллеров. Еще один источник заблуждений о JavaScript — это то, что сейчас получил распространение язык TypeScript, который называет себя надмножеством JS. Не частью его, которая владеет ограниченным набором возможностей, а претендует на то, что умеет больше. Типа любой код на JavaScript будет валидным кодом на TypeScript. Но это неправда.

Я с ходу могу привести десяток примеров самого простого кода на JavaScript, который вообще не выражается на TypeScript, его на нем невозможно типизировать. Тем не менее все это хавают. Кроме того, TypeScript имеет в себе кучу ошибок, причем грубейших и даже не в реализации, а в самом дизайне языка, которые ведут к неправильной проверке типов. Ситуация, что в тех местах, где ожидается, что это все сработает, выскакивают ошибки, а там, где по логике должна быть ошибка, все срабатывает — еще хуже по сути! Это совершенно непредсказуемое поведение, чего нельзя допускать в работе с техникой.

Кроме того, у TypeScript нет спецификации, в отличие от JavaScript. JS — это стандарт. Он четко описан. Тем не менее TypeScript — это существенное развитие инфраструктуры JavaScript, полезное для людей с квадратно-гнездовым мышлением, привыкшим думать в стиле ООП, мыслить шаблонами проектирования. И TypeScript позволяет «конвертировать» людей с C# и Java и обратить их в веру JavaScript, хоть полной гибкости и пластичности этого языка они, к сожалению, не ощущают...

— И пишут на скрипте «квадратно-гнездовые иероглифы», используя его как пиньинь какой-то.

Ага, типа этого. Пишут в «стиле оверинжиниринга», усложняя, усложняя и усложняя. А потом компилятор, написанный на JavaScript, транслирует их TypeScript-код хоть в какой-то JavaScript, но сильно неоптимальный. Впрочем, что действительно проблема, в сообществе JavaScript разработчиков не хватает архитектурных практик и хороших приемов программирования. Они не включены ни в учебные курсы, ни во фреймворки, а сами программисты в основном используют те практики и приемы, которые им навязывают фреймворки, а они часто плохие, противоречат основам Computer Science, высосаны из пальца какими-то недоучками-выскочками.

И что в результате? В Node.js очень хорошо сделанное ядро, но все пишут не на этой платформе, а на фреймворках уровня, когда Node.js была еще версии 0.10, а сейчас уже v.16.4.0, извините. Отставание в 10 лет. А наша Метархия идёт в ногу со временем. В наших рядах больше всего контрибьюторов Node.js в стране, они же пишут всё это сразу и в Метархию.

Все будет Метархия

— Отлично. Давай говорить о Метархии. Что это такое?

Это сразу несколько значений.

— Давай начнем с лингвистического. Что за слово такое? На слух рифмуется с монархией и анархией. Если погуглить, оно встречается у христианского философа V века Дионисия Ареопагита и обозначает среднее звено ангельских чинов — четырехкрылых небесных духов, поддерживающих основы мироздания, господство, силу и власть...

Примерно. Слово «метархия» состоит из двух частей: μετά - сверх, ἀρχή - власть, господство, управление. То есть буквально означает «сверхуправление». В понимании программирования это когда на ЭВМ программа во время исполнения превращается в другую программу, которая, в свою очередь, тоже исполняется, и так — сколько необходимо раз. При этом часто используется динамическая интерпретация метамоделей. Это наш методологический подход.

Также это наш подход в управлении коллективом контрибьюторов и разработчиков: мы не стоим менеджером-истуканом с кнутом и пряником над душой каждого программиста и не раздаем каждому задания, а осуществляем управление через знания — дали знания и человек сам их применяет в написании кода. Где выполнение методологии превращается в способ работы, в результат технического творчества и практическую реализацию идеологии. А если человек не может без менеджера при таком подходе — значит он не усвоил необходимые знания и нам не подходит такой сотрудник. И он или не задерживается, или уходит на переработку, вернее, на переподготовку, пока не постигнет дзен Метархии.

То есть это предельно эффективное использование, сверхуправление вычислительными способностями компьютерной техники и в то же время предельно гуманное управление, если угодно — самоуправление, коллективами программистов.

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

Метархия — это также комьюнити, в нем сейчас больше 27 000 человек, которые скоро уже 8 лет как обучаются на лекциях, приходят на митапы, участвуют в разработке Open source, внедряют наши решения в продуктах, контрибьютят Node.js и сам стек Метархия, активно общаются на специальные темы по интересам и уровням подготовки в более чем десятке Telegram-каналов сообщества.

То есть, кроме того, что Метархия — это методология разработки ПО, технологический стек, сообщество — это ещё и образовательное движение, объединяющее тысячи и тысячи людей в Украине и в других странах дальнего и ближнего зарубежья. Как образовательный проект и движение Метархия практически самозародилась из общественно актуальной потребности. Я просто записывал лекции и выкладывал на YouTube, их начали массово смотреть и комментировать люди отовсюду, завязались обсуждения, споры и дискуссии, разборы примеров кода и тем, люди стали задавать вопросы, и всё завертелось.

А поскольку лишь на лекциях и их обсуждениях люди не могут обучаться полноценно, посыпались просьбы ввести какую-то практику. Я задумался: откуда мне брать практику? Откуда взять столько менторов, которые будут смотреть за новичками, анализировать их код, разбирать примеры и ошибки. Ведь начинающие программисты часто не могут себе позволить достойных менторов, поэтому тратятся на шарлатанов, которые освоят любые средства, конечно. И нашлось очевидное решение, прямо проистекающее из методологии Метархии: ведь можно и нужно писать не только системные Open source проекты, но и прикладной Open source!

Например, медицинскую информационную систему, складскую или логистическую ИС. Ведь часть библиотек технологического стека Метархия написана контрибьюторами сообщества. Что-то я пишу, что-то мои ребята, но много пишут и вообще незнакомые «люди из интернета». Именно куча Open source проектов на GitHub-странице сообщества и является тем полигоном, где происходит практическая часть системы обучения Метархии, где код-ревью и сам процесс освоения разработки, обретение навыков групповой работы на GitHub, круговой взаимопроверки кода как раз обеспечивают взаимодействие наиболее топовых менторов сообщества и всех масс, желающих обучаться через практику в реальных проектах.

То есть совсем скоро ко всем моим лекциям мы добавим еще целый пул Open source проектов на GitHub, в которых менторами будут мои лучшие выпускники. И они будут делать код-ревью первым новым контрибьюторам Метархии, а потом уже те — следующим и так далее, пока вся эта цепная реакция не закольцуется в массовое движение самообразования в ходе разработки открытого, свободного ПО. При этом будут происходить проверки проверок и проверяющих, пока не наберется критической массы тех, кого можно проверять реже и отпустить в свободное плавание.

Летняя школа Метархии, КПИ

— Прямо соцсоревнования с переходящим знаменем передовика производства.

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

— Неплохо. Расскажи подробнее о Метархии как технологическом стеке. Как обстоят дела с внедрением?

За последний год произошли десятки внедрений нашего технологического стека. В разные продукты. Например, этой осенью будет запуск наших разработок в Handy.AI, где произошло несколько разных внедрений сразу. Они делают чат-боты, организацию производственных процессов на базе BPMN для ток-шоу «Свобода слова», Intertop, Interpipe, UNIT.City и кучи других компаний.

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

И только через внедрение в Handy.AI уже осенью у Метархии будет пополнение на более чем 1 000 000 конечных пользователей коммерческого продукта.

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

Еще за это время у нас самозародились очаги разработки и мини-сообщества контрибьюторов и индивидуальных инженеров-энтузиастов технологического стека Метархия в Израиле, Германии, России, США, Латинской Америке, которые просто нашли нас через интернет, через мои лекции, и тоже начали строить уже свои разработки, свои информационные системы на базе решений и идеологии Метархии.

И таких людей за границей, что внедрили Метархию в свои проекты — уже больше 30 человек региональных лидеров, с которыми мы созваниваемся каждую субботу. Я отвечаю на их вопросы и консультирую. Они же созваниваются между собой, обсуждают, помогают, советуются, вместе решают конкретные вопросы по Метархии или же договариваются о том, чтобы вместе проконсультироваться у меня. И когда они уже свои продукты выкатят, объявят об этом, я в сообщество размещу инфу и расскажу все детали.

Ещё есть несколько групп в Discord, которые самоорганизовались, сделали общие чаты, смотрят мои лекции, разбирают код на GitHub, созваниваются, разбирают, записывают уже свои видосики по Метархии и по разбору моих лекций. Можно на YouTube их найти, они мне иногда их шлют даже в личку. Еще есть на YouTube программист-видеоблогер S0ER из Германии. Он начал тоже делать разбор кода Метархии, репозиториев, заинтересовался и роет тему на достойном уровне. Из Харькова Илья Климов заинтересовался и будет использовать Метархию в своем обучающем курсе по JavaScript и Node.js, а также с целью написать информационные системы.

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

Резюмируя ответ на этот вопрос, отмечу, что сейчас Метархия состоит из сервера приложений Impress, из metaschema — языка проверки контрактов, программных интерфейсов и структур данных, моделирования предметной области баз данных, доступа к API, описания API внешних интерфейсов. Плюс к этому — MetaSQL, это слой доступа к данным, к реляционкам, мы выбрали PostgreSQL. Также протокол сетевого взаимодействия Metacom, который умеет через HTTP, WebSocket ходить, скоро научится ходить через TCP, TLS и HTTP/3. Это протокол высокого уровня, который ходит через разные транспорты. Еще есть куча разных мелких библиотек: metavm, metawatch, metaconfiguration, metalog, metatest. Они для разных аспектов программирования: тестирования, логирования, конфигурирования и так далее. Но главное то, что все они умеют работать как единое целое и без внешних зависимостей.

— Вообще?

Да. Обычно, когда люди пишут на JavaScript, они добавляют уйму неконтролируемых зависимостей, библиотек из npm и репозиториев из GitHub. В результате получается 500–800 MB мутного кода, который неизвестно кто писал. А наши библиотеки в сумме занимают максимум 2 MB — все, что нужно для жизни!

Плюс к ним все наши внешние зависимости — это драйвера доступа к PostgreSQL и WebSocket. Хотя мы уже начали разработку собственной реализации WS, так как нам только часть этого протокола нужна, легче и проще написать самим, оптимизировать, и всё будет гораздо лучше работать. То есть 2 MB ядра и еще 3 MB от внешних модулей — 5 MB всего. Сказать кому-то, кто пишет на Node.js, что на 5 MB можно написать серьезный софт, когда у всех по 800 MB, а у некоторых счет уже пошел на гигабайты — это сразу разрыв шаблона.

А что в тех сотнях мегабайт-гигабайт творится, какие там вирусы, уязвимости закладки, кто, как и чем всё это написал — на это уже даже никто внимания не обращает. Тяп-ляп — и в продакшен, если благопристойно выразиться. А часто по верху всего этого дела люди разворачивают Node.js в виде serverless или в виде лямбда-функций облачных, они получают дополнительно зависимости от вендоров, когда каждый тебя подсаживает на свои базы данных, на свою телеметрию, балансировку, очереди событий — и всё! Ты хочешь на другое облако перейти, а не можешь — тебе, по сути, всю кодовую базу нужно переписывать...

Поэтому иметь полностью независимый от вендоров Open source технологический стек, чтобы ты мог развернуть его на своём «железе», на арендованных серверах в дата-центре, в виртуальных машинах, да где угодно, когда угодно и как угодно, хоть на собственном ноутбуке, и чтобы это всегда работало абсолютно одинаково — мне кажется, что это нужная вещь в народном хозяйстве.

Наша платформа едва ли не единственная, которая умеет масштабироваться при помощи тредов, а не процессоров. Мы пишем приложения сразу security by default через микроизоляцию, они сразу спроектированы безопасными. У нас есть и предусмотрено всё. Мы можем осуществлять полный контроль за виртуальной машиной из виртуальной машины, чего нет практически ни у кого больше. Можно создавать песочницы, изолированные контексты, треды, связывать их как нужно, загружая зависимости внутрь песочниц, перебрасывая связи, чего не умеют другие виртуальные машины, тот же JVM.

В этом смысле Node.js впереди планеты всей. В каких-то моментах платформа отстает — в архитектурных вопросах, в практиках кода, в уровне образованности и знаний комьюнити — и очень сильно. Поэтому мы и занимаемся образованием, чтобы «догнать и перегнать» по знаниям и умениям. Но технологически Node.js — на уровне, и даже впереди. По моим прикидкам, уже в этой пятилетке мы выпустим, во-первых, полностью самоподдерживающуюся Open source инфраструктуру, в которой сразу вшиты архитектурные принципы. В Сети уже лежат примеры написанных прикладных систем, их можно посмотреть. Ещё есть полный комплекс учебных курсов, программа сертификации для того, чтобы подготовить специалиста, умеющего писать на этой технологии. Мы сразу делали это Enterprise ready, как Red Hat с Linux.

— Давай конкретнее. Есть что предложить миру бизнеса, инвесторов и прочего чистогана?

Без проблем. Например, MetaServerless. В Метархии, когда мы её делали исключительно для своих продуктов, изначально присутствовала идея реализации аналога облачных функций. Но сделать это отличным от тех облачных функций, которые написаны на Node.js в Amazon, Google, Huawei и других облаках, где сама идея Node.js уничтожается в ходе реализации. Там в один момент времени каждый процесс этих облачных функций способен исполнять только один запрос.

— Node.js однопоточный!

Да-да-да! А ведь вся идея Node.js в том, что каждый процесс способен в каждый момент времени исполнять тысячи, десятки тысяч запросов. И параллельное программирование, асинхронное программирование, event loop позволяют это делать, как это происходит в Nginx и других асинхронных системах с event loop. И во всех презентациях эти облачные функции представляются как способ сэкономить, ведь ваш сервер не будет постоянно включен: запрос пришел, вы запускаете виртуальную машину, один запрос исполнился, и вы ее выключаете.

А то, что при этом пропадает параллельное исполнение, а также возникает куча накладных расходов на бесконечное вкл/выкл этих машинок, все нагревается, когда приходит много запросов и нужно наплодить много процессов, например 10 000 процессов на 10 000 запросов. А еще ведь ограничения стоят на 1000 процессов, и у тебя выстраивается очередь... Короче, все эти лямбда-вычисления — обернутая в фантик идиотская идея, в которой утверждается экономия на порядки, а в реальности в разы увеличиваются расходы. И дело не только в дороговизне, а в том, что этот подход провоцирует разработчиков писать менее архитектурный код: смешивать слои абстракций и продуцировать портянка-код. И если человек не учил Computer Science — он портянка-код и пишет, ведь портянки у него всюду, так как во всех доках, во всех примерах нет ничего, кроме портянок.

Поэтому MetaServerless — это проект приватного облака, построенного на базе технологического стека Метархия, который будет в открытом коде и который любой провайдер или пользователь сможет развернуть у себя на «железе». Чтобы пользоваться всеми возможностями и преимуществами Node.js, о которых было сказано выше, и при этом не иметь проблем с вендорлоками, прогревами, очередями, изоляциями, которые существуют в привычных облачных функциях. MetaServerless, как облачная платформа на базе техностека Метархия, будет сама себя оркестровать, заниматься балансировкой, масштабированием, созданием новых инстансов, резервным копированием и восстановлением. По сути, обеспечит те же функции, которые в современном Cloud Native-подходе обеспечивает Kubernetes.

— Метархия как комьюнити разработчиков. Кто еще пишет технологический стек, кроме тебя?

Я назову такой общий коллектив: это Дима Нечай, Денис Отришко, Алексей Орленко, Коля Белочуб — они же много контрибьютили или продолжают это делать для Node.js. Алина Листунова, Лида Иванова, Артём Черненький, Алексей Румянцев, Диана Болотенюк, Иван Тимошенко, Влад Дзюба, Илья Федорович, Вячеслав Журавский, Дмитрий Михайлов, Дмитрий Надобко, Мария Кокшайкина, Игорь Онищенко, Юля Герасименко и еще много-много людей не из моих выпускников, кого я знаю только по никам на GitHub. Нужно смотреть по репозиториям.

— Сейчас ты работаешь в двух топовых вузах Киева — в КПИ и КШЭ. Расскажи, как дела на ФИВТе? Что ты задумал воплотить в КШЭ такого, на что тебе не хватает КПИ?

Еще совсем недавно у меня было впечатление, что из существующей системы высшего образования можно еще что-то слепить. Как-то починить, улучшить, наполнить новыми формами преподавания, соответствующим содержанием. Сегодня я таких иллюзий больше не питаю. Но что в политехе, что в школе экономики у меня чисто прикладные нужды: туда, несмотря ни на что, идут и идут люди!

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

Но студенты почему-то не выбирают путь учиться самостоятельно. Хотя для этого всё есть! Они все равно идут в КПИ, Могилянку, КШЭ или другие вузы и, находясь там, ощущают себя студентами в процессе обучения. Хоть это не самый оптимальный путь. Просто привычка, чтобы в голове у себя и для общества, для родителей поставить галочку «студент». Можно не совершать такую ошибку и становиться инженерами или бизнес-аналитиками не выходя из комнаты. Безусловно, хорошо, если есть наставник. Но в вузе крайне мала вероятность встретить адекватное наставничество. А время проходит и часто впустую тратится на походы на ненужные лекции и предметы, на преподавателей-невменяшек.

И, находясь внутри этой системы, я практически каждый год проводил образовательные эксперименты: то с материалом, то с формой подачи, то с методами обучения. Поэтому, когда начались карантины, я был во всеоружии: все мои лекции, разбитые по темам на плейлисты уже лежали на YouTube, куда я просто вносил изменения. И ведь, по сути, их можно и без поступления в КПИ смотреть, общаться в каналах, участвовать в разработке — вот вам и практика есть, в отличие от вредных и ненужных лабораторных работ по программной инженерии и программированию с их уродскими примерами в виде яблочек и зайчиков...

А в КШЭ я не один пошел, а с Артемом Коротенко. Мы готовим курс по программированию для людей, которые будут в будущем принимать решения, для ІТ-руководителей, хотя такой специальности нет. И я думаю, что на базе Киевской школы экономики мы воспитаем и обучим людей, которые смогут такими специалистами стать. Они просто собираются в этом месте, туда они за этим пришли. Но обучат их там не только программированию и построению моделей, ведь там еще есть и другие преподаватели, а еще макроэкономике и микроменеджменту...

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

— Какие планы по развитию школы программирования HowProgrammingWorks?

Я уже буду отходить от этого названия HowProgrammingWorks, теперь это просто школа Метархии. Даже не столько школа. И это слово тоже должно отпасть постепенно. Просто — Метархия. Как никто не говорит «школа Академия Платона», или «школа Лицей Аристотеля». Академия и есть академия. Также не «школа Метархии», а просто Метархия.

Очень хочется, чтобы это стало таким образовательным, саморазвивающимся в будущем движением, когда придут новые поколения, чтобы через 2000 лет метархия была именем нарицательным, как сегодня академия или лицей. Вот это уже можно будет считать результатом!

«Нужно делать так, как нужно. А как не нужно, делать не нужно»

— Перейдем к блоку философских вопросов. Твой девиз, который обозначен в профилях соцсетей, — это truth above success. В чем истина, Тимур?

Еще 10 лет назад моим девизом было изречение Dum vivo, prosum. То есть на первое место я ставил полезность. Но я от него отказался и теперь руководствуюсь тем, который на первое место ставит правду, истину. Потому что пользу можно выкрутить как угодно. Не понятно, какая польза, для кого, для чего? Это было мотто, которое не содержало в себе цели. Инструментальный слоган, упускающий внешнюю цель. Ведь можно на галере дяде приносить пользу, например. Но ведь нельзя это делать целью своей жизни, а тем более — сообщества.

А вот служение истине дает надежду, что я и в какой-то степени сообщество не продаемся, потому что нас нельзя купить, уболтать, сбить с пути. Мы можем сломаться, но не прогнуться. Радикальный нонконформизм. Мы хотим делать и делаем ПО по закону Винни-Пуха: «Нужно делать так, как нужно. А как не нужно, делать не нужно!».

— В молодежной среде мегаполисов ширится новый тренд — стоицизм. Я бы сравнил это с модой на «плечистый атлантизм» Айн Рэнд лет 10 назад. Сколько тебя знаю, before it was cool ты интересуешься этой темой. «Размышления» Марка Аврелия — твоя настольная книга, рядом — распечатанный на 3D-принтере бюст философа-на-троне, ты иногда цитируешь или пересказываешь отрывки из него... Что такое стоицизм в 2021 году в твоем понимании?

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

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

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

— Кажется, что скоро не останется учителей математики и физики в школах, электриков и сантехников в ЖЭКах, врачей в больницах, инженеров на производстве: все сбегут в IT. Возраст входа в профессию расширяется в обе стороны. Нередки истории как о 40-летних свитчерах, так и о 13-летних вундеркиндах. Буткемп по Web-разработке на месяц-другой, несколько читерских видео об имитации интеллекта да прохождении собеса — и еще +1 джун завелся в IT-джунглях. Но трубы и электросети рвутся, а дети массово не сдают ЗНО по математике, Украину ожидает образовательный коллапс, падает качество медобслуживания, глобальный политический шторм захватывает одну страну за другой. Как говорят некоторые ученые, мы имеем дело уже с целым социальным классом — «цифровым пролетариатом». Что ты думаешь о социальном измерении технологической революции и человеческом факторе в ней? Превратится ли «девелопериат» из «класса в себе» в «класс для себя»?

Эти твои «британские ученые» ошибаются. Программисты в массе своей — это социальная, профессиональная группа, но не класс в понимании классового анализа. Это прослойка, занимающая примерно такое же положение, как писатели, например. Только эти пишут код вместо романов и виршей. Был такой термин — «научно-техническая интеллигенция». То есть классового интереса у них нет, так как они даже не класс в себе, не говоря уже о классе для себя. Это городские жители в массе своей, соответственно сознание у них городское, обывательское, мещанское, мелкобуржуазное.

А чего хочет мелкая буржуазия? Правильно, стать крупной буржуазией, капиталистами и рантье. Поэтому не превратится, так как превращаться нечему. Как социальное явление эта социальная группа полностью спроектирована быть именно такой, какой она и является. Требовать коренных общественно-политических изменений люди могут, когда им чего-то не хватает — ресурсов, свобод, возможности реализации своего потенциала. Нынешним же — «всё так!». У них всё хорошо, им всего хватает, а если не хватит, им еще отсыпят. Они одеты, обуты, самонадеянны и сыты. Они готовы подчиняться любым некрасивым командам своего руководства. Этики нет как таковой.

— И наоборот: налицо заискивание разрабовладельцев перед гребцами — мы даже собачку твою выгуляем, чтобы у неё не было депрессии, только сиди и греби, шлепай формочки да API-шечки и не отвлекайся. Потребительская корзина только расширяется и углубляется.

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

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

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

— ...Чтобы войти в IT.

Ага. Людей штормит. Но, как только ты попал в IT — у тебя штиль и все хорошо. Ты ездишь комфортно отдыхать, к тебе уважительно относятся, как к представителю высокоинтеллектуальной профессии, все твои потребности закрыты! Кто-нибудь слышал о массовом увольнении программистов или об отраслевом профсоюзе, о забастовках? Ты потребляешь, как респектабельный человек, пользуешься завистливым одобрением общества — все хотят стать айтишниками или чтобы их дети стали айтишниками. Если ты айтишник — ты уже сын маминой подруги и...

— ...И герой нашего времени.

И тебе всегда есть о чем поговорить со своими такими же классными друзьями-коллегами где-то на курилке или за пивом в модном баре — все эти нетривиальные высокоинтеллектуальные беседы об IT, рейтах, лычках, релокейтах. Ты наглухо задраен своими закрытыми потребностями, как жук в танке! И тебе кажется, что в принципе общественно-политический строй не такой уже и плохой, всегда можно договориться, купить, заплатить. Как возможен реализм и требование невозможного в таких условиях? Как и зачем? Когда ты сыт и самодоволен, то вопросы «А какой же следующий шаг в цивилизации? А куда мы идем?» даже не возникают.

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

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

Более того, IT как индустрия наносит огромный вред и человечеству, и окружающей среде. Сколько электроэнергии и угля сжигается на майнинг, например, или на другие дурачества. Леса Амазонки вырубаются под плантации авокадо для услады айтишников и хипстеров, биоразнообразие тает быстрее льдов Арктики, пингвины дохнут от жары. За что в последнее время боролись айтишники у нас более-менее организованно? Ну вот с или за Дия Сити борются. Если у них что-то начнут отбирать или к чему-то нагибать будут — они тогда начнут бухтеть, возможно, как-то отреагируют. Но как только экспроприаторы и нагибаторы поймут, что их действия чреваты неприятными последствиями, так и перестанут сразу, у других отберут, беззащитных и невыездных, у кого можно брать безнаказанно.

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

«В Украине технологических компаний вообще нет»

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

Мне кажется, что существующая идеология развития IT как отрасли требует все большего и большего увеличения численности разработчиков, что напрямую отражается в росте прибыльности. Так это сейчас работает. Чем больше ты монетизируешь время сотрудников — тем больше у тебя бизнес. Время жизни программистов конвертируется в биты на банковских счетах — вот и весь IT-бизнес, его суть.

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

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

Такое действительно возможно, но воли, чтобы это сделать, нет и её не будет. Есть установка увеличивать количество программистов, потому что чем их больше, тем больше за это можно получить. А поскольку сейчас мир распадается на кластеры и на носу «столкновение цивилизаций», то естественно, что заниматься клонированием и модифицированием систем и решений — дело перспективное и выгодное.

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

Они могут написать все для всего человечества, даже без помощи ИИ. Но ведь таким образом задача не ставится — «сделать всем всё хорошо». Задача — экономический рост! А это количественный критерий, а не качественный. Поэтому даешь рабочие места, заказы, перелопачивание и перетряхивание! Вот мы уже и пришли к ситуации, когда берешь один стартап, другой, третий, пятый, десятый, сотый, читаешь их брифы, а они похожи друг на друга как грибы! Атака клонов...

То есть, по сути, люди пишут одно и то же много раз подряд. Все уже писали соцсети, все уже писали чаты и чат-ботов, все побежали в крипту. А где уникальность? Где технологический прорыв? «Ну как же! Мы вот сбоку еще финтифлюшку прикрутили!» Из утилитарных вещей — все то же самое. Бухгалтерские системы, логистические, учетные... Зачем человечеству 10 000 логистических информационных систем? Почему не сделать пару-тройку, но полнофункциональных, удобных и чтобы летали? В глобальных масштабах существует огромная номенклатура абсолютно излишнего софта.

— Ты упоминал о телевизионной интерактивной платформе Since.TV. Отметим здесь, что за неё ты получил «технический оскар» — первую премию Golden Panda Award фестиваля в Сычуани, КНР, крупнейшего азиатского мероприятия подобного рода. Кроме того, ты преподавал в Китае, обменивался опытом, консультировал крупнейшие китайские технологические корпорации. В свете нарастающего противостояния КНР и США, что ты можешь рассказать о китайском IT? Есть им чем крыть?

Китайцев в качестве отдельного игрока в IT-сфере можно практически не рассматривать. У них своего «китайского IT» не существует. Например, облака Huawei и Alibaba — это просто клоны того, что сделали Amazon и Google. Насчет других информационных систем, то у них есть разве что достижения в виде WeChat и QQ, которые практически сегодня уже слились в одну экосистему.

Своих разработок в плане языков программирования, баз данных, специальных платформ у них нет. Мы не знаем ни одного китайского специалиста мирового класса по теории программирования. Есть там специалисты в машинном обучении, больших данных, суперкомпьютерах, но именно по программированию — нет. У них очень слабая школа в этом плане. Поэтому им необходимы партнеры. Англичане, американцы и немцы не могут ими быть. Китайцы, конечно, их нанимают на отдельные позиции, платят бешеные деньги, но сами этими технологиями они не овладевают.

Сейчас они пытаются зайти в Россию и разместить там свои центры разработки.

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

Похожие статьи:
Компания Nikon анонсировала компактные фотокамеры класса премиум, выпуская новый ряд портативных моделей Nikon DL, включающие три модели: Nikon...
Сергій Шалаєв — допоміг організувати радіозв’язок, Євген Семенов, будучи в зоні бойових дій, продовжував вчитись і шукати своє місце...
За нашою аналітикою, частка Manual QA на ринку знизилася з 61% до 57% за пів року. Натомість стало більше Automation QA і General QA. Окрім того,...
Керівник Мінцифри Михайло Федоров написав у своєму Telegram-каналі, що шукає експерта-практика з AI, який уміє швидко й ефективно...
Норвежская компания Opera Software ASA объявила о появлении в её мобильном браузере Opera Mini совершенно новой панели прямо над...
Яндекс.Метрика