Русский
Русский
English
Статистика
Реклама

Факапы

Разработчики любят похоливарней

28.07.2020 14:05:45 | Автор: admin
Казалось бы, программисты должны руководствоваться фактами, но вместо этого мы регулярно скатываемся в разборки. Конечно, хороший холивар на созвоне, в треде слака, публичном чате или комментариях к статье бывает полезен если остается конструктивным. Но в ряде случаев разговор начинает вестись по тем же паттернам, что у каких-нибудь антипрививочников или политиков: тут опустил часть фактов, там чуть нарушил цепочку мыслей но чувствуешь себя логичным, как волк в анекдоте про зайца и спички

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


Хочу поделиться наблюдениями в этот четверг вместе с Григорием Петровым, Антоном Назаровым и подкастом Цинковый прод. Подключайтесь похоливарить пообщаться.

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

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


Если что, запись выступления доступна здесь.

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

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

Из-за бага в Google WebView крашилось приложение у сотни тысяч пользователей. Мы решили перейти на движок от Mozilla. Переписывали приложение 2 месяца. Выкатили без WebView. Пользователи стали жаловаться еще больше: в новом движке медленно отрисовывалась сложная 2d-графика. Мы видели, что fps проседает, но не обращали внимания, тк фиксили другое. А гугл тем временем поправил баг. И мы решили откатить все, что делала команда эти месяцы.

История рассказана на условиях анонимности

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

Если отбросить детали, структура многих рассказов о неудачных решениях выглядит так:

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

Эти паттерны следствие когнитивных искажений в планировании и принятии решений, про которые так здорово рассказывает Григорий eyeofhell Петров. Пришла идея собраться и обсудить такой вот личный опыт через призму научно-популярного подхода. А если три человека в 2020-м хотят поговорить, они пишут подкаст ;) Тут и пригодилось знакомство с ребятами из подкаста, где регулярно поднимают холиварные темы.

В общем, в четверг поговорим про когнитивные искажения и их проявления в ИТ на реальных примерах:


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

Подключайтесь к лайву можно будет не только слушать и комментировать, но ворваться голосом, рассказать свою историю или спросить совета. Достаточно иметь аккаунт на Youtube.

p.s. Если получится прям хорошо, конечно же, опубликуем расшифровку избранных моментов и дополнительные ссылки по теме.
Подробнее..

Байки из дежурного склепа

31.07.2020 06:14:08 | Автор: admin
Предварительное уведомление: пост этот сугубо пятничный, и больше развлекательный, чем технический. Вас ждут весёлые истории об инженерных факапах, байки с тёмной стороны работы сотового оператора и прочий легкомысленный шорох. Если я где-то что-то приукрашу то только для пользы жанра, а если навру так всё это дела дней настолько минувших, что никому от того вреда не будет. Но если цепанёте глазом техническую или ещё какую лажу поправляйте меня нещадно, я всегда был на стороне справедливости.

Внимание, начинаю без разгона!

Backdoor во двор


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

Прошлое там


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



Если кто-то из упомянутых тут персонажей себя вдруг узнает привет вам!

Работает не трогай (но трогай, если не работает)


Одним из упомянутых выше сверхтехнарей был Миша Басов. За годы работы в Меге я о нём слышал много хорошего и интересного в том духе, что он стоял чуть ли не у истоков и запустил кучу процессов. Мне с ним пообщаться как следует не удалось: познакомились буквально в отделе кадров, когда я принёс документы, а он забирал.

Одна из систем мониторинга, с которой мы работали, была написана Мишей. Я уже не очень помню, что там мониторилось, но знаю, что Миша написал временное решение, которое быстро стало постоянным. Да и хорошо: многое из того, что истинные технари делают для собственных нужд на скорую руку, получается просто прекрасно. Тот мониторинг тоже всех устраивал, работая без всякой поддержки и обслуживания, правда, никто не знал, как.
Через пару лет после Мишиного увольнения мониторинг стал показывать пустую страницу.
Я сразу забил в набат. Старший смены забил в набат. Начальник сектора забил в набат. Начальник отдела забил в набат. Начальник службы забил в набат. Начальник департамента звякнул бубенцами. Звон услышал IT-директор всея Поволжья, тут же собрав совещание. Туда он позвал начальника департамента. Тот рявкнул на начальника службы. Тот, не понимая сути проблемы, позвал начальника отдела. Этот, не врубаясь в произошедшее, позвал начальника сектора, который вызвал начальника смены. Ну, а тот перевёл стрелку на меня.
Как-то подменившись с дежурства, я отправился на это совещание. Сказано было много слов, был призван ответственный за мониторинги (ничего внятного мы не услышали), было вспомнено, что мониторинг писал Басов, что мониторинг очень важный, но что никто не понимает и не знает, как он работает Всё свелось к тому, что нерабочую и непонятную систему надо убирать, а вместо этого внедрять проверенное решение от проверенного вендора.
Пока это всё говорилось, я выпросил у кого-то ноутбук и ssh-доступ на тот сервер. Мне было интересно посмотреть, что же за суперкрутую систему написал легендарный Басов.
Захожу, первым делом по привычке набираю
df -h

Команда отвечает мне что-то вроде:
Filesystem      Size  Used Avail Use% Mounted on/var            10G   10G  0G    100% /

Чищу переполнившийся за годы /var/log, обновляю мониторинг всё работает. Починил!
Совещание останавливается, комкается, все расходятся. По пути начальник отдела радуется и обещает мне премию!..

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

Где домики живут


Одной из обязанностей дежурных инженеров был контроль электронных ключей доступа в машинные залы. Сами залы меня тогда очень впечатляли: ряды стоек, забитых серверным и коммутационным оборудованием, линии оптоволокна и кросс-кабелей (где-то идеально уложенные, где-то превратившиеся в невероятный комок спагетти), постоянный гул кондиционеров и фальш-полы, под которыми было так удобно охлаждать напитки Входы в залы закупоривались тяжеленными гермодверями, призванными обеспечить автоматическую блокировку при пожаре. Вход и выход строго протоколировался под роспись, чтобы было известно, кто и зачем сейчас внутри.
Больше всего в этих залах мне нравились, конечно, серверные шкафы супердомиков два HP SuperDome 9000, обеспечивавших работу биллинга. Две идентичных ноды, одна всегда была боевой, а вторая синхронным горячим резервом. Различие меж ними было только в IP-адресах, один был x.x.x.45, другой x.x.x.46. Оба этих айпишника знали все инженеры, потому что если что-то на биллинге случилось первым делом смотришь, видны ли супердомики. Невидность супердомиков ахтунг.
Как-то утром подобный ахтунг случается. В течение двух секунд на обоих серверах исчезают все службы, биллинг схлопывается в ничто. Быстро проверяем сервера пингуются, но на них реально ничего нет!
Не успеваем мы даже начать положенный комплекс мероприятий, как слышим громогласный ор "УБЬЮ, СТУДЕНТ!"; в дежурку вбегает архиадмин всея серваков, срывает с полки электронный ключ от машзала и бежит туда.
Очень быстро после этого мониторинг приходит в норму.
Случилось вот что: новый сотрудник подрядной организации, конфигурировавший пачку новых виртуалок, ручками прописал им последовательные статические айпишники, от x.x.x.1 до x.x.x.100. Студент не знал о священных неприкасаемых адресах, а старожилам и в голову не приходило, что кто-то мог на них так покуситься.

Услуга Антиспам


Ух, ночные дежурства! Любил их и ненавидел, потому что это было 50/50: либо плановые работы на оборудовании, где ты принимаешь активное участие, сонными мозгами и дрожащими руками помогая инженеру, либо тишина со спокойствием. Абоненты спят, оборудование работает, ничего не ломается, дежурный расслаблен.


Дежурство идёт по плану.

Как-то раз такое полночное спокойствие нарушает звонок на служебный телефон: здравствуйте, это из Сбербанка беспокоят, у нас перестала работать ваша симка, с которой оповещения наши рассылаются.
Дело ведь давно было, ещё до внедрения IP-подключений к СМС-шлюзу. Поэтому, чтобы Сбер мог отослать смску со своего знаменитого номера 900, они брали предоставленную симку (скорее всего даже не одну), втыкали в GSM-модем, да так и работали.
Окей, проблему принял и начал копать. Первым делом проверяю состояние симки в биллинге, та заблокирована. Что за чёрт рядом красная надпись НЕ БЛОКИРОВАТЬ и ссылка на приказ генерального архидемона. Ух, прямо интересно.
Проверяю причину блокировки, делаю брови домиком и путешествую в соседний кабинет, где пялится в мониторчик девочка из фрод-отдела.
Леночка, говорю я ей, ты зачем Сбербанк заблокировала?
Та в непонятках: мол пришла жалоба, что с номера 900 идёт спам. Ну я и заблочила, утром бы разобрались.
А вы говорите абонентские жалобы игнорируются!
Симку обратно включили, конечно.

Очень страшная история


Когда я только устроился на работу, мне и другим новичкам провели что-то вроде ознакомительной экскурсии. Показали оборудование: сервера, кондеи, инверторы, пожаротушение. Показали базовую станцию, стоявшую в одном из машзалов для опытов, пояснив, что хотя передатчики включаются на минимальной мощности, лучше за экранированную дверь в это время не входить. Пояснили за устройство мобильной сети, про питание основное и резервное, про отказоустойчивость и про то, что сеть спроектирована так, чтобы работать даже после атомной бомбардировки. Не знаю, для красного словца это было сказано, или правда, но в голове это отложилось.
И действительно: какой бы ахтунг иногда не творился локально, поволжская голосовая сеть работала всегда беспрерывно. Я не связист, но в курсе, что оборудование (и базовые станции, и клиентские терминалы) рассчитано на максимальную выживаемость голоса. Отключилось питание на БС? Она снизит мощность, перейдёт на ДГУ/аккумуляторы, отключит передачу пакетного трафика, но голос будет идти. Порезали кабель? База перейдёт на радиоканал, которого для голоса хватит. Телефон потерял БС? Он увеличит мощность и будет щупать эфир, пока не зацепится за вышку (или пока не высадит батарею). И т.д., и т.п.
Но однажды в офисе мигнул свет, а на улице затарахтели дизель-генераторы. Все ринулись перепроверять свои железки: по IT-части ничего критичного не случилось, а вот с мониторинга БС раздалось озадаченное опаньке. И потом: парни, у нас ВСЕ базы легли, проверьте связь.
Достаём мобильники нет сигнала.
Пробуем IP-телефонию на мобильную связь выхода нет.
Сети нет. Вообще. Нигде.
Вспомнив слова про атомную бомбардировку, я подсознательно несколько секунд ждал, пока до нас докатится ударная волна другой причины пропадания сети почему-то в голову не пришло. Было страшно и любопытно одновременно: я как-то понимал, что сделать один хрен ничего не успею. Остальные ребята тоже оторопели, никто ничего понять не мог.
Взрывной волны не было. После пятисекундного шока рванулись к имеющемуся на такой вот случай телефону проводной городской сети, принявшись обзванивать региональные офисы. Городская сеть, к счастью, работала, но в регионах подтверждали: вся Самара мёртвая, ни железки не пингуются, ни дозвон не идёт.
Через пять минут кто-то из энергетиков принёс новость: бахнуло где-то на электростанции, обесточило минимум всю Самару, возможно и область. Выдохнули; а когда произошло переключение на резервные мощности то даже и вдохнули.

Ещё одна страшная (но немного глупая) история


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

Со стороны коммутаторщиков доносится негромкое Е***ть.
Смотрю к себе действительно е***ь: отвалилась кампусная сеть.
Через секунду умирает вообще всё (тогда ещё не было мемасика про Наташу и котов, а он бы пригодился). Пропадает пользовательский сегмент сети, пропадает технологический. С возрастающим ужасом пытаемся проверить, что осталось в рабочем состоянии, а проверив, тянемся к шкафчику за спрятанной бутылкой лечебного коньяка: остались только голосовые вызовы (я ж говорил, они живучи!), всё остальное сдохло. Нет интернета ни абонентского GPRS, ни на оптике, которая отводится нескольким субпровайдерам. Не отправляются СМС. Жопа! Обзваниваем регионы у них сеть есть, но Самару они не видят.
В течение получаса конец света стал почти материально ощутимым. Десять миллионов человек, у которых внезапно всё сломалось и которые не могут дозвониться в колл-центр, потому что в колл-центре голосовые терминалы работают через VOIP.
И это во время выступления всетемнейшего правителя! Очередная победа госдепа и Обамы лично!

Дежурившие технари подорвались с низкого старта и отработали очень чётко: в течении часа сеть ожила.

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

Праздник к нам приходит


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



Особенно нервничал Саша, отвечавший за биллинг. Он, в принципе, всегда выглядел так, будто вся его жизнь проходит на оголённом нерве, ведь ему приходилось разгребать всё добро, творящееся с биллингом, отвечать за все косяки, его чаще других будили по ночам; в общем, я не представляю, как и почему он работал там, где работал. Может, ему денег много платили, или семью держали в заложниках. Но в ту ночь у меня вообще было ощущение, что если по Саше щёлкнуть ногтем, то от скопившегося в нём внутреннего напряжения он рассыпется в пыль. На такой неприятный случай у нас есть веник, а пока же работаем работу, облизываясь на ждущий своей очереди коньяк.
Час за часом прошли все всплески нагрузки, все принялись перепроверять свои системы. Коммутёр бледнеет: на одном из региональных коммутаторов пропал весь биллинговый трафик. А это данные о всех вызовах, прошедших через коммутатор; они пишутся в файлик, который чанками по FTP (кондово, но надёжно) выкачивается на BRT для тарификации.
Коммутёр, представив, какого объёма скипидарную клизму ему поставят за потерю части новогодней выручки по целому региону, аж задрожал. Повернувшись к Саше, он обратился к сиятельному господину биллингисту полным волнительной надежды голосом: Саша, посмотри пожалуйста, может BRT успел выкачать тарификацию? А, ну посмотри, пожалуйста!.
Саша пригубил коньяку, закусил его икорным бутербродом, не спеша прожевал и, закатывая глаза от удовольствия, обусловленного тем, что косяк не у него, ответствовал: Я уже проверил, файлов нету....

(Мой чудесный корректор спросила о том, что же потом стало с бедным коммутёром. О, судьба его была ужасна: его приговорили к неделе дежурств на первой линии поддержки колл-центра, запретив материться. Бр-р-р!)

Киньте камень, кто безгрешен


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


Разбираем очередной залёт на пересменке.

За несколько лет работы там я могу вспомнить три случая, когда из отдела кого-то увольняли.
Однажды инженер в ночную смену решил жахнуть пивка, а тут в дежурку возьми и зайди технический директор. Он иногда мог вот так зайти по-простому поздороваться (вроде как сам с дежурных начинал). Спалил парня с банкой пива, щёлк на телефон, увольнение. Больше пива по ночам не пили.
Другой раз дежурный коммутаторщик какую-то сильно страшную аварию проморгал. Подробностей уже не помню.
И третий раз уже под конец моей работы там. Условия труда очень сильно просели, была дикая текучка и страшные переработки. Люди работали иногда сутки, потом шли поспать 12 часов и снова выходили на суточное дежурство. Я и сам так работал, пока позволяло здоровье и это оплачивалось; потом переработки оплачивать фактически перестали (стандартно обещали компенсацию отгулами, когда будет возможность но все понимали, что никто никогда гулять не пойдёт), а на дежурства выгоняли чуть ли не угрозами. У одного инженера не выдержала кукушечка, он посреди смены встал с рабочего места и ушёл домой навсегда, по пути заглянув в кабинет начальника службы, и послав того на три буквы. Помню рассылку почтовую, в которой этого инженера постфактум клеймили фашистом и предателем, в каждой строчке читалось, как у начальства пригорело от такого поступка.
Касаемо моих персональных факапов один случай своей необычностью запомнился. Опять же, ночное дежурство, всё тихо, ничего не происходит. На пересменке проверяем мониторинг: упс, ночью упала обработка данных с коммутаторов, хорошо так и давно горит красная лампочка. Я всю ночь смотрел на этот сигнал и не воспринимал его что ли. При всём том, что это был один из самых очевидных и наглядных мониторингов, я до сих пор не понимаю, почему не видел.
Тут никаких отмазок было не налепить, косяк чистый и стопроцентный, авария пятой категории и вполне вероятное увольнение. Меня после двенадцати часов ночного дежурства до обеда мурыжили, заставляя писать объяснительные. Поскольку в правду никто бы не поверил, пришлось придумать какой-то лепет, что я из-за травмы пережрал обезболивающего и уснул. Начальник службы орал на меня в своём кабинете, в общем, всё шло к увольнению но вылилось в выговор с депремированием. Премий к тем временам в Меге не видели уже несколько лет, так что ущерба никакого я не понёс.

Вспоминая эпизод с приходом техдира: однажды как-то ночью в дежурку забился какой-то жлоб и начал орать, что мы сидим незапертые (дежурка не должна быть заперта в принципе), что мы тут олени, и что к утру от всех нас он ждёт объяснительные про все наши косяки. Этим жлобом был начальник службы безопасности, и от него РАЗИЛО. Прооравшись, начбез свалил во тьму, а утром мы спросили своего начальника мол, что делать-то? Да н***й его шлите ответил тот, и на этом инцидент был исчерпан.

Как я сломал отдел


В те дни башорг (тогда ещё bash.org.ru, а не то, что там сейчас где) был ресурсом культовым. Цитаты там появлялись чуть ли не по паре в месяц, и иметь СВОЮ! ЦИТАТУ!!! НА БАШЕ!!! было столь же круто, как, скажем, свой домен второго уровня году в двухтысячном. Тот башорг был как-то больше айтишно-анимешный, хотя смешным он был для всех.
Каждое рабочее утро самого младшего инженеришки (то есть моё) начиналось с чтения башорга тридцать секунд смеха перед двенадцатью часами страдания.
Однажды коллега спросил меня, над чем это я хихикаю. Я показал ему, над чем. Он разослал ссылку по отделу.
Работа встала на пару дней: к моему удивлению никто из коллег про баш до того момента не знал. В дежурке стоял хохот: Ах-хаха-хаха, пропатчить KDE, ахаха-хаха!. Игого-го-го, топить ломы в ртути, бгегегег!. Рабочий день был потерян, с другой стороны жизнь тогда продлили себе знатно.

Бонус для дочитавших


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

18+, но из песни слов не выкинешь


Постскриптум


Эти истории обработанная компиляция некоторых постов моего ТГ-канала. Иногда там проскакивает подобная дичь; я ни на что не намекаю, но ссылочку всё же оставлю.

Всем хорошей бесфакапной пятницы!
Подробнее..

Айтишная субстанция

14.04.2021 08:08:47 | Автор: admin

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

Не бойся ошибаться, но работай над ошибками.

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

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

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

Бессмысленно бояться ошибаться. Поэтому вторая парадигма, которая следует из первой: не скрывай, не игнорируй, не ври, себе прежде всего. Ошибся признавай и иди исправлять. Естественно, найдутся те, кто будет делать из тебя козла отпущения и пытаться наказать. Если это руководитель это негодный руководитель, я бы подумал, стоит ли с таким работать, но это отдельная тема.

Докапывайся до причин.

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

Скажете: полноте, так не бывает! Отвечу: а вы сами не наблюдали, как после саморассоса проблемы на неё забивают? Технарям лень, менеджмент не выделяет времени (так заработало же!), причина не установлена, никаких выводов не сделано.
Что нужно делать: отложить все остальные дела, и заниматься только поиском источника странного поведения.

Технические подробности примера выше таковы: в приложении была удобная функциональность сброса к дефолту, написанная когда-то на старте проекта уже ушедшим разработчиком. Другой разработчик нашёл эту возможность, и добавил себе в конфиг её вызов раз в день ему было удобно каждое утро начинать с чистого листа. Ближе к релизу он случайно закоммитил этот конфиг в мастер-ветку; техлид был не на своём месте, и не очень хорошо понимал VCS, считая, что конфиги можно хранить в репозитории. Из-за кранчей и общей усталости изменение прошло мимо ревью, и выкатилось на прод.
Это, конечно, всё равно бы заметили, если б не очень хорошо настроенное кеширование данных в Redis. С ним приложение почти ничего не тащило из БД; запись-то шла, и хотя каждое утро таблички чистились, данные оставались в промежуточном кеше

Ну а дальше понятно: то ли сработал триггер принудительного обновления кеша, то ли Redis перезапустили без восстановления состояния не суть важно. Ежедневные дампы БД всё-таки были но пользы от них уже не было.

Не лезь в IT за деньгами (оно тебя сожрёт).

Ок, программирование одна из немногих профессий, позволяющая чувствовать себя белым человеком. Важная сноска: белым человеком в этой стране, где какие-нибудь полторы тысячи ежемесячных долларов возносят вас в верхний квартиль финансового благополучия. Каждый раз, когда кто-то заводит речь о том, что программисты много зарабатывают, я ору: это не они много зарабатывают, это все остальные получают очень мало!
Но даже это не будут лёгкие деньги. Образ хипстера-смузихлёба, за 300 килодолларов в секунду ненапряжно кодящего очередной стартап на новеньком макбуке фальшивая витрина профессии. В 100% случаев поначалу и в 90% случаев потом ваша работа будет похожа на работу золотаря, только лезть в вонючую яму придётся не руками, а мозгами. Причём частенько, пока вы разгребаете эту яму, сверху будет литься непрерывный поток новых нечистот. И самая мякотка в том, что пролетарий после смены на заводе переодевается из спецовки в треники, кладёт инструмент на полку и болт на работу. Он свободен. А айтишник всегда таскает с собой, если не ноутбук, то голову со всеми этими знаниями и абстракциями, и даже во сне его попускает не всегда.
Это, безусловно, к любой думательной работе относится, но IT наиболее очевидный и хайповый пример.

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

Люби критику.

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

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

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

Не работай в изменённом состоянии сознания.

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

Запустив chown под рутом, разработчик увидел неожиданно большой вывод в терминале, и тут же нажал ctrl+c, отменяя выполнение. Но было уже поздно: он опечатался в пути исполнения, вместо каталога приложения задав команде путь от корня. Это практически порушило систему; чтобы всё продолжило хоть как-то работать, пришлось тут же выдать всем объектам 777, и потом уже муторно восстанавливать руками и скриптами.

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

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

Дороже своего времени только время коллег.

Обычный диалог в чате плохой команды:

@username, мне нужно узнать, как сделать X, это твоя тема.
[Через пять минут]
Ау, @username?!
[проходит несколько часов, перемежаемых кидаемыми в чат смешнявками из тематических каналов]
Хай! Ещё надо?
[Нет, я час ждал ответа, не дождался, потратил два часа на самостоятельное разбирательство, хотя ты мог дать мне нужные данные за пять минут, потерял контекст выполняемых задач, и, в общем, профукал день. И это не в первый раз так. Когда ты обратишься ко мне, я тоже не буду торопиться!]
Уже нет, спасибо...

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

Как должен выглядеть диалог в хорошей команде:

@username, мне нужно узнать, как сделать X, это твоя тема.
Ок, смотри туда-то, там краткая дока для себя. Если нужны будут подробности у меня окошко через два часа, можем созвон.
Отлично, спасибо!

Проект выходит в срок, набирает аудиторию, Элон Маск пишет о нём в твиттере, стартап покупает Цукербергман за миллиард долларов, разработчики покупают себе золотые макбуки и начинают писать на них новый стартап.

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

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

Будь учёным.

К сожалению, обучение на айтишника обычно сводится к вот этому:

Баянистый баян из страны баянов

ЗАБУДЬТЕ ВСЕ, ЧЕМУ ВАС УЧИЛИ ПОСЛЕДНИЕ 9 КЛАССОВ. ВОТ БЕЙСИК, ОН РЕШАЕТ!
@
ЗАБУДЬТЕ ВСЕ, ЧЕМУ ВАС УЧИЛИ В ШКОЛЕ, ВОТ ПАСКАЛЬ, ОН РЕШАЕТ!
@
ЗАБУДЬТЕ ВСЕ, ЧЕМУ ВАС УЧИЛИ НА ПЕРВОМ КУРСЕ, ВОТ АСМ, ОН РЕШАЕТ!
@
ЗАБУДЬТЕ ВСЕ ЧЕМУ ВАС УЧИЛИ, ВОТ ДИПЛОМ ПО СИШАРПУ, РЕШАЙТЕ.
@
ЗАБУДЬТЕ ВСЕ, ЧЕМУ ВАС УЧИЛИ В ВУЗЕ, ВОТ ПОХАПЕ, ЗДЕЛАЙТИ НАМ САЙТ ПОЖАЛСТА

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

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

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

Stay calm.

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

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

Спорт необходим.

Через силу, через не хочу, через годы, через расстоянья занимайся своим организмом. Да, самое ценное у тебя в голове; ты сидишь внутри черепушки, а вот эта несуразная конструкция из костей, кишок, мяса и разных жидкостей служит только для поддержания существования. Обслуживать эту периферию не хочется: можно ведь угнездиться в удобном кресле, тратя силы только на лёгкие движения кистями рук. Пиццу и колу тебе могут доставлять курьером прямо к ротовому отверстию, удобно. Разве что, для гигиенических процедур придётся вставать; эх, когда уже научатся оцифровывать сознание?!

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

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

Комментируй это.

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

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

Не треплись много, треплись мало.

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

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

Ну я делал фичу X, там надо было вот это так, но я решил сделать это так, и

...Далее звучат минут всяких косвенных вещей, и заканчивается всё через полчаса подробностями о цвете шерсти собаки, встреченной докладчиком на улице. Если вообще заканчивается.

И все сидят, слушают, не прерывают потому что невежливо. И летучка растягивается на два часа; особенно это круто, если случается в середине рабочего дня, который, таким образом, оказывается потерян вернуться в контекст, из которого тебя вырвали, не так-то просто. Или докладчик начинает на общей встрече разбирать вопрос, который только его касается. Какую-нибудь багу, с которой он может и должен подойти к более опытному коллеге отдельно. Да какого?!..
Это не дело. Для болтовни есть менеджеры, вот пусть они между собой собираются и меряются, у кого софт-скиллы длинней. А время господ разработчиков ценнее и важнее, берегите его.

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

Делай бекапы!

Точно сделал? А если подумать? Автоматические? Инкрементные? На другую физическую машину? А лучше, конечно, на две. А восстановление проверил?

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

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

Знай свой инструмент.

Очень болезненное наблюдение: мало кто умеет пользоваться тулзами и окружением, с которыми работают. Примеры очевидны: от запуска команд с sudo по умолчанию (т.е. пользователь не понимает идею разделения привилегий и ни разу не натыкался на патч Бармина) до использования VCS в качестве помойки.

Собственно, помойка в гите (сто тысяч устаревших серверных веток, мусорные commit message, не относящиеся к делу файлы) это погань, от которой лид команды должен отучивать разработчиков. А за форс пуши уже и наказывать: как правило, форс пуш применяется неопытным разработчиком, как универсальное решение какой-то проблемы, с которой нормально справиться он не смог. Не порешал конфликты при мерже, например, испугался и перезатёр файлик локальным бекапом (он-то по старинке версионируется каталогами!). Беда тут в том, что с гитом работает вся команда, и один косяк может создать проблемы всем сразу.
Хуже ситуации с одним разработчиком, не умеющим в git, только когда в него не умеют все. И всем плевать. И конфиги хранятся в гите, и деплой делается ручками, и тысяча веток на сервере, и хардпуши сразу в мастер, и прочее, и прочее. Видел и вижу такое, к большому сожалению, очень часто.

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

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

Подробнее..

Ошибки в дизайне AB тестов, которые я думала, что никогда не совершу

09.09.2020 10:06:55 | Автор: admin
Запуская свои первые эксперименты, я считала, что все эти три / пять / семь самых популярных ляпов, о которых читала в статьях и слушала на конференциях уж точно не про меня. Тем более в дизайне теста помогал большой красивый шаблон исследований, принятый в компании.



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

Хотела нанести пользу новым пользователям, но они вели себя естественно не так, как задумано


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


Это может произойти по десяткам причин от банального мисклика по уведомлению в браузере (как на этой картинке) до совсем экзотических случаев: например, как-то раз человек пробовал заниматься из Tesla, а там свое ПО, которое мы не поддерживаем.

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

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

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


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

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

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


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

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

Не спрашивала себя А раскатить-то сможем?. Или история про звонок, который и правда очень важен для нас


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

Поэтому перед каждым занятием методисту нужно найти ученика, который готов к созвону: для этого система выдает ему несколько контактов, и преподаватель их обзванивает. Это отъедает 12-15% времени, которое человек может потратить на что-то более полезное или приятное.

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

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

Мы хотели сделать опыт пользователя максимально бесшовным.


Поэтому решили переключать такие звонки сразу на входящую линию телефонии. Даже если вопрос не был срочным. Методисты в тех же случаях говорили: Вам перезвонят через 3-5 минут, чтобы переназначить урок. И у операторов был запас времени, чтобы распределять нагрузку и успевать помочь всем.

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


В пиковые моменты ситуация напоминала классическую игру) За фото спасибо Википедии и ее контрибьютору perepelin30.

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


Запускала тест, проверяла, что все идет нормально, шла разгребать кучу текущих задач


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

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


Тогда пришло решение: давайте отправлять смс-напоминание. Примерно такой текст уходил родителю ближе ко времени вводного занятия.

Рост числа вводных уроков без срывов не значит роста конверсии в оплату. Нужно прикинуть ROI. Для этого проведем эксперимент:

  • рандомно поделим все заявки по детскому направлению на две группы,
  • родителям в первой группе не отправим ничего у них обычный флоу,
  • родителям в другой группе отправим два смс-напоминания: за 24 и за 1-2 часа до начала урока.

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

Через пару недель заглядываю в дашборд а там кроме тестовой и контрольной группы есть еще какие-то пользователи.



Если мы хотели делить 50 на 50, то красный график явно говорит что-то пошло не так.

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

p.s. Я очень надеюсь, что этот текст поможет кому-то совершить меньше ошибок в своих тестах. Скорее всего у вас будут или уже есть свои забавные кейсы: будет круто, если вы когда-нибудь тоже ими поделитесь!

p.p.s. Пост основан на докладе в ростовском ИТ-комьюнити RnDTech если вы живете где-то на юге страны, присоединяйтесь, ребята делают отличный движ.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru