Category: общество

pub mod fiasco

Лучший язык, в котором правильно сделаны модули (ну или неймспейсы) — Кложа. Один файл === один неймспейс. Неймспейс может называться только так, как называется файл, и никак иначе. И лежать он должен тоже ровно по пути пакета. То есть (ns me.tonsky.hello) может и должен лежать в me/tonsky/hello.clj и нигде иначе. Сначала меня это почему-то напрягло — эй! свободу ограничивают! а как же самовыражение??? Это при том что в остальном Кложа — довольно либеральный язык и позволяет любую другую дичь творить спокойно и вообще говоря это чуть ли не единственное место, где абстракция «как организовать свой проект на файловой системе» протекла в язык, который, вообще говоря, весь такой интерпретируемый, динамичный, код может есть с руки и про файлы ничего не знает.

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

Тут-то судьба забросила меня в Балтийское море, на остров Котлин. У Котлина какой основополагающий принцип? Если где-то что-то запрещают, у нас разрешают! Все обиженные, обездоленные приходите к нам и творите что хотите. Этот же принцип применен и к файловой системе. В Джаве ведь как? Один файл == один класс. Какое расточительство! В Котлине один файл == сколько угодно классов, объектов, функций, констант и чего угодно еще. Более того, файл может объявлять объекты в пакете, в котором он даже не находится. То есть какой-нибудь src/main/kotlin/me/tonsky/hello.kt может спокойно объявлять package go.fuck.yourself; и никому за это ничего не будет!

Что же тут не так? Помимо самоочевидного бардака, становится довольно сложно понять, где что находится. Скажем, ищу я класс me.tonsky.Draggable. Смотрю в me/tonsky/ папку а там layout.kt, main.kt и scene.kt. Ну офигеть! Класс может быть в любом. То есть на самом деле это не один файл содержит множество объектов. Это один модуль размазан на несколько файлов с ничего не говорящими названиями. Разница тонкая, но существенная.

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

Все это, конечно стимулирует продажу IDE от одноименной компании, но почувствуйте разницу! Язык, разработанный на деньги IDE вендора, и язык, который при разработке не предполагал, что у вас вообще будет какой-то редактор (а судя по форматированию классов в clojure.lang писал его Рич в блокноте и пропорциональным шрифтом).

А потом вскрывается еще одна беда — разные файлы-то, получается, срут в общее пространство имен! То есть если ты в oops.kt написал val default = 1, то у тебя вдруг перестал работать wtf.kt про который ты даже не слышал, просто потому что он тоже определил val default = 0 когда-то а в алфавите W идет после O. Никакой изоляции. Не будешь же, в самом деле, по папке с одним файлом заводить на каждый класс. Сомнительное, короче, удобство.

А потом я пришел в Раст. Его систему с модулями я настолько не понял, что специально сейчас сидел перечитывал. Итак:

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

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

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

Раст позволяет импортить как модули, так и отдельные типы. Причем синтаксис общий. Что создает еще больше путаницы. Модуль — это неймспейс, средство изоляции имен, не больше. Тип — это уже что-то полезное. Давайте уже как-то разделять.

Видимо, по старой доброй C-традиции, в Расте сделали include вместо import. То есть когда ты говоришь use module, ты не просто создаешь некий синтаксический псевдоним, действующий исключительно до конца файла для разрешения имен. Нет, ты буквально добавляешь все что было в module в текущий файл. Не сослался, а скопировал и вставил себе. Это плохо, потому что вместо понятной модели «есть штука, она одна и существует там, где написана, плюс есть способы сослаться на штуку, псевдонимы, они могут быть любыми» мы получаем «одна и та же штука, размноженная N раз в N местах». А я еще удивлялся, почему одни и те же функции и из std::, и из core:: торчат. Вот почему!

Ну и на вишенку, модуль определяется не в том файле, где он написан, а в его родителе! Скажем, если вы сделали govno.rs, и написали в нем код, вы потом идете в lib.rs и в нем уже пишете mod govno;. Или, если хотите, определить его публично, pub mod govno;. То есть понимаете, да? Если вам интересно, торчит ли govno.rs наружу, вы не можете зайти в него и посмотреть. Вам нужно сообразить, кто его родитель, найти в этом родителе (в произвольном достаточно месте) надпись mod govno; и там узнать, есть ли префикс pub у него. Если вы хотите создать какой-то достаточно глубокий модуль, скажем, kak::zhe::vse::zaebalo, вам нужно пойти и создать всех промежуточных родителей и в каждом написать ровно по одной строчке:

lib.rs:
pub mod kak;

kak.rs:
pub mod zhe;

kak/zhe.rs:
pub mod vse;

kak/zhe/vse.rs:
pub mod zaebalo;

kak/zhe/vse/zaebalo.rs:
<your code here> 

В каком-то смысле это все следствие относительности имен и «удобства» их использования. В каком-то — следствие концепции вложенности. Этот пример прекрасно ее иллюстрирует: слишком много возни, слишком много вопросов, а в чем профит не ясно. Скажем, если модуль kak будет публичным, zhe — нет, vse — тоже нет, и наконец zaebalo — публичным. Смогу я его в конце концов заимпортить? Если нет, то в чем смысл pub в pub mod zaebalo;? Если да, то в чем смысл того, что промежуточные модули — приватные? И сколько файлов мне придется посетить, чтобы вычислить, доступен ли zaebalo для импорта?

Короче. Я не очень понимаю, как тут можно запутаться, но опыт показывает что путаются все и постоянно. Модули — плоские. Пути — абсолютные. Один файл === один модуль. Все, что надо знать про модуль, написано в нем самом. Будете делать свой язык — смотрите не объебитесь.


Депрессия год спустя

Ровно год назад я написал «Историю одной депрессии». Самое время подвести итоги.

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

И что вы думаете? Он конечно поугарал над самостоятельно поставленными диагнозами в ЖЖ, но согласился что они не неправы — это депрессия. Нормальная, неиллюзорная, медицинская.

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

Первые три месяца я тупо лежал на диване. С трудом поигрывал в одолженный у друга плейстейшн. Это совсем не такое райское времяпрепровождение как может показаться, просто ничего другого делать не можешь все равно. Ты просто терпишь и убиваешь время, ждешь, когда же уже станет наконец лучше. Фотографии периода пика болезни до сих пор вызывают во мне внутреннее содрогание, кстати. То есть на них ничего такого нет, но вот ощущения запомнились. Do not recommend.

Через три месяца деньги подошли к концу, я начал брать какие-то небольшие контракты. Работалось конечно с трудом. Особенно угнетал страх, что ты с кем-то договорился, пообещал, а организм подведет тебя и у тебя не будет сил работать. Короче худо-бедно я что-то сделал, хотя в фактическая работа была очень далеко от моего идеального представления о себе.

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

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

Что с интересом к программированию, то он так до конца и не вернулся. Весной я пытался искать работу, пособеседовался в несколько стартапов, в несколько больших компаний, и везде меня охватывало отвращение при одной мысли, что это опять все то же самое, опять это скучное унылое программирование, веб проекты, опять те же тормоза, глюки и люди, которым на это глубоко пофиг, лишь бы продукт вышел поскорее и похуже. Рефлексируя над причинами, которые заставили меня написать Software Disenchantment, я понял что всего этого не хочу. Что просто физически не могу писать очередной медленный отстойный электрон-или-прости-господи-браузер-апп, который к тому же ничего не значит и ничего не изменит. Как бы ни хотелось каждому основателю стартапа, его супер-уникальный-свежий-современный-вылизанный продукт — просто унылое, никому не нужное, высосанное из пальца говно (не пытайтесь это представить), а все эпитеты ничем не подкреплены. Может это конечно со мной что-то не так, или я не там ищу, но ощущение что никто даже не думает пытаться сделать хорошо и качественно конкурентым преимуществом, хотя попиздеть про это любят за милую душу. Устроился, кстати, я пока в JetBrains, но не над самой IDEA работать конечно, а на research-проект, где мы пытаемся научиться делать редакторы быстрыми и легкими. Посмотрим, как пойдет.

Ну и самый главный результат: мне больше не хуево. Те самые таблетки произвели вполне неиллюзорный эффект: депрессия ушла, симптомы ушли, мне больше не хочется лежать на диване и забиваться в угол, не нужно изображать энтузиазм или интерес, когда их нет, зато хочется постоянно улыбаться. Нет, серьезно, самое странное, на чем я себя ловил — когда никакого повода нет, ты идешь/сидишь сам с собой, и уголки рта самопроизвольно чуть приподняты. Не то чтобы мне вдруг внезапно все вокруг стало нравиться (см. выше), но общий депрессивный фон, который, скажем, автоматически добавлял ко всем ощущениям -10, теперь добавляет +0. Это самое лучшее, наверное, как я могу произошедшее описать.

Ой, простите, это старая фотка. Вот:

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

На что я хочу заметить:

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

Высмеивать психические проблемы ничем не лучше, чем проблемы со сломанной ногой. Вот хорошо показано:

“Have you ever tried not having a diarrhea?”

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

Все это я пишу, чтобы заметить, нет, депрессия не в головах. Это не пресловутое «нет настроения», а вполне конкретный физическо-химический процесс, с которым никакое количество «думай позитивно» и «не грусти» так просто не справятся. Если ты проснулся без энергии — сколько не старайся думать позитивно, энергия ниоткуда не возьмется. Советы вроде «Хватит выгорать. Перестаньте это делать. Не выгорайте» вот реально бесят. Тебе мало того что хуево 24/7, тебе нужно это еще кому-то там доказывать, чтобы к твоим словам отнеслись серьезно? Идите в лес с такими советами.

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

Так что, как говорит мой терапевт, не болейте!

Пациент умер, выносите

Opera Paper Products как-бы-шутка-но-не-такая уж и шутка
Opera Paper Products как-бы-шутка-но-не-такая уж и шутка

Я занимаюсь веб программированием 15 лет. Когда я начинал работать за деньги (компьютер у меня был и раньше, конечно), IE 6 был самым передовым и инновационным браузером, Firefox должен был вот-вот появиться, разработчики верили, что будущее за XHTML, до первого драфта HTML 5 и запуска StackOverflow оставалось 4 года, а до первого Chrome – пять лет. 

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

Получается вот как. Веб хорош для быстрого прототипирования, простого delivery, но масштаб его роста сильно ограничен. Грубо говоря, он подходит только для прототипов и игрушечных задач. Что-то вроде языка Basic, вроде и программы писать на нем можно, но всерьез его никто не берет. Веб, конечно, не пропадет, но в конечном счете займет место какого-нибудь там питона, на котором будут детей в MIT учить и ученые не слишком требовательные графики рисовать.

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

Ладно, простые статические страницы с текстом — ок, может быть. С адблоком и reader mode жить можно. Хотя и тут есть умельцы, которые умудряются сто слов отрендерить в страницу в 20 мегабайт, потому что технологии, инновации и disruption.

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

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

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

Существует ли версия этой реальности, где веб вырастает во что-то более значимое? А как же WebAssembly?

А что WebAssebly? Эта чехарда имеет смысл только только для людей, которые думают, что компьютеров нигде кроме браузера не существует. Очнитесь, ребята, это еще один никому ненужный слой абстракции. Мы с радостью себя отбросили на N лет назад и теперь с радостью это преодолеваем. WebAssembly — это попытка запихнуть в веб то, что без веба прекрасно работало уже несколько десятков лет как — С++ приложения. Чтобы что? Я не знаю чтобы что. Чтобы условный Вася все равно качал себе Слак, завернутый в Электрон, зато теперь написаный на WebAssembly. Смотри, мам, он почти как нативный, даже иконочка есть! И почти не тормозит. Почти-почти. Еще раз — попробуйте выкинуть говно веб-пропаганды из головы и взглянуть на это трезво. В чем тут достижение-то?

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

усы2

Инженеры, хватит бегать от ответственности

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

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

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

На круглом столе предлагалось ввести ответственность за баги. Государственное регулирование качества. Комиссии (и комиссаров?) по говнокоду. Сажать даже. Но это смешно, это перекладывание ответственности опять же. Никто внешний не придет и не скажет «всё, делаем хорошо». А даже если и придет, все вокруг не кинутся по щелчку вдруг делать хорошо. Нет государственного регулирования, запрещающего уродливые торговые центры. Единственный путь к хорошей жизни — чтобы у архитектора, который его рисует, было внутренне чувство, внутренняя ответственность, внутренний стандарт качества. Чтобы его волновало.

Come on, разве у вас не скрипят зубы, когда ваше приложение тормозит? Разве у вас не загорается внутри жгучее желание закатать рукава, разобраться и починить в тот момент, когда кто-то находит багу? Те инженеры из Слака, которые слышат постоянно, что сообщения иногда в принципе не доходят, как они спят по ночам? Как они не бегут первым же делом организовывать расследование, комиссию, группу по исправлению? Это ведь не десятое по важности окошко на двадцать пятом экране, это основная функция и она в принципе не работает же.

Разве не хочется вам понять, разобраться, докопаться до правды, когда численные характеристики какие-то не сходятся с вашими прикидками на салфетке? Когда вы слышите, что Android система занимает 6 Гб и что там может быть такого? Как нагрузится канал, если в один Google Doc придет 100 пользователей? Вы вообще прикидываете, считаете вещи на салфетках? Мы перестали считать на салфетках... В 3Д играх, кстати, считают. 

Разве вас не коробит от несоразмерности проблем и решений? Когда для Todo-листа на 200 строк берут Electron на 100MB? Разве не хочется узнать, что мог бы делать ваш комп на пределе? Сколько нормально сделанных чатов он мог бы крутить одновременно в 8Гб оперативки? Мог бы он ресайзить текстовое окно на 60 Hz? 144? 240? Где вообще предел и во что всё в конце концов упрётся?

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

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

Короче, я надеюсь, что вы этого всего не чувствуете на самом деле. Иначе добро пожаловать ко мне в депрессию.

усы2

Баранкин ⭕️, будь человеком!

Поиграл я тут в Detroit. Become Human и как главный эксперт по роботам и голливуду имею сказать.

Фабула такая: в 2038 году люди делают человекоподобных роботов (андроидов) с очень неплохим ИИ и пользуются ими ну как рабами примерно (или домашней утварью): прислуга, игрушки, секс, солдаты, грязная работа, программисты на JS.

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

Трюк тут вот в чем. Главная проблематика: люди в игре не готовы видеть в андроидах больше, чем бытовую технику, и, соответственно, признать их право на самостоятельность и равенство. То есть не способны проявить эмпатию. Когда рядом с ними андроид, они ведут себя так, как будто видят что-то такое (в лучшем случае):

То есть смесь чего-то совсем инопланетного и ящика с запчастями.

Так вот, проблема: создателям-то надо было, чтобы вы искренне переживали именно за роботов. А играют в игру такие же «средниестатистические» люди, в том смысле, что у них точно так же работает и эмпатия, и эмоции, как и у людей, изображенных в игре. Поэтому для игрока андроиды выглядят вот так:

Ой, простите, вот так:

Ну то есть идентично абсолютно людям, за исключением маленького индикатора на голове.

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

Но даже это слишком красиво и человечно. Как насчет таких?

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

Ну или вот этого мужика, злого и избивающего домочадцев:

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

Я уж не говорю про принятие права на самостоятельность в этом мире, к примеру, роботов-пылесосов:...

Роботы-пылесосы объявляют, что они разумны, и требуют равных прав. М? Вот это была бы игра. Честная. Но никто бы не понял.

Особенно показательно, что как только в игре надо показать «плохих» военных, которые, о негодяи, не хотят дружить с андроидами, то их-то как раз тут же обезличивают и одевают как роботов! Как роботов, Карл!

Да, на картинке — живые военные, не андроиды

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

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

усы2

Роботы уже совсем как люди

У современных серьезных фильмов про роботов (Бегущий 2049, Вестворлд) одна проблема — им, в общем, не очень интересно про роботов. Предполагаемое глубокое философское звучание — ах, робот, он почти как человек, и внешне не отличишь, и внутренее он все то же самое переживает — чем ближе к человеку, тем мельче. Потому что если робот во всех смыслах как человек, то какие тут могут быть философские вопросы? Значит и относиться к нему надо как к человеку, и проблемы у него будут такие же, как у человека. И получается — а зачем вообще были роботы? Какая разница, что там внутри, шестеренки или мясо? Зачем заваривать кашу?

Давайте поясню на контрасте. В оригинальном «Бегущем по лезвию» главный герой — робот, которому бесчеловечной корпорацией отведено всего 4 года жизни, и который нечеловеческим усилием воли решает бросить вызов этому приговору и ожидаемо проиграть в конце.

То есть осознание смертности и бессилие перед ней, вполне понятная и серьезная проблема, вполне человеческая проблема, только здесь подчеркнутая в 100 раз ярче тем, что герою отведено не условно-достаточные 70-80 лет, а всего 4, и не «самой природой», а чьим-то умыслом. Еще раз: это в первую очередь интересно, потому что это наша проблема, человеческая, просто ярко и красиво рассказанная с фантастическим допущением для ясности. Они даже на главную роль взяли молодого Рутгера Хауэра, человека с дикой животной энергией и харизмой.

А что в сиквеле? Роботы могут иметь детей. Вау! Вау? То есть они не просто как люди, а совсем-совсем как люди. И это значит... Это значит... Короче, тут я теряюсь, потому что это ну ничего не значит.

То, что они как люди, не может быть содержанием. Ну как люди они, и что дальше-то? Это может быть, допустим, предпосылкой, но тогда за ней должно начинаться собственно содержание. А его нет. Все долгие медленные «философские» планы бьют мимо, потому что они не накладываются ни на какую тему, нет проблематики. Тебе не о чем думать в это время. В итоге из ребенка делают макгаффин, большую часть фильма гоняются за спермой Харрисона Форда, через долгие 2,5 часа всё заканчивается и вся беготня выветривается из головы. На философское откровение не тянет, Вильнев тоже не тот человек, которому развлекательное кино хорошо дается, в итоге в вечности фильм явно не останется.

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

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

Нолан же в сериале всё перевернул и теперь это история о том, как роботов доводят до ручки противные гости и жестокие эксплуататоры. Мол, должны ли они взбунтоваться? Что они чувствуют? Да то же самое, что и человек чувствовал бы, по вашим же правилам игры. Должны ли мы относиться к ним как к личностям? Ну если вы так придумали, что они полноценные личности, я не вижу, какие тут могут быть варианты ответа. Конечно же да!

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

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

усы2

История одной депрессии

Долгий и подробный рассказ о том, как я заебался.

Last known good state это 2012, когда я попал в Эхо и переехал в Ульяновск. Работа перла, компания замечательная, люди чудесные. Ни до, ни после этого я не работал в коллективе, жизнь и достижения которого мне хотелось разделять. Всегда были «есть я, а есть компания», тут же я искреннее переживал и старался. Feels good, by the way. История зафиксирована тут.

В 2013 я переехал обратно в Новосибирск и открыл новосибирский офис. Команда набралась быстро (8 человек за год? Какие-то такие цифры), мне выделили свой проект, новосибирскую команду и дали попробовать Clojure. Опять же, сплошная пруха, развитие страшное, новые роли/задачи/подходы, выход из зоны комфорта и все такое.

Кусок команды в декабре 2013

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

Но стало как-то грустненько. Опять же, если память меня не подводит, я позже связал это с тем, что мне не хватало времени тупо программировать, а больше 50% времени занимало согласование/обсуждения/дизайн (без кодинга)/ревью, плюс ПМ-ские обязанности. Команда и продукт росли, а я это обслуживал и не успевал сам кодить. Я смотрел на код и мечтал о том, как его написал бы я сам. Я и сейчас не уверен в точности этого вывода, но я помню, что тогда мысль была такая.

Когда пошла рутина, я решил что надо как-то развлекать себя, и что вы думаете, компания пошла навстречу! Были хакатоны (ох, как я люблю хакатоны!), мы выпросили 20% время. Мы решили, что в 20% будем делать новый микропроект (метрики и алерты), на который позже переедет вся компания. Чисто наша команда, никаких согласований ни с кем, никаких гарантий (пока не запустимся), чисто в кайф. Но я довольно бысто понял, что это просто «еще одна работа»™, и хотя идея мне нравилась, по факту по пятницам я просто растекался по стене и максимум мычал что-то невнятное. По крайней мере я свои ощущения так запомнил. Отдыха не получилось, но ребята что-то делали, кажется.

В 2014 Эхо закрылось и мы всей толпой перешли в Machine Zone. Они делали очень успешные мобильные фермы и по невероятному стечению обстоятельств использовали где-то внутри Эрленг, на волне чего Валкин нас героически всех и пристроил. Проработал я там где-то полгода, делали мы непонятно что. Серьезно — полный хаос, ни цели, ни задач, «просто делайте что-нибудь» (ну это нашей группы только касается, конечно — никто не понимал, что делать с двадцатью внезапно нанятыми программистами в ситуации, когда компания в общем-то прекрасно работала и может работать и без них).

Я совершенно потерялся в этой ситуации и в итоге вылетел. Это единственный раз в жизни, когда даже внешним людям стало понятно, насколько плохо я не совпал с ситуацией. Например, говорят, я настолько плохо (безразлично? пессимистично?) выглядел на общем собрании с начальством, что за меня потом пришлось отдельно извиняться. Извиняться, Карл! За то что разработчик сидит чем-то недовольный.

Ну и в конце концов меня попросили. По-доброму, на самом деле — мне правда было тяжело всё это наблюдать, let alone участвовать, и от самовыпиливания меня останавливал только страх жизни без зарплаты. Это накладывалось на то, что последние N месяцев в Эхо с з/п было туго. Штош. Спасибо, что приняли это решение за меня, оно правильное, смысла в таком симбиозе не было, конечно, а сам бы я еще какое-то время решался.

В том же 2014 — и для нашего повествования это важно — я совершенно фантастически слетал в Калифорнию к Machine Zone в командировку. Видимо, всё именно сложилось — и место, и друзья, и пофигистичное отношение к работе — что получились больше каникулы, чем командировка, и каникулы очень удачно наложилась на предыдущие стрессовые полгода-год с распадом Эхо и сменой работы. Наша группа (6 человек) поделилась на 2 машины — активную и пассивную. В активной у нас была нон-стоп программа, все две недели каждый день мы куда-то в интересное место ходили (ездили, это ж америка), а на работе в основном сидели в ожидании файв-о-клок. До сих пор вспоминаю это как невероятный отдых (честно, бывает лежу ночью и прокручиваю, что было, куда ходили, что чувствовал), спасибо друзьям из активной машины (Антон, Ренат!) и всем нашим калифорнийским друзьям, которые пробили поездку (Лев, Влад!).

Это я только прилетел из Сан-Франциски, июль 2014

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

Конец 2014—начало 2015 стало периодом, когда я нервничал из-за того, что работа всё не находилась (я хотел именно на Clojure), но в остальном довольно продуктивно посидел дома. Я запилил прям подряд Fira Code, затем Rum и AnyBar, все довольно удачно зашли (и заходят до сих пор). DataScript пришелся на полгода раньше, на период маянья в Machine Zone. Меня узнали в Clojure-сообществе, я даже съездил выступить на паре профильных конференций (с тех пор зовут в основном на фронтенд почему-то). Тогда же был расцвет англоязычного блога. Для сравнения, три следующих года я буквально едва выдавливал из себя посты.

Декабрь 2014, каникулы в Лондоне. Помню плохо, но судя по фото, состояние окей

В марте 2015 работа наконец-то нашлась в ЮАР (через open source, ни много ни мало). И опять же это была работа мечты (ну, на бумаге). Мне дали собственный проект с нуля, дали принимать все решения и использовать собственные DataScript и Rum, которые я благодаря этому неслабо расширил. Сроки тоже не горели — никто особо не стоял с палкой над головой и не заставлял принимать компромиссные решения и копить долг (хотя, долг копится в любом случае). Короче, спокойная, продуктивная, rewarding работа.

Тут произошли две вещи. Во-первых, я начал работать из дома, т.е. сидел один. Это довольно неприятный опыт, особенно в новой команде, в смысле изоляции, сложностей с коммуникацией (привет, Скайп!) и нехватки просто людей вокруг. Классно, конечно, что никто не отвлекает и получается deep work когда нужно. Но когда я приезжал на две недели в Кейптаун, я понимал, как мне не хватало живого общения. Возможно, люди, которые боготворят remote, умеют как-то это компенсировать, регулярными встречами с друзьями наверное. Я не умею и друзей у меня — таких, чтобы прям раз в неделю даже — особо нет. Плюс хочется тупо иногда куда-то ходить, хотя бы в офис. А отвлекать и по слаку отвлекают дико, на неделю же от него не отключишься. Может быть первый год из дома я так и не думал, кстати. Сейчас уже думаю (4 года).

Второй шутку сыграл со мной опенсорс. Это безусловно очень классно, и как опыт, и в смысле самопиара — тут вопросов нет, recommend. Но я внезапно понял, что он требует вполне неиллюзорного количества времени и энергии, которых (тоже новый для меня опыт) внезапно больше не остается в щелях между работой и работой. Особенно плохо что у меня сразу четыре таких удачных проекта выросло. Своих идей много, пожеланий много и они продолжают идти, а ты тупо не можешь. Не находишь времени, откладываешь и страдаешь. Страдаешь, что не успел. Ответственность какая-то вырастает. Хочется сделать хорошо. Хочется причесать. Помочь. Улучшить. Всё это давит безумно.

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

Август 2015, рассказываю про DataScript. Доклад назывался «Фронтенд без грусти», кстати

Редкие вспышки радости — это когда люди приходят и полностью решают какую-то проблему за тебя, настолько хорошо, что можно взять как есть. Но такое редко происходит. Когда присылают PR и ты понимаешь, что тебе надо мало того что оценить решение, в лучшем случае доделать, а в худшем — решить всю проблему самому, плюс еще и объяснить человеку, почему его способ недостаточно хорош, подробно всё описать, как надо, это просто двойной груз какой-то. Это больше не радостное «хэй, мне кто-то помогает!» (хотя самолюбие где-то там тешится, что человеку хотя бы не пофиг), это «бля, на меня только что свалился кусок работы, о котором я не просил и на который у меня нет ни мотивации, ни сил». Так что опенсорс это не только единороги и радуги.

Важный момент — если бы мотивация и силы были (почему-то), то отношение могло бы быть другим (смотрите, сколько хороших и добрых людей я собрал у своего костра и как здорово мы проводим время! — например, я не знаю). Your experience may vary. У меня это постоянная битва за очень ограниченый ресурс, мою энергию, которого всегда не хватает, даже просто на get through the day. Поэтому я и огрызаюсь и в целом слабо рад тому, во что эта затея с «классными и крутыми личными проектами» превратилось для меня лично. Хоть сами проекты и получились.

Мой проект в Cognician кстати успешно запустился еще в конце 2015 и перешел в фазу развития. Через год я слетал в ЮАР и познакомился с командой лично (makes a huge difference!). Это была тоже в общем-то офигенная поездка (привет, Кирилл!), даром что Кейптаун это та же Калифорния — жара, природа, океан, серфинг, вино — только без стартаперов.

Я в марте 2016 залез на Lion’s head

Про эмоциональное состояние в 2016 я помню только, что мне приходилось немножечко изображать энтузиазм, когда меня спрашивали коллеги, как мне работается (а спрашивали, да). Потому что я честно не знал, на что жаловаться, но энтузиазма уже не чуствовал. В какой-то момент пришлось объяснять коллегам, что это особенность русского характера — всё слегка поругать и ни за что не похвалить. Но это больше по разряду отмазок проходило, потому что я точно знал, что это моя личная особенность, и даже в курсе её был. Ругать, критиковать, страдать от всего, что даже чуть-чуть не дотягивает до идеала. В том числе и собственную работу. Некоторые вещи и идеи меня действительно восхищают, но это как правило мирового класса проекты, например, и то далеко не все. По поводу всего остального мне очень трудно возбуждаться. Я как-то давно обидел Платова, например, назвав их супер-пупер IDE «просто редактором кода». I mean no harm, но и сделать что-то мне с этим трудно.

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

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

Самое интересное, что «черные дни» это не какие-то сильно негативные переживания, а скорее что-то просто максимально ровное и нейтральное, безразличное. Основная реакция — отвяжитесь, оставьте в покое. Больше всего хочется забиться в угол и скулить, но в целом ничего не хочется и что-то хорошее или плохое вызывает практически нулевой эмоциональный отклик. Я могу примерно прикинуть, что должен чуствовать (потому что помню) и даже сэмулировать реакцию (сказать «Вау», например, или «Блин»), но эмоционально мне пофиг. Грустный смайлик.

Шутки шутками, но от этой картинке мне уже не смешно

Где-то в это время, может чуть раньше, я перестал бояться летать на самолетах — но не потому что аэрофобия прошла, а потому что я просто очень сильно задолбался. Сидишь в кресле такой эмоционально выхолощенный и старшно там или не страшно трясет тебе совершенно пофиг — оно просто не может до тебя достучаться, блокировано где-то. Я помню контрольную точку, когда я еще летал в Ульяновск, меня каждый раз трясло до усрачки, а если самолет летел спокойно, то хотя бы перед полетом меня охватывала паника «блин, щас начнется, зачем я вообще сюда сел опять, never again». Сейчас такого уже нет, хотя — странно, да — было бы здорово что-то такое ощутить снова, «проснуться».

В 2017 шел третий год моей работы в Cognician. Мы переехали в Москву. В целом я ничего особо по этому поводу не думаю, хотя сидеть в квартире за год меня немножно подзадолбало и меня начали раздражать такие дни, а пойти особо некуда. То есть ха-ха, да, в Москве есть всё что можно пожелать, но как-то осмысленно пойти куда-то, чтобы было зачем-то, некуда. В Новосибирске хотя бы походы в гости к родителям разнообразили обстановку. Мы встречались несколько раз с друзьями в барах, но я уже был настолько вымотан, что как-то эмоционально пережить эти встречи не мог. Умом я понимаю, что для организма общение полезно и необходимо, но тут уже видимо слишком поздно. На некоторых особо удачных пересечениях просыпался небольшой интеллектуальный интерес (вот блог пост по мотивам, например), но и угасал почти моментально, потому что энергии поддерживать его не было. В тесте Бека есть вопрос — потеряли ли вы уже интерес к людям? Увы :(

Сентябрь 2017. Огонька нет и в помине

Я пошел в спортзал лечить спину, которую испортил до этого бадминтоном (скорее всего она уже была испорчена программированием или еще чем-то, бадминтон только усугубил). Пролечился от опистархоза и принял волевое решение есть меньше. Сбросил более 10 килограмм, купил новые штаны меньшего размера. Не то чтобы я это планировал, скорее оно так получилось, но получилось тем не менее, и я наконец стал выглядеть так, что нравлюсь сам себе. Это прекрасно для самолюбия, как и опен-сорс, но увы, Марио, болит какое-то другое место.

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

В конце 2017 я поставил на аватарку эту скептичную усталую лису с комментарием «exactly how I feel».

2018 стал полной жопой. Оценив финансы в начале года, я понял, что денег не просто нет — к июлю надо выплатить ~400 т.р. налогов, на которые я, конечно, не откладывал. По расчетам получалось, что мне надо работать примерно пять-шесть месяцев, тратить по-минимуму и в итоге я выйду только в ноль к июлю (так и получилось, кстати — я сделал платеж утром 10-го и через пару часов укатил на Алтай, т.е. тянул до последнего). Это пиздец депрессивное чувство, когда тебе надо сидеть на нелюбимой работе, и ты понимаешь, что в ближайшие пять месяцев тоже, выкладываться (а я очень ревностно отношусь к запасам энергии на этом этапе, как вы помните), и по результату тебе за это ничего не будет. Т.е. к середине года будет просто ноль. Никакой награды, никакого нового макбука или телефона. Та же кухня, та же пыль на том же мониторе. Не самое лучшее настроение для темных зимних вечеров. Черных зимних вечеров, что уж.

Мне стало трудно загонять себя за ноутбук. Буквально — от мысли что надо идти за стол передергивало. Рабочая комната стала воплощением зла, потом страдания, потом уныния (деваться-то некуда). Я работал по два-четыре часа в день. Были дни, когда я не мог собраться до самого вечера, и в итоге за день вообще ничего не делал. Это породило еще одну дурную петлю, когда я корил себя за то, что мало работаю, и в итоге сил работать не оставалось. Я бесился на коллег, мол, якобы нехорошо делают, и все неправильно, и мы не туда идем, и не так (ага, два года было так, а теперь вдруг не так). Я доводил себя до состояния, когда вся энергия уходила на самоконтроль и снова приходилось выдавливать слова, на этот раз с коллегами — уже не ок. Бесился на всё вокруг, на вечную неустроенность, недоделанность инструментов, библиотек, редакторов, языков, тормоза, сложность, неидеальность, на веб взъелся страшно — потому что где-то с перехода на фронт началось угасание. На самом деле просто совпало по времени, конечно. Надо мной даже начал смеяться Жиянов, что я много ною. Ну а что я мог сделать? Я был бы счастлив не ныть, так-то.

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

Черные дни стали иногда выливаться в твиттер, в остальном сугубо профессиональный (ха-ха, ладно, шучу, просто твиттер). Вот, например:

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

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

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

Примерно как я выгляжу сейчас (июль 2018). Ношу в рюкзаке лампу, а что делать

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

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

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

Как я себя чувствую сейчас? Пока что (~3 дня экстра отпуска и свободное расписание на ближайшее будущее) это ощущается хорошо. Правильно. Меня не то чтобы совсем отпустило, или я там вылечился уже или что-то, но ощущение что это как раз то что нужно. Ну или так: что угодно другое в данный момент было бы хуже. По крайней мере нет этого убивающего всё фонового метронома «появилась какая-то небольшое желание? мысль? идея что-то сделать, куда-то сходить? Ха-ха, но так или иначе сегодня, максимум завтра тебе придется идти на работу, так что ты всё равно в жопе, можешь даже не пытаться, всё зря, конца нет, так будет всегда». Вот его нет, и без него лучше, чем с ним.

Теперь немного анализа. Для меня, конечно, большим сюрпризом стало то, что это всё идет параллельно успехам в карьере. На бумаге у меня было всё настолько хорошо, насколько возможно — прекрасные компании одна за другой, больше и больше отвественности, зарплата растет и пока не остановилась, авторитет какой-то, конференции, собственные проекты. And yet. Не работает что-то другое, и очень бы хотелось это другое уловить. Понятно, что надо либо как-то по-другому научиться к этому относиться (как?), либо пора что-то менять (что?).

Отдыхаю в Венеции, октябрь 2016. Это не стеб, мне правда трудно

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

Или отдых? Обычно устал — отдохнул (в пятницу-сб-вс или дольше, отпуск) — и с новыми силами в бой. Они типа копятся, т.е. есть какой-то запас. Для меня отпуск это просто еще одно место/состояние, в котором я не хочу находиться. Потому что там мне примерно как и вне отпуска, только с дополнительным давлением «отдыхай давай». И по выходу ничего не восстанавливается и не накапливается. Что с этим делать непонятно.

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

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

усы2

Как писать

О блоггинге, организации работы и отношению к этому всему.

Артемий Лебедев https://tema.livejournal.com/2774733.html:

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

Пример: у меня есть тыщща записанных тем, о которых было бы интересно сделать посты. Но каждый день я выбираю из них только наиболее интересные темы - не больше трех. Иногда появляются темы, которые самым несправедливым образом встают впереди очереди. Ну и что? Я ничего не должен списку тем, я должен своим читателям.

Артемий Лебедев https://www.youtube.com/watch?v=2BieKJEFofs:

Мои маленькие посты, нечто среднее между длинной СМС-кой и коротким эссе, людям этот формат вполне понятен.

Jason Fried https://youtu.be/PKeJRmzUXYc?t=2312 (перепечатывал, так что не дословно):

I try to write all my blog posts within 15-20 minutes. Yes, I might spend couple of days, rewrite it 3-4 times. Might get 3% better. Doesn’t worth waiting couple of days, might decide not publish at all (get cold feet). Some stuff that comes out of it is not that good, but it doesn’t matter: everybody will forget about it tomorrow anyways. Try not to attach preciousness to these things. That more perfect version of yourself, it doesn’t exist. You wrote what you wrote, just publish and move along.

Kent Beck https://www.facebook.com/notes/kent-beck/publish-everything-pretty-much/1839078656124990/ (добавлено):

Publish pretty much everything you write because you can’t predict what is going to be popular. There is a lower bar for quality, but barring dishonesty and literally unreadable prose, everything else should go out somewhere.

Erik Spiekermann https://99u.adobe.com/articles/55323/erik-spiekermann-no-free-pitches

Work is gas. Work will fill any given volume. If you give me two hours, I will take two hours. If you give me 10 minutes, I will take 10 minutes. So if you give somebody two weeks to do a project, he’s going to start on day 12 and it will take him two days, but the two weeks will be filled because work expands like gas. Straightforward physics. That’s why I don’t believe in time sheets, because you always happen to have eight hours at the end of the day. You make up stuff.

@mdubakov: https://medium.com/@mdubakov/55-дедлайны-138e17aa762c

В основном дедлайны используют именно для этого. Это такой wishful thinking, что к указанной дате будет готово хоть что-то. Ну и работает, черт возьми. У меня по лонгридам дедлайн 24:00 каждый день. И что-то я публикую к этому времени. Не всегда хорошее, но хоть что-то.

Людвиг Быстроновский https://us9.campaign-archive.com/?u=4792a92d9a9a009fb843c130e&id=03db86f018&e=68e6483c9a

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

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

Маячила еще возможность обосраться перед читателями, но для того, чтобы она не пила мозг, достаточно было с самого начала в описании курса развязать себе руки: отменить вообще все обязательства.

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

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

Еще Людвиг (про дизайн, но и тексты тоже) https://us9.campaign-archive.com/?u=4792a92d9a9a009fb843c130e&id=31913ffac1&e=68e6483c9a

> проект одновременно и крутой, и слабый. Крутой, потому что получилось, слабый, потому что мог лучше.

Неа. Это принципиальный момент, зырь. Крутой потому что крутой. Но слабый - тоже потому что крутой.

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

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

От себя лично скажу, что я интуитивно нащупал те же выводы. С ЖЖ я загнал себя в угол, когда начал писать английский блог на tonsky.me. Стоящие мысли было жалко писать по-русски, а в английском блоге хотелось если писать, то каждый пост должен был быть самым лучшим: обстоятельным, хорошо написанным, аккуратно сверстанным, смешным, интересным, с картинками и интерактивчиком.

Когда это получалось, получалось здорово, спору нет. Но на длинной дистанции это оказался путь в никуда: девять постов в 2014, два в 2015, два в 2016, три в 2017. В середине 2017 я начал писать мега-пост, написал 11 тыщ знаков, не прошел даже половины материала и сдулся. Он так и лежит незаконченный до сих пор, правда я сделал из него доклад потом https://www.youtube.com/watch?v=ObHrsSrfJJk.

Соскучившись по блоггингу, в конце 2017 я запустил телеграм-канал t.me/whining. Туда я разрешил себе писать коротко и без всяких задних мыслей. Тут же захлестнула эйфория: писать снова легко и приятно, сомнения не гложут, контент создается. Главное, в конце концов, что у тебя есть что сказать, а не насколько хорошо и увлекательно это оформлено. Плюс короткий формат дает некоторую автоматическую защиту от занудства.

Потом пришел Рахим и мы сделали из этого grumpy.website, чудом дважды чуть его не запоров. Сначала я решил, что надо сделать собственный движок под всё это. Спас опыт: я разрешил себе делать блог максимально тупым и тяп-ляп, ну и немного интерес подстегивало то, что я сделал из этого телешоу https://www.youtube.com/playlist?list=PLdSfLyn35ej8por7aH-5wYvOyDTu-bPoH. Ну а потом мы решили перейти на английский, и это тоже ощутимо подорвало мотивацию, т.к. количество рускоязычных читателей начало снижаться (и снижается до сих пор, в телеграм-канале по крайней мере), а новые англоговорящие, они, ну, более обстоятельные и серьезные, что ли, не такие веселые. Но сейчас все уже привыкли и воспринимают английский как данность.

А спасли grumpy как проект удачные принципы: короткий формат постов, как в чате, без заголовков, без тем и без всей шелухи: комментов, тегов, ничего этого нет. Даже markdown мы до сих пор не поддерживаем. Разрешена ровно одна картинка в начале поста и несколько предложений, всё. Очень легко писать и очень легко читать, а значит регулярные пополнения, нет давящего груза ответственности, не надоедает и не выматывает. Ну и оформление соответствует: иконка за 5 минут, верстка за 10, дефолтный шрифт, квадратные юзерпики. Важны только буквы, остальное не важно. Это, если честно, дает ощущение удивительной легкости, правды, ну и свободы конечно.

усы2

Монады против исключений

Я конечно не настоящий сварщик и про ФП мне Рабинович напел. Но я поработал в трех Clojure-командах и одной Erlang и видел, как люди пытаются для обработки ошибок слезть с исключений и перейти на Error монады (например, failjure, бывают и самописные, но принцип понятен). Считается, что исключения это такие грязь и пот для люмпенов, а монады из области чистых идей и разносят их на золотых подносах во дворцах.

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

А в производстве у нас что? Все спешат, тесты покрывают 25% случаев от силы, хорошо если хоть на какие-то failure cases тесты вообще есть, задачи и курс партии меняется еженедельно, коммуникация средняя, такая штука как коллективное внимание вообще можно сказать не существует (ну нельзя на каждый чих оповещать всех, ну нереалистично это). Задача производства ведь какая? Строить новое со скоростью большей, чем разваливается старое, чтобы выйти в конце в net positive. Подход быть внимательным, хоть я сам его и очень люблю и использую в домашних опен-сорс проектах, где всё разложено по полочкам и муха рядом чихнуть не может; такой подход ну не работает, нельзя на него полагаться от слова совсем.

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

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

усы2

Фронтендеры не на маках

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

miketansky: Фронтендеры не на маках с чувствами вкуса и хорошего дизайна — это редчайшее исключение. Хотите резко повысить вероятность найма хорошего фронтендера? Жестко и безжалостно дискриминируйте по этому признаку.

А вот реплаи:

flashader: Ни одна статусная (а тем более — зашкварная) вещь не заменит исполнителю мозг и умение думать.

Как будто кто-то с этим спорил. Утверждение было в обратную сторону — если умение уже есть, есть тенденция к переходу на маки.

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

Опять развернули утверждение. Речь же не о том, что дебилы (что бы это ни значило) тоже могут купить мак. Речь о том, что Хорошие Фронтендеры (что бы это ни значило) переползают рано или поздно на мак.

orsinium: Я воспринял этот твит как «Для того, чтобы делать хороший UI, нужно пользоваться хорошим UI». И отметил, что UI в маке хорош, а UX — нет. А навыки в UX я считаю не менее важными для фронтендера и дизайнера.

Ну тут человек хотя бы признается, что прочитал что-то своё. Поставил вместо необходимого условия достаточное.

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

На эту тему у меня есть шикарный же пример. Сидел я как-то на докладе про какой-то кросс-мобильный фреймворк, из серии write once — run anywhere, и на одном из слайдов, продающих его, был график выручки компаний от приложения по количеству платформ. Грубо, компании, выпускающие приложение только на одной платформе, там, айос или андроид, зарабатывают условно $1000 в мес на нем. Компании, выпускающие на двух, зарабатывают допустим $2000. На три платформы (+windows phone) уже $5000. Ну и самый пик там что-то типа те, кто выпустили приложение аж на 11 платформ (хз, что это за платформы), гребут уже там, например, $500 000 — непропорционально больше, короче. Ну и показывалось это под таким соусом, типа, за этим вам и нужен наш фреймворк — выпустите под больше платформ, заработаете больше денег. Для презентации кросс-платформенного фреймворка очень удобный аргумент. На самом деле всё объясняется гораздо проще, конечно — если у вас есть приложение, зарабатывающее $500 000, у вас найдутся деньги, чтобы портировать его на 11 платформ. А если приложение херовое, то запускай хоть на 11 платформах, денег не соберешь. Вроде бы банальная мысль. График можно было прочитать и так, и так, а понять его правильно можно только через понимание механики, которая его формирует.