Pull to refresh

Расчетная архитектура платформы для A/B-тестов Mail.Ru

Level of difficultyMedium
Reading time9 min
Views3.1K

Привет Хабр! Меня зовут Андрей Каймаков, я работаю в продуктовой аналитике Mail.ru в VK. Сейчас практически каждая IT-компания (да и не только IT) знает про A/B-тесты и понимает важность проверки новых фичей с помощью этого метода. Когда фичей становится много, то A/B-тесты начинают занимать значительное время в работе команд. Чтобы автоматизировать эти процессы создаются платформы для проведения A/B-тестов. Мы разрабатываем свою систему с 2017 года, а недавно сильно ее обновили. Хочу вместе со своим коллегой разработчиком Андреем Чубаркиным поделиться опытом и инсайтами, которые мы обнаружили в ходе этого проекта. 

Читать далее
Total votes 27: ↑25 and ↓2+23
Comments7

Релизная политика против хаоса

Reading time9 min
Views2K
image

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

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

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

Меня зовут Михаил Щеголев, мы вместе с Константином Дерешевым занимаемся релизной политикой в одном из крупных российских банков. Мы любим свою работу, а дедлайны не любим.

Особенно, если дело касается еженедельных релизов.
Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments5

Механики удержания в играх

Reading time6 min
Views13K

Допустим, вы сделали игру. Допустим, она неплоха или даже хороша! В нее заходят игроки, ее скачивают, но вот только не задерживаются надолго. В чем причина? Как завоевать любовь геймера и “подсадить” его на свой продукт? 

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

Читать далее
Total votes 9: ↑7 and ↓2+5
Comments27

Все оценки сроков разработки ПО — ложь

Level of difficultyEasy
Reading time15 min
Views26K

▍ Разработка ПО — это исследование


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

В разработке ПО мы не тратим время на задачи, решения которых знаем. Если решения уже существуют, мы добавляем в качестве зависимости пакет или библиотеку с этим решением, или копируем старый код, или делаем что-то ещё, на что требуются секунды, а затем можем переходить к следующей задаче. Почти всё время разработки тратится на новые задачи, ответов на которые мы не знаем. Часто они новы ужасно скучным образом, например, «как нам сохранять эту модель данных с этими конкретными полями в эту конкретную базу данных?» Но именно из-за них эта ситуация отличается от всех остальных (или, по крайней мере, от тех, которые мы смогли найти) и именно это занимает всё наше время.
Читать дальше →
Total votes 80: ↑75 and ↓5+70
Comments67

Вышел Go 1.20. Обзор под катом

Reading time4 min
Views4.3K

Команда разработчиков Go представила Go 1.20. Загрузить его можно здесь.


Благодаря раннему обширному тестированию и повышенной общей стабильности кодовой базы была расширена фаза разработки — и это пошло на пользу Go 1.20. За подробностями приглашаем под кат, а за полезной теорией и практикой — на наш курс по Backend-разработке на Go.

Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments0

Всё, что вы должны знать о Платформе nanoCAD 21

Reading time1 min
Views4.4K

Современные инженерные решения должны адаптироваться под вас. Так была создана Платформа nanoCAD 21 – гибкий, технологичный и прозрачный инструмент инженера-проектировщика.

Как nanoCAD 21 позволяет сократить время проектирования? Сохранятся ли файлы, если произойдет резкий скачок напряжения? Какие новые фичи появились в этом релизе?

Смотрите запись презентации, чтобы узнать, чем nanoCAD 21 может быть полезен именно вам.

Читать далее
Total votes 15: ↑12 and ↓3+9
Comments17

Сервер на «малинке» и бесплатный каталог приложений для облака

Reading time3 min
Views6.8K

Привет, Хабр! Многие из вас читают тексты, опубликованные в блоге Selectel. И, раз уж вы здесь, мы бы хотели поделиться несколькими новостями продуктов компании. В этом выпуске — выделенный сервер на базе Raspberry Pi за 499 рублей в месяц, 8 топовых GPU в одной конфигурации и бесплатный каталог приложений для «Облака на базе VMware».

Обязательно напишите в комментариях, интересен ли вам такой формат, или поучаствуйте в опросе в конце текста. Будем рады узнать ваше мнение!
Total votes 35: ↑35 and ↓0+35
Comments3

В Twitter скрыли адресатов реплаев пользователей

Reading time1 min
Views1.1K

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

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments0

GitHub Flow: рабочий процесс Гитхаба

Reading time10 min
Views125K
Краткое предисловие переводчика.
Захватывающе интересная статья одного из разработчиков «GitHub Inc.» о принятом в компании рабочем процессе потребовала употребить пару специальных терминов при переводе.

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

Другое понятие, «deploy», на русский часто переводят словом «развёртывание», но в моём переводе я решил вспомнить оборот из советского делопроизводства — «внедрение инноваций на производстве» — и стану говорить именно о «внедрении» новых фич. Дело в том, что описанный ниже рабочий процесс не имеет «выпусков» (releases), что делает несколько неудобными и речи о каком-либо «развёртывании» их.

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

Я стремился употреблять словосочетание «в Гитхабе» в значении «в компании GitHub Inc.», а «на Гитхабе» — в значении «на сайте GitHub.com». Правда, иногда разделять их сложновато.

Проблемы git-flow


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

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

Для меня одной из более крупных проблем git-flow стала его сложность — бóльшая, чем на самом деле требуется большинству разработчиков и рабочих групп. Его сложность ужé привела к появлению скрипта-помощника для поддержания рабочего процесса. Само по себе это круто, но проблема в том, что помощник работает не из GUI Git, а из командной строки, и получается, что те самые люди, которым необходимо действительно хорошо выучить сложный рабочий процесс, потому что им вручную придётся пройти все шаги его — для этих-то людей система и недостаточно удобна для того, чтобы использовать её из командной строки. Вот что становится крупною проблемою.

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

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

Рабочий процесс Гитхаба


Читать дальше →
Total votes 111: ↑105 and ↓6+99
Comments47

Большие мелочи: 7 возможностей UBANK, которые сделают вашу жизнь проще и веселей

Reading time4 min
Views15K

Sherman Geronimo-Tan

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

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

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

Иногда становится обидно, что некоторые люди, один раз заплатив за телефон, думают, что это все, на что способен наш сервис.
Читать дальше →
Total votes 7: ↑2 and ↓5-3
Comments13

10 полезных фич R, о которых вы могли не знать

Reading time5 min
Views9.9K
image

В R полным-полно самых разных функций. Ниже я приведу десять самых интересных из них, о которых многие могли не знать. Статья появилась после того, как я обнаружил, что мои рассказы о некоторых возможностях R, которые я использую в работе, восторженно воспринимаются знакомыми программистами. Если вы и так знаете об этом всё, то прошу прощения за потраченное время. В то же время, если есть чем поделиться — посоветуйте что-то полезное в комментариях.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments7

Занимательная археология: стилевое руководство R под лупой

Reading time6 min
Views3.9K
Как известно, код читают намного чаще, чем пишут. Чтобы его мог читать хоть кто-то, кроме автора, и существуют стилевые гиды. Для R таковым может быть, например, руководство Хэдли.

Стилевой гид это не просто негласный договор разработчиков – за многими из правил стоит любопытная предыстория. Почему стрелка <- лучше знака равенства =, почему старожилы R не любят нижнее подчеркивание, как рекомендуемая длина строки связана с перфокартой, и о многом другом – далее.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments8

Sibur Challenge 2020 или «как мы фичи придумывали»

Reading time4 min
Views1.3K

Всем привет! В этом году компания Sibur Digital вновь проводила крупный (по сравнению с другими российскими) чемпионат по анализу данных. Мы с другом в нём участвовали и хотели бы поделиться с читателями Хабра своим решением и опытом, полученным от участия. Конечно вряд ли мы Америку откроем этой статьей, но какой-нибудь новичок в соревнованиях по АД точно сможет почерпнуть для себя что-то полезное.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments4

Как понять, что новая фича принесет пользу продукту, а не навредит ему?

Reading time7 min
Views9.1K

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

Как понять, что функция понравится потребителям и будет для них полезна? Для этого используют критерий feature/product fit. Он помогает определить ценность новой фичи и ее влияние на развитие продукта в целом. Далее мы более подробно поговорим об этом показателе, а также приведем несколько интересных примеров из практики.

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments3

Жизнь до и после Scrum в разработке B2B продуктов

Reading time8 min
Views3.8K
Привет, Хабр! Сегодня мы хотим поговорить на тему Scrum, а точнее поделиться своим опытом внедрения новых процессов в разработке. Под катом — рассказ о том, как преодолевать проблемы B2B-разработки при внедрении agile, на примере нашего продукта Solar Dozor. Делимся откровениями о жизни до и после Scrum.


Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments2

Оценка важности «фичей» для нелинейных моделей

Reading time4 min
Views5.1K

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

В стандартных пакетах для машинного обучения, таких как sklearn, xgboost, lightGBM существуют методы для оценки важности влияния на конечный результат той или иной фичи (параметра). Однако эти метрики важности не дают представление о том, как именно эти признаки влияют на предсказания модели. Например, как время проведенной операции указывает на то, была ли сделка мошеннической? Или как сильно адрес прописки владельца карты смещает предсказание модели? Для ответа на эти вопросы необходимо найти комплексное решение, которое помогло бы повысить интерпретируемость нелинейных моделей. Таким инструментом является библиотека SHAP. В библиотеке SHAP для оценки вклада фичей в итоговое предсказание моделей рассчитываются значения Шэпли. Для оценки важности фичи происходит оценка предсказаний модели, которая была обучена на основе датасета с и без данной фичи.

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

Приведенный ниже код взят с kaggle и доработан для демонстрации функций рассматриваемого инструмента.

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments0

Take a bite и «Команда Тигров»: опыт применения Agile-методов для решения непонятных задач и создания больших фич

Reading time9 min
Views2.9K

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

Читать далее
Total votes 12: ↑11 and ↓1+10
Comments5

Выбираем метод для поиска схожих операций

Reading time4 min
Views1.5K

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

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

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

Фичи, по которым мы будем сравнивать и искать схожие операции:

Читать далее
Rating0
Comments0

Расчет факторов в антифроде. Доклад Яндекса

Reading time16 min
Views7.5K
Антифрод — сервис по поиску и нивелированию случаев эксплуатации других, общедоступных сервисов Яндекса. Три года назад мы начали проектировать платформу, позволяющую быстро и легко развернуть антифрод где угодно в компании. Сложность задачи в том, что многим сервисам нужны максимально строгие гарантии по скорости, надежности и качеству; часть из них оперирует очень большими объемами данных. Команде антифрода, в свою очередь, важна гибкость системы, простота поддержки и выразительность факторов, на которых будет строиться машинное обучение.


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

Команда антифрода, по сути, решает задачу бинарной классификации. Поэтому доклад может быть интересен не только специалистам по борьбе с фродом, но и тем, кто делает разнообразные системы, в которых нужны быстрые, надежные и гибкие факторы на больших объемах данных.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments3

Что будет с C#, и при чём здесь Страуструп?

Reading time11 min
Views25K

Я люблю C#. После университета моим первым настоящим проектом по программированию была игра, написанная на Unity. И я сразу же влюбился в этот язык: он казался таким свежим. И был похож на Java… если бы в Oracle по-настоящему заботились о Java, это вернуло бы короткий золотой век Java. Слышал, что с тех пор они перешли на цикл ещё быстрее, так что всё могло измениться.

Я по-прежнему люблю этот язык. Может, он и не самый модный, но всё равно способен делать что угодно. Пример — многопоточность. Думаете, это сложно? Тогда попробуйте в Dart поиграть с Isolate и поймёте, как хорошо иметь C#.

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

Читать далее
Total votes 80: ↑32 and ↓48-16
Comments171