Когнитивная ловушка

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

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

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

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

Так что, порой, я в ответе за то, как вы меня поняли. Но только не в этом канале, тут я с себя всякую ответственность снимаю. В конце концов, предъявлять что-то ворчливому деду - занятие неблагодарное.
672 просмотров · 31 реакций Открыть в Telegram · Открыть пост на сайте
Стой, стрелять буду

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

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

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

Второй пример - появившаяся в конце прошлого года умная камера от Яндекса, которая умеет выполнять уже более сложные сценарии. По сути это развитие первого примера, но к CV еще прикручена более гибкая логика триггеров и действий. Ей можно задать сценарий "Если кошка начинает грызть кактус, произнести фразу "Брысь!"". Или любые другие сценарии, завязанные на умные устройства в доме. Система через гпт/ллм понимает, как и на что нужно настроить триггер, а дальше уже CV сравнивает сцены с камеры, чтобы обнаружить его. Из этого собрали VLM-модель, и тут уже вау-эффект поболе.

Мне эта фишка понравилась. Я аж задумался, какие сценарии я бы задал этой камере. Но пока не придумал. Моя кошка окриков не боится. Разве что отправлять за ней в погоню робот-пылесос, к нему она относится с почтительной опаской. Может, у вас есть мысли?
648 просмотров · 10 реакций Открыть в Telegram · Открыть пост на сайте
Как зайцу - стопсигнал

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

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

Также было подмечено, что работать из багажника (а фонарь крепится изнутри) легче Лехе. Мне скручиваться в три погибели было не с руки, а сыну там было вполне уютно. Да и для наживления мелких 8-мм гаечек его пальцы подходят лучше моих.

Результат - налицо. Точнее, на заднюю часть. Но все равно красиво. #лёха_строит_бэху
675 просмотров · 23 реакций Открыть в Telegram · Открыть пост на сайте
ʁиvɐdɯɔʚⱯ

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

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

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

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

Во-первых, мясной пирог. Говорят, они только этими пирогами и питаются, и каждый австралиец съедает по 4 пирога в неделю. В пироге два вида теста (сверху слоеное, внизу скорее песочное) и рубленная говядина с тимьяном и вустерским соусом. Получилось вкусно и необычно, нам понравилось. Могу понять австралийцев.

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

В-третьих, на выходных нас ожидает что-то из креветок. Что именно - не знаю, просто видел, что креветки появились в морозилке. Оно и немудрено, когда у тебя страна со всех сторон окружена океанами. Да и креветки как ни приготовь - будет классно. Но что выйдет - вы так и не узнаете, потому что на следующей неделе будет уже новая страна, новые локал спешиэлитиз и новые факты о мире. Стэй тьюнд.
816 просмотров · 20 реакций Открыть в Telegram · Открыть пост на сайте
Подарок на новый год

Не знаю, что Дедушка Мороз принес под елку вам, но я своему подарку подивился знатно. А получил я фикс ранее зарепорченного бага в опенсорсной либе (видимо, хорошо себя вел). Это было совсем не то письмо, которое я ожидал увидеть в почте на праздниках. Даже сначала подумал, что это какой-то спам. Потому что ждал я этого ... 14 лет!

Летом 2012 года, когда я работал бекенд-разработчиком в Яндекс Почте, делал я одну тасочку про отображение приаттаченных картинок в веб-интерфейсе почты. Я даже нашел тикет в jira (да-да, тогда еще jira, сейчас он смигрирован в трекер) - WMI-303 (WMI == Web Mail Interface). Задача звучала так: "Разворачивать картинки согласно EXIF". И при решении этой задачи мне нужно было перезаписать данные об ориентации изображения, чтобы уже повернутая картинка имела "нормальную" ориентацию при скачивании из браузера.

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

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

P.S. Если меня читает кто-то из Яндекс Почты - осторожней обновляйте GraphicsMagick, может что-то отвалиться на вебаттачах.
742 просмотров · 27 реакций Открыть в Telegram · Открыть пост на сайте
Inner-source

Представьте себе две команды разработки. И ребятам из одной частенько нужны изменения в коде второй для решения своих бизнес-задач. Как водится, есть два варианта - либо "заказывать" разработку у оунеров, либо контрибьютить самим.

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

Остается второй вариант - контрибьютить к соседям. Тебе надо - ты и делай. И вроде все понятно. Но всегда начинаются какие-то тёрки. Первая команда приносит какую-то фигню в PR-ах, вторая долго ревьювит и не хочет аппрувить. Переделай. Нет, так тут не принято. А вы вообще нам тесты сломали. В общем, конфликт. А мы конликты не любим.

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

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

1. Тот, кто хочет внести какие-то изменения, должен перед этим рассказать свою задумку мейнтейнерам и согласовать примерный способ решения задачи.
2. У команды, в которую часто приходят иннер-сорсить, должна быть краткая и понятная документация на сервис, чтобы гостевой разработчик лучше понимал специфику сервиса, и как его случайно не сломать.
3. Должен быть документ, коротко и понятно описывающий принятые в конкретной команде подходы и традиции - от код-стайла до отношения к слоям абстракции - во избежание комментариев на код-ревью в духе "у нас тут так не принято", когда весь код уже написан.
4. Существует и выполняется разумный SLA на ревью (притом в каждой итерации, если их >1). Зеркально: автор ПР-а вносит требуемые правки достаточно оперативно, чтобы не размывать фокус ревьювера (спустя 2 недели ревьюверу трудно вспомнить, о чем был ПР).
5. В сервисе должно быть высокое покрытие тестами (юниты, авто, любые не-ручные), чтобы иметь достаточную степень уверенности в безопасности прошедших тесты правок. Количество флапов и ситуаций "а, да, этот тест сломан, не обращай внимание" должно быть околонулевым.
6. Если одна и та же гостевая команда часто вносит правки в сервис, в ней можно выбрать trusted-коммитера. Его коммиты можно ревьювить не так придирчиво (то есть как от своих), и он сам может ревьювить и аппрувить коммиты от других участников гостевой команды.
7. Гость, в свою очередь, в полной мере отвечает за качество своего коммита, стабильность релиза, возможные багфиксы, поддержку этого кода, как за свой сервис. Соблюдает подходы из п.3, разбирается в специфике из п.2, следит за тестами из п.5 и добавляет тесты на свой код.
8. Любые разногласия устраняются в конструктивном ключе, без лишних препонов. В случае необходимости обсуждаются лично или с эскалацией до лидов. Главное - помнить, что мы тут одно дело делаем, а работаем - в коллективе.
694 просмотров · 24 реакций Открыть в Telegram · Открыть пост на сайте
С иголочки одет

Наконец удалось забрать сиденья с перешива. Настал момент установки. И, вроде, невелика наука - 4 гайки и всех делов. Но нет, возиться пришлось несколько часов, умотавшись аки пёс.

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

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

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

Зато результат, кажется, получился отменный. Кресла теперь аутентичные (ранее стояли какие-то левые от е90, их продал на авито, притом спрос на них оказался бешеный - мне за день написало и позвонило 15 человек) и в нарядной ткани. Это что-то среднее между оригинальным motorsport-исполнением и ваговской gti-клеткой. Мне нравится. #лёха_строит_бэху
636 просмотров · 25 реакций Открыть в Telegram · Открыть пост на сайте
С новым 56-м годом

от epoch (начала unixtime)!
И пока мы все тут вспоминаем, как работу работать, просто поделюсь моментами нового года.
1. На даче хорошо.
2. Уклон участка - не всегда плохо, зимой можно кататься со склона.
3. Бассейн легко превращается в хоккейную коробку. Ну и что, что круглую.
4. Кошке почему-то не понравилось гулять.
5. В лесу волшебно. Но идти трудновато.
6. "Жидкость для розжига" в лице короны зимой работает хуже.
7. В камине можно печь картошку.
8. Найден рецепт годного риета из шпрот. Обязательные ингридиенты: шпроты, мазик, яйцо вареное. Опционально: горчица, острый соус, перец, соль, творожный сыр, каперсы, маринованый огурец, красный лук, чеснок, укроп. Все это перемалывается в блендере до однородной массы, намазывается на греночку черного хлеба, накрывается кружочком свежего огурца. Беллиссимо! Особенно под картошечку из п.7.
660 просмотров · 34 реакций Открыть в Telegram · Открыть пост на сайте
Дед отползает на новогодние каникулы.
А чтобы вам было, что почитать, если что-то пропустили - Дайджест.

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

Увидимся после праздников. Обнял.

Важный дисклеймер (есть в закрепе)
Предыдущий дайджест

Разработческое:
Питон
Да сколько можно отчитываться то?
Курсор и его друзья (тесты)
HRBP
Техноцели
str = 'Quoliti Ashurenes'
К ветеранам C++
Все яйца в одну корзину
Эффективность разработки

DevRel:
Highload++ 2025
Яндекс - уже не торт
Сферический код в вакууме
[▮▯▯▯▯}

Лавка изнутри:
На собственной шкуре
"Ура, склад!" (с) Шарик
Саша, иди на завод, там нужны рабочие руки!
Полный оффлайн
Распределительный Центр
Есть горячее

#лёха_строит_бэху
Со звуком "дзынь"
Разборки
304 Not Modified
Buckets Empire
Тест на мужика
Как бы да, но как бы нет

Дедовское:
Привет. Есть вопрос.
Скрепы, православие, духовность
Знал бы прикуп - жил бы в Сочи
Этот ваш хваленый ИИ ничего не может
Восьмой класс, вторая четверть
Ложь и провокация
Unplugged
Ливийские недели в Макдоналдс
С наступающим!
976 просмотров · 14 реакций Открыть в Telegram · Открыть пост на сайте
С наступающим!

Дорогой Дедушка Мороз!
Честно говоря, я не очень-то хочу именно Новый год.
Я вполне согласен на слегка подержанный 2019.
Или 2007, если остался в неплохом состоянии.
Спасибо.

(украдено и переведено с 9gag, но такое вот настроение)
739 просмотров · 47 реакций Открыть в Telegram · Открыть пост на сайте
Ливийские недели в Макдоналдс

Жена нашла креативное решение вечной проблемы "что бы приготовить?". 2026 год в моей квартире объявлен годом познания кухонь мира. Для этого были изготовлены фанты с ~60 странами (нагенерили из головы, что первое вспомнилось), и теперь каждая неделя знаменуется познанием местных специалитетов.

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

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

А помогать в нашей новой забаве нам будут, конечно же, Лавка и Еда. Думаю, ассортимента там хватит на все 60 запланированных стран со всеми их особенностями, традициями и гастрономическими девиациями. Хотя, неровен час, придется и на фудсити съездить (это такой мега-рынок продуктов, где можно найти хоть чёрта маринованного в собственном соку).

Если у вас есть интерес к такой рубрике в моей колонке, поддержите лайком. И будем в новом году изучать гастро-глобус вместе, а там, глядишь, начну аутсорсить тексты силами жены)
659 просмотров · 61 реакций Открыть в Telegram · Открыть пост на сайте
Есть горячее

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

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

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

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

Приправим блюдо учетными и нормативными факторами - нужно распечатать этикетку с реальным составом (он может варьироваться в зависимости от партии из поставки) и даже зашить в штрих-код точный вес продукции. А принтеры эти весьма капризны, надо сказать - это вам не ctrl+P нажать, они управляются из кода и ломаются при добавлении элемента в enum.

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

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

То есть мы берем всю операционную сложность кафе, накладываем на операционную сложность дарксторов и - вуаля - получаем весьма сложный путь от упаковки сосисок на полке к хот-догу у вас в руках. Зато горячо и сытно. Приятного аппетита!
662 просмотров · 19 реакций Открыть в Telegram · Открыть пост на сайте
Как бы да, но как бы нет

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

Но не буду. Потому что есть и несколько ложек дёгтя.

Ложечка за маму: вот объясните, почему с каждым первым сервисом одна и та же проблема - приезжаешь с одним списком работ, сервис рекомендует еще какие-то критичные вещи, и в итоге делает больше из своего списка, чем из моего? То есть из того, что мне было важно, половина остается не сделанной?

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

Ложечка за бабушку: и всегда так, что большая часть работ выполнена хорошо, но найдется пара мест, где прям трешово. Например, у поддона двигателя просто отсутствует один из болтов и оттуда уже поддавливает масло. Забыли? Не хватило болтов? Не стреляет болт? Фиг знает, но это треш.

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

Кушайте - не обляпайтесь. А требовать исправления уже сил нет, сервак в области, к ним не наездишься. Что ж, ладно, тем не менее - машина стала надежней, комфортней и безопасней. Стала ли она конфеткой - очевидно, нет. Но будем продолжать работы по остальным направлениям, а остальное - как-нибудь позже добьем. #лёха_строит_бэху
604 просмотров · 20 реакций Открыть в Telegram · Открыть пост на сайте
Unplugged

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

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

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

Умный дом превращается в тыкву. Связаться с людьми не получится (все ушло в мессенджеры - у вас вообще много телефонов людей есть? а смску вы когда последний раз отправляли?). Оплатить покупку не получится, сервисы не работают (как показал блекаут мобильного интернета весной - инфраструктура города встает колом). Маршрут не построить, расписание автобусов не посмотреть - если из вас выдернуть провод, вы так и будете беспомощно стоять посреди города и не понимать, куда и зачем вам идти.

А что дальше? Не попасть домой, потому что умный замок тебя не узнает? Не попить кофе, потому что кофемашина управляется только со смартфона? Не сделать воду погорячее, если Grohe таймаутит? Не получится воспользоваться смывом в унитазе при недоступности сервера Villeroy&Boch? Нафиг такое будущее.

И с одной стороны, все современные технологии добавляют удобства. Но завязываться на них в критичных вопросах без резервирования - так себе затея. В конце концов, Илья Сегалович еще 22 года назад говорил "1. Прогресс неостановим. 2. Работать всё равно ничего не будет". Давайте уметь обходиться без always-on сети и уметь получать удовольствие от жизни не-в-экране.
781 просмотров · 29 реакций Открыть в Telegram · Открыть пост на сайте
Распределительный Центр

РЦ - это как ДЦ, но вместо юнитов - паллеты, и перемещаются они чуть чаще.
Я продолжаю познавать Лавку изнутри. В предыдущих сериях:
Даркстор глазами кладовщика
Даркстор глазами директора
Завод готовой еды
Оффлайн-магазин
А на прошлой неделе я съездил в наш РЦ, чтобы осознать часть того пути, который проходит товар от поставщика (или с завода) на дарксторы (или в оффлайн-магазин).

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

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

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

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

IT-инфры там тоже очень много. Начиная с сети, видеонаблюдения, серверной, коммутационных и хранилища данных, и заканчивая умными шкафами с ячейками для ТСД и зарядной инфраструктурой для погрузочной техники. Без крутых технологий РЦ на педальном приводе попросту не успеет поставить товар на дарки, чтобы вы могли в любой день насладиться своим Медовейником из Лавки. Всем ALOSA*, пацаны!

* ALOSA - anyline on-shelf availability - одна из операционных метрик, отражающая процент доступности к заказу минимум одного товара из каждого самого глубокого уровня категорийного дерева, чтобы мочь закрыть потребность человека в любом свойстве.
706 просмотров · 16 реакций Открыть в Telegram · Открыть пост на сайте
Эффективность разработки

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

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

Начнем с простого. "Внедрить куда-нибудь ИИ" не равно "повысить эффективность разработки". Это не значит, что использовать ИИ не нужно вовсе. Но сначала нужно проанализировать область применимости в зависимости от задач команды. Потом понять рычаг влияния в тех или иных местах. Если ИИ оптимизирует втрое затраты на задачи, составляющие 2% от нагрузки на команду - вы больше потратите на внедрение. А экономия 20% от задач, занимающих 80% команды - уже заметно.

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

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

В общем, берите эффективность в свои руки. Никто лучше вас не придумает, как вам помочь быть продуктивней. Анализируйте свою занятость, рефлексируйте над процессами, находите подходящие инструменты и действуйте.
666 просмотров · 36 реакций Открыть в Telegram · Открыть пост на сайте
Полный оффлайн

А знаете ли вы, что у Яндекс Лавки есть настоящий оффлайн-магазин? Не даркстор, а прям настоящий магазин, в который можно прийти ногами и набирать товары в корзинку руками? Только, в отличие от даркстора, вам за сборку не платят.

Я о нем знал давно, но только с неделю назад добрался до него ногами. Первое впечатление - очень стильно, чисто, много редких sku. Магазин небольшой, но корзинка все равно набирается полная - всего хочется. Там много наших СТМ (включая, разумеется, готовую еду с нашего завода), много вкусностей и деликатесов - аж слюнки текут.

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

В общем, если вы бываете в районе 1905 года, рекомендую заскочить, и вкусный вечер вам гарантирован. Кстати, там можно нафармить баллов плюса с каждого чека. А у меня еще одна галочка в чеклисте операционного продукта и много новых знаний об устройстве фуд-ритейла.
765 просмотров · 20 реакций Открыть в Telegram · Открыть пост на сайте
Тест на мужика

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

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

шарошка
фреза
цанга
штуцер
ввертыш
фланец
метчик
седёлка
коуш
струбцина
надфиль
бородок
вороток
скарпель
нивелир
кельма
сапун
соленоид
шток
футорка
таль
траверса
рым
вертлюг
талреп
обушок
люверс
сальник
клеммник
контактор
припой
канифоль
гусак
швеллер
двутавр
шплинт


Если тебе знакомы все эти понятия, ставь 💯
- скорее всего, ты продавец в техмаркете.
Если знаешь от 30 до 35 вещей, ставь 🏆
- тебе присуждается звание "Рукастый мужик I степени".
Если знаком с 20-30 предметами, ставь 👌
- ты найдешь в техмаркете то, что тебе нужно (наверное).
10-20 наименований есть в кладовке - ставь 👍
- ты уже крутой, я простые вещи сюда не писал.
5-10 штучек где-то слышал - ставь 🤔
- лампочку вкрутить ты сможешь, остальное не твое.
Меньше 5 знакомых слов - ставь 😱
- профи-ру тебе в помощь, а у тебя есть дела поважнее.
807 просмотров · 63 реакций Открыть в Telegram · Открыть пост на сайте
Все яйца в одну корзину

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

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

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

'0101010101 1010101010 0101010101' -> '0000000000 0000011111 1111111111', 1.

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



def eggs(s):
lst = list(s)
i, j, full = 0, len(lst)-1, 0
while (lst[j] == '1' or lst[j] == ' ') and j >= 0:
j -= 1
while i<j:
if lst[i] == ' ':
full += 1
elif lst[i] == '1':
lst[i], lst[j] = lst[j], lst[i]
j -= 1
while (lst[j] == '1' or lst[j] == ' ') and j>i:
j -= 1
i += 1
if i == len(lst)-1 or lst[i] == ' ':
full +=1
return ''.join(lst), full{}



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



def eggs(s):
solid = s.count('0')
full = solid // 10
res_full = ('0' * 10 + ' ') * full
res_mixed = '0' * (solid % 10) + '1' * (10 - (solid % 10 if solid % 10 else 10))
res_broken = (' ' + '1' * 10) * (len(s.split()) - full - (1 if res_mixed else 0))
if not res_mixed:
res_broken = res_broken.lstrip()
return (res_full + res_mixed + res_broken).strip(), full
{}



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

P.S. Я сомневаюсь, что мы правда пишем алгоритмы таких ручных операций. Этот пост - лишь еще одно метафорическое описание отличий операционного продукта от pure-digital.
P.P.S. На всякий случай оставлю тесткейсы для задачки - https://telegra.ph/tests-12-09-3. Кто напишет в комментариях самое короткое решение (по правилам код-гольфа), получит от меня в личку мой любимый стикерпак и ссылку на вакансии)
834 просмотров · 10 реакций Открыть в Telegram · Открыть пост на сайте
"Саша, иди на завод, там нужны рабочие руки!" (с) сценка из квн

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

Что такое завод? Ну, в общем, это настоящий завод. Три этажа, несколько десятков цехов, сотни единиц номенклатуры, тысячи техпроцессов, тьма приборов, станков, автоматов и конвейеров. Говорят, это самое эффективное производство еды в разрезе производительности на единицу площади. Например, там есть автомат, который может лепить несколько тысяч сырников в час! Его даже приходится "убавлять", чтобы эти сырники успевали от него отгружать. Бульоны варятся в семи баках на 300+ литров (притом бульон для фо-бо варится аж 6 часов). А прибор для нарезки перемалывает почти 10 тонн морковки за одну смену. Куда столько? Ну, люди любят салатики)

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

Но при чем тут IT - спросите вы. А без IT современное производство обойтись не может. Техпроцессы, планшеты, ТСД, экраны, сеть, принтеры этикеток, датчики на станках, камеры, контроль качества, учет, поставки, склад, отгрузки - все это связано в живой IT-организм, который должен быть здоровым и эффективным. А системами учета, процессами, софтом и ит-инфрой занимаются как раз мои команды. И все это - офигенно сложно. Зато интересно и кайфово. Много систем, немного магии. В каждом рецепте есть щепотка кода, чтобы блюдо удалось на славу. Приятного аппетита!
791 просмотров · 46 реакций Открыть в Telegram · Открыть пост на сайте
Ложь и провокация

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

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

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

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

Проверяйте свои источники и не верьте интернетам на слово.
838 просмотров · 35 реакций Открыть в Telegram · Открыть пост на сайте
К ветеранам C++

Как вы все помните, C++ - лучший язык программирования. Нет задач, которые нельзя на нем решить. Так что в любой непонятной ситуации - используйте плюсы. В моих командах в Лавке, увы, плюсы почти не используются. Запрещать им где-то переходить на плюсы - грех. Заставлять - садизм. Так и живем.

Есть же еще userver - дружелюбный опен-сорсный фреймворк для С++, родившийся в Городских сервисах Яндекса. Штука классная - снижает порог входа, снимает много болей, повышает продуктивность разработки. Но есть нюанс.

Честно говоря, сам я перестал писать на плюсах еще во временя 17го стандарта, и новинок 21 в глаза не видел. Но если вы - практикующий плюсарь и следите за трендами - рекомендую заскочить на встречу российской рабочей группы по стандартизации С++ 15 декабря в 18:30 (Москва + онлайн) - это «голос» русскоговорящих разработчиков в вопросах совершенствования стандарта языка. Встречу проведёт тот самый Антон Полухин, член российской рабочей группы по стандартизации С++ и руководитель группы общих компонент в Техплатформе Городских сервисов Яндекса. Будут и ответы на вопросы о стандарте С++, и афтепати.

А если вы уже достаточно суровы и бородаты, у нас и вакансии есть - советую присмотреться!
811 просмотров · 14 реакций Открыть в Telegram · Открыть пост на сайте
Buckets Empire

Для продолжения #лёха_строит_бэху нужно, чтобы бэха вернулась из сервиса по слесарке. Но и без авто-контента я не оставлю ни Лёху, ни канал.

Выходные без тачек - пустая трата времени. Поэтому мы отправились в музей старых японских ведер. Точнее, в два его филиала, в Кузьминках и в Орехово. Там в сумме 200+ тачек из 70-х, 80-х и 90-х. Те самые теплые-ламповые машины, от которых в душе что-то шевелится, в отличие от всего современного автопрома. Царство велюра и слепых фар. Антураж музея дополнен старыми японскими магнитофонами и музыкой из форсажа и нид-фор-спида.

И как не упомянуть олдовый игровой автомат, на котором Леха посоревновался в скорости доставки тофу на хачироку!

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

На обратном пути заехали в магазин Форвард Авто. Мы с Лёхой уже сколько лет болеем за их команду в дрифте - и ни разу не были в их магазине, надо было исправлять. Увы, восхищаться мы к тому моменту уже устали, а все слюни выпустили в музее. Поэтому в Форварде взяли сыну кепку и модельку, а на около-стоковую е30 у них, ожидаемо, ничего не было.
685 просмотров · 13 реакций Открыть в Telegram · Открыть пост на сайте
"Ура, склад!" (с) Шарик

Продолжаем изучать Лавку изнутри. Недавно рассказывал про сборку заказов на дарксторе. Неочевидно, но сборка заказов - лишь 1 из 72 типов задач, которые выполняются на дарке (число не выдумано, у меня и табличка есть!). Есть еще тьма вещей, от приемки товара и размещения (про это немного упоминал тут), до переборки яиц и фасовки бананов. Большая часть задач выполняется через приложение Полка, которое разрабатывает моя команда.

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

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

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

Я, когда впервые открыл этот интерфейс, был обескуражен обилием возможностей и контроля. А самое удивительное, что оно супер-удобное и работает очень даже шустро. Несмотря на то, что это монолит на питоне. Кстати, его бы-таки распилить. Так что если вы любите жесткое техно и умеете в питон/голанг, мы вас ждем тут (всех остальных крутых разработчиков, аналитиков и мл-щиков тоже ждем, вы гляньте там, много вкусного).
877 просмотров · 15 реакций Открыть в Telegram · Открыть пост на сайте
str = 'Quoliti Ashurenes'

def test_str_correct():
assert len(str) == 17
assert str.count('s') == 2
wrds = str.split()
assert wrds[0][0]+wrds[1][0] == 'QA'
print('PASS\n')


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

A QA engineer walks into a bar.
Orders a beer.
Orders 0 beers.
Orders 99999999999 beers.
Orders a lizard.
Orders -1 beers.
Orders a ueicbksjdhd.
First real customer walks in and asks where the bathroom is.
The bar bursts into flames, killing everyone.

(Фьюить-ха!)
Так вот.
Есть тестировщики, которые вручную тестируют сервис по тесткейсам. Иногда - без тесткейсов, т.н. исследовательское тестирование.
Есть тестировщики, которые запускают автотесты и интерпретируют результаты. Или сами пишут автотесты, почему бы и нет.
И все они - молодцы и умнички, если того требует конъюнктура момента, команда, продукт, должностные инструкции.

Но есть еще QA-инженеры. Это уже немного другая лига. Что отличает хорошего куа-инженера?
- ориентируется в своем продукте как рыба в воде и точно знает, как продукт должен себя вести, и почему так;
- формирует тест-кейсы, притом на раннем этапе проектирования фичи (подход 3-амиго ftw!);
- участвует в поддержке продукта (л3-л4), чтобы хорошо понимать потребности пользователей;
- знает, что и как нужно проверить, чтобы на самом деле убедиться, что продукт работает как надо (а не как в примерах выше);
- умеет подбирать оптимальный метод проверки в соответствии с пирамидой тестирования (юниты, авто, интеграционные, е2е, ui-тесты);
- заинтересованно участвует в максимальной автоматизации процесса, но понимает ее границы применимости.

Еще важно понимать, что QA - quality assurance - это не всегда должность. Это, скорее, роль. И примерять эту роль на себя должен отнюдь не только тестировщик - хочется, чтобы все участники процесса, включая разработчиков, тимлида и продакта, тоже были немного QA. Потому что только совместными усилиями можно ашшурить ту самую кволити, а мы, в конце концов, одно дело делаем.

Но если и есть выделенные люди на задачи QA - они должны не просто тестировать, а двигать команду, продукт и процессы в сторону обеспечения качества. Что бы это ни значило (а значит оно в разных командах разное). Даже если для этого придется внедрять ИИ. Всем кволити!
802 просмотров · 23 реакций Открыть в Telegram · Открыть пост на сайте
Восьмой класс, вторая четверть

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

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

Я аж сначала не понял, что он хочет сказать. А потом как понял! Для тех, у кого школьная програма по химии за 8 класс уже слегка заплыла рутинными эксельками, напомню: валентностью называют способность химического элемента образовывать связи с другими атомами. Она определяется числом электронов на внешнем энергетическом уровне. Чем больше у атома «свободных» электронов или незанятых мест для них, тем больше связей он может образовать. Думал ли я, что это знание поможет мне в работе? Пожалуй, нет. Я слово-то это, скорее всего, со школы не слышал.

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

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

В общем, почему-то мне этот метафорический термин так понравился, что я решил им поделиться с вами. А заодно чуть освежить знания по химии.
768 просмотров · 36 реакций Открыть в Telegram · Открыть пост на сайте
Сферический код в вакууме

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

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

Но на днях я познакомился с одним человеком, у которого специфика работы не менее занятная. Его код работает ... в космосе! Он пишет ПО для спутников связи. Мне тут же стало интересно - какие ограничения накладывает эта специфика, в сравнении с обычными требованиями, когда код работает у тебя "в руках". Основной подход там - это отказоустойчивость, резервирование и способность к самовосстановлению. Потому что ты не можешь удаленно подключиться и что-то перезапустить (да, там нет kvm/ipmi). То есть система должна сама себя восстанавливать при любых сбоях. И рекомендуется не забывать оборачивать код в трай-кетч :). Уверен, это весьма интересно.

А в каких экстремальных средах работает ваш код?

П.С. А познакомился я с этим человеком через штуку, которая называется Сеньёрный разговор. И мне разрешили про нее вам рассказать. Вообще она пока в глубоком пилоте, мы ее анонсировали на нашем Yandex Tech Tour в Казани и Нижнем. Но вы (по секрету) сможете поучаствовать и поделиться фидбеком. Пилот продлится до 22 декабря. Также оговорюсь, что пока оно рассчитано только на разработчиков. Механика простая: идете в бота https://t.me/seniortalks_bot, там отвечаете на пару вопросов о себе, бот ищет вам собеседников. Выбираете собеседника по душе, выбираете слот, созваниваемся по зуму. Среди возможных собеседников - эксперты Городских сервисов Яндекса (разработчики, руководители, но и не только), включая меня. На встречах можно обсудить технологии, конкретные кейсы и обменяться опытом - в целом тематика общения не сильно ограничена. Заходите, поболтаем!
746 просмотров · 27 реакций Открыть в Telegram · Открыть пост на сайте
304 Not Modified

Новостей по проекту #лёха_строит_бэху на этот раз мало.

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

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

И еще заказал новые хромированные ноздри. Потому что для бмв это святое) Попутно впервые воспользовался авито не как доской объявлений (когда звонишь продавцу и договариваешься о доставке), а как маркетплейсом (тыц в корзину, оформил, оплатил, получил). Посмотрим как пройдет.
744 просмотров · 4 реакций Открыть в Telegram · Открыть пост на сайте
[▮▯▯▯▯}

7 ноября выступал на конференции Highload++. Там знакомились и общались с участниками, было интересно!
15 ноября был ведущим митапа Yandex Tech Tour в Казани. Много нетворка, классные гости, крутая площадка.
20 ноября модерировал один из столов на сходке TeamLead Club. Мощные дискуссии, интересные собеседники, камерная атмосфера.
22 ноября участвовал в Yandex Tech Tour уже в Нижнем Новгороде. Вел экспертные консультации, много нетворка и крутых знакомств.
26 ноября помогал провести тренинг внутри компании. Тема сложная, но к ней точно есть интерес и спрос на обсуждение.

Tech Tour, кстати, удался на славу. Были интересные доклады, ребята очень круто подготовились. Порадовала аудитория - пришли мощные спецы, задавали грамотные вопросы, и в общении в кулуарах поднимали интересные темы. Любые митапы - всегда здорово, но в этот раз все прошло просто замечательно. Команда организаторов (деврелы, рекрутмент, ивент-агентство) - просто волшебники, спасибо им! Это третий такой ежегодный тур Городских сервисов Яндекса по разным городам, и с каждым годом получается все лучше.

Это я все к чему - и тут я выяснил, что social battery - это не миф. Она и вправду может сесть. Особенно если добавить туда 4х2 перелета за месяц, две рабочие субботы и пяток сложных собеседований (собесы тоже тратят социальную батарейку - нужно быть приветливым и тактичным вне зависимости от контекста и своего состояния, нужно быстро найти общий язык с кандидатом и подстроиться под его стиль общения, нужно все записывать и при этом осмысленно обсуждать предмет разговора - когнитивная нагрузка весьма существенная).

В общем, при всей моей любви к митапам, нетворкингу и новым знакомствам, не стоит их концентрировать в пределах месяца в таких количествах. Либо, как посоветовала мне жена, нужно обзавестись social power-bank. Вот только где такой взять - она не сказала. Может, вы знаете?
1 022 просмотров · 36 реакций Открыть в Telegram · Открыть пост на сайте