Я в интернете

РСС    Джейсон-фид

Есть автоматические трансляции в Тумблер и Же-же. Если не работает, напишите мне: ilyabirman@ilyabirman.ru.

Избранное

Насчёт Дэвида Дойча

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

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

Сейчас я уже читаю текстовую версию и делаю заметки, так что, возможно, когда-нибудь будет и выписка, но вероятно, какие-то отдельные вещи я вам принесу и до того. А в аудиоверсии я взялся слушать предыдущую книгу, «Структура реальности» (1997).

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

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

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

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

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

Если интерфейс плохой, дело не в недостатке идей

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

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

Архитектор-дизайнер с «продуктовым подходом»

Возьмём нормального архитектора-дизайнера. Он понимает, как работают материалы, свет, вентиляция, электрика. Разбирается в привычках и укладах быта людей, простанственных особенностях работы разных предприятий. Умеет подбирать мебель и декор. Знает, как устроен сам процесс стройки: в состоянии поддержать разговор с любым специалистом, спланировать порядок покупки обоев, плитки и сантехники так, чтобы всё было вовремя и не портилось на стройке. Понятное дело, что он разбирается в программах проектирования. Когда к нему приходят с задачей, он делает, потому что знает, как — он этому учился много лет, а если и не знает какую-то деталь, то знает, у кого из коллег спросить или в какой книжке прочитать.

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

Нормальный архитектор-дизайнер смотрит на это и думает: почему он занимается всей этой ерундой вместо дела? Но архитектор-дизайнер с «продуктовым подходом» знает, что всё делает правильно!

Тосты загораживают интерфейс

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

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

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

Сортировка и фильтрация

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

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

Фильтрация — это когда у вас есть массив данных, и вы выбираете, какую его часть показать: только у моря и с завтраком, с массой в пределах от 0,5 до 3 масс Солнца или только содержащие подстроку «жопа».

Если у вас 1183 записи, то как их ни сортируй, их останется 1183, а при фильтрации будет показана только их часть.

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

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

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

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

Отсортировать по району можно: сначала показать записи из Аннина, потом из Бутова, потом из Внукова. Придётся ещё решить, как сортировать записи уже внутри района, ведь их явно будет много в каждом. Но вот отсортировать «по конкретному району» невозможно: это всё равно что отсортировать всех по конкретному росту 172 см.

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

«Скелет» как состояние компонента и экрана

Столкнулся с дизайн-системой, где у всех компонентов отрисованы состояния «скелет» — это типа как выглядит элемент, пока он не загрузился. Дизайнеры вообще говорили «скелетон», но скелетон — это такой бобслей для одиночек, а skeleton — это скелет. С этим состоянием есть проблема, сейчас объясню.

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

Так что же не так с состоянием компонента «скелет»? То, что скелет — это состояние экрана целиком, а не отдельного компонента. (Если уж на то пошло, у компонента может быть состояние «кость», а не «скелет».)

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

Зачем столько мусора? Чтобы показать, что экран ещё грузится, достаточно такого:

Да и ещё спокойнее можно.

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

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

Критерий «исследования»

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

Конечно не называем, ведь это не исследование.

Вот вам критерий: если для получения ответа достаточно задать вопрос — это не исследование.

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

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

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

При этом само исследование в итоге не даёт ответов. Всё равно кто-то компетентный и уполномоченный должен посмотреть на его результаты и сказать: ну, тогда ответ вот такой.

Вести блог на Эгее лучше, чем в соцсетях

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

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

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

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

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

Попробуйте Эгею!

Уличные таблички Стамбула

 7 мин

Никто не говорил, что в Стамбуле довольно примечательные уличные таблички:

Своей кричащей расцветкой они немного похожи на флаги:

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

На средней полосе пишется махалля, а на нижней полосе — район. Кадыкёй:

У каждого района ещё и свой цвет этой полосы. Бейоглу:

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

Вёрстка умеет адаптироваться к длинным названиям и всяким припискам типа «профессор». Шишли:

Таблички умеют крепиться как на дома, так и на столбики:

Обратите внимание на стрелочки справа снизу. Когда табличка на доме, у стрелочки подсказывают номера домов, а когда на столбике — не подсказывают. Но тогда стрелочка становится двойной. Такой дизайн!

Бешикташ:

Кстати, дизайн стрелочки на удивление уродский, но всё равно хороший:

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

Красиво выцветают на солнце:

Ну иногда не очень красиво:

Кроме уличных табличек, бывают такие же красные маленькие таблички с номерами домов:

Вот где прекрасное сочетание цвета таблички и цвета дома:

Снова на разной высоте, а ну и что:

Овальная табличка сверху — какая-то несистемная

Синий дом и красная табличка. Ну кайф:

Удивительно, что в огромном Стамбуле все таблички сделаны в одном дизайне:

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

Для Стамбула вполне ожидаем был бы полный разнобой и бардак. Но такого уровня систематизации я не встречал нигде:

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

А эта табличка была в общем рассказе про Стамбул:

Фотографии из поездок в сентябре и октябре 2022 года. Слетайте в Стамбул!

Ещё Стамбул:

Cтамбул

 5 мин

Стамбул оказался одним из самых неприятных мест, где я был. Впрочем, прилетел я туда прямо из Лондона, поэтому, возможно, я воспринимал его на контрасте.

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

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

Одна из главных особенностей города — мучительная рельефность.

Это мило выглядит, но гулять по такому городу невозможно — слишком много нужно сил.

В сочетании с плохо работающим такси и отсутствием нормальной системы оплаты транспорта это всё делает город очень недоступным.

Но, конечно, красиво, когда видно так далеко:

Трамвайчик:

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

Типа такого:

Ну или можно плавать на паромах туда-сюда с таким видом:

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

Ещё один красивый вид далеко:

Непонятное:

Тут слева видна уличная табличка — не трудно догадаться, что про них будет отдельный большой пост:

Тут тоже видна, но это какая-то нестандартная, про такие поста не будет:

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

Пока на этом всё.

Фотографии из поездок в сентябре и октябре 2022 года. Слетайте в Стамбул!

Ранее Ctrl + ↓