Ctrl + ↑ Позднее

Innovation comes from trial and error. Scientific breakthroughs are often a result of countless experiments. The successful inventions are born out of countless attempts — just like the Edison light bulb.

It looks like the same principle can be applied to digital products. Luckily, in software we have a true luxury of being able to run experiments in production and learn from them without a huge cost overhead. Compare it with the construction business where a building can be built only once, then possibly tweaked just a little, and all the learnings can be applied only in the next project. However, in startups and small companies the experiments are surprisingly not that common — while in some large companies the whole established product can be an automated A/B-test machine. Let me share some points which should be kept in mind while doing experiments to ensure a successful outcome. I hope that even if you are not doing experiments now, you will see why they can be useful for you, and what to pay attention to.

1. Have a clear hypothesis

This is the most important tip. Don’t even start unless you have a clear understanding of what the proposed change should bring, and ideally what the action plan should be after the experiment concludes.

Good example:

If we reduce the amount of steps in the onboarding flow, more people will finish it and start using our service. If this turns out to be true, we will roll out the shorter flow.

Bad example:

If we redirect some of our app users to our website, more people will use our service.

Why bad: not really clear if more usage comes from the redirect itself — maybe it’s people who have to continue a critical task on web + there is no clear action plan — should we wind down the web version, should we prioritize the app, should we redirect on certain pages, etc.

2. Adjust for the stage of the product

If your product is rather established, you can run smaller experiments where each of them can move certain metrics. Then you iterate and gradually improve the whole thing. There is almost certainly no point in making drastic changes that can bring a lot of chaos in individual metrics.

If your product is still looking for product market fit, then basically every change can be big enough to steer the whole thing in a new direction, especially if there are not too many users. That means many decisions should be rather driven by your product vision and intuition, although you should still make informed decisions and measure the outcomes. And again, see the first point above — always have a clear hypothesis and an action plan.

3. Running a controlled experiment is better than not running it at all

Often some people on the team can be skeptical about some proposed changes, for example, having a new payment method can bring a lot of new purchases, however, this can be not enough to justify the flat fee that you’d need to pay for the integration. Running an experiment on a small number of users and proving it in a real life scenario is much more valuable than doing such projections, especially if the internal conversation seems to be stuck, and there is no clear path forward. If the implementation cost is not massive, probably the best move here is to get a buy-in from leadership and be clear about the hypothesis and the action plan depending on the outcome.

4. Have the right set up and tools

Always make sure that:

  • Test and control groups have consistent experience — i.e. a user from the test group will always have the test experience during the lifetime of the experiment.
  • Results are statistically significant — you can use some online tools to verify you get a proper result, not just random noise. Also keep in mind that the bigger the metric move you expect, the fewer participants you need to prove it — and vice versa.
  • Metrics are correctly calculated — meaning that you can reliably measure the outcome for the test vs control groups.

5. Be aware of other experiments that can affect your experiment results

Some experiments can be affected by external events — such as seasonality, or an operating system update, etc. Other experiments can lead to a different outcome because of other tests being run simultaneously. Try to avoid this by making the experiments either smaller or isolated from each other.


You introduce a new login screen, and also introduce Sign In with Google button.

Probably the best way here is to split into 4 independent groups (two-by-two: old/new login screen and with/without the Google button), and analyze accordingly.

6. Even negative results are a good learning

Sometimes people are afraid that their experiments can lead to worse results. I’d say this is still a positive learning because if the experiment was run in a controlled environment with a clear hypothesis, you don’t affect real users much, and most importantly now you know that some of your ideas won’t work out, and you can safely put it away until better times. Just treat it as a lucky scenario vs doing the same change because someone strongly believed in it and didn’t even run an experiment.

If all these points are taken care of, then hopefully the experiments should provide useful learnings to make your product better. Please share any interesting experiments you’ve run and what eye-opening insights they’ve brought.

Recently I’ve started writing more frequently about software engineering and mobile development in particular — mainly in English language — just to capture some thoughts that I find important, and some of them would hopefully be useful to other people too.
* * *
В последнее время я начал писать чаще об IT в целом и мобильной разработке в частности — в основном на английском языке — чтобы поделиться некоторыми мыслями, которые важны и интересны мне. Я надеюсь, что они будут также полезны и другим людям.

28 апреля 2018, 13:32

Обновление Прибывалки

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

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

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

И, как обычно, куча важных штук:

  • локализация на английский;
  • местные новости;
  • пешеходная навигация к остановке;
  • фидбек прямо из приложения;
  • виджет;
  • новомодные вещи типа 3D Touch, Spotlight Search или haptic-фидбек;
  • открытие остановки по QR-коду;
  • масса микроулучшений в поиске.

Красоту вроде не испортили:

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

Качайте, хвалите и критикуйте:

Скачать в App Store

И расскажите друзьям:

Пару недель назад случилась неприятность — мы не успели на нужный Аэроэкспресс и приехали в Домодедово примерно за час до рейса в Самару. Сейчас от платформы до здания аэропорта приходится идти по улице (а это с большим чемоданом в дождь получается довольно долго), и к стойке сдачи багажа мы успели подойти ровно за 45 минут до вылета.

Сотрудник S7 на стойке сообщил, что регистрация на рейс закончена и багаж сдать уже нельзя. Хорошо, что мы зарегистрировались онлайн заранее, но что делать с багажом — непонятно. Спрашиваем: «Как нам быть?» Нам говорят: «Не знаю, попробуйте пойти с чемоданом прямо к трапу, могут принять, а могут и нет».

Дали ещё вот такую бумажку:

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

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

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

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

Итак, что делать, если не успеваете сдать багаж:

  • зарегистрироваться на рейс заранее онлайн;
  • не нервничать;
  • попросить бумажку для багажа (и в идеале идти на посадку с представителем авиакомпании);
  • быстро идти с чемоданом через все рамки и контроли;
  • оставить багаж у входа в самолёт;
  • если нет на ленте, искать в негабаритном.

и как его исправить

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

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

Но есть один косяк — из коробки часы поддерживают лишь небольшой набор тренировок:

  • ходьба,
  • бег,
  • велосипед,
  • плавание,
  • эллиптический тренажёр,
  • гребля,
  • степпер,
  • «остальное» (Other).

Игровых видов спорта нет совсем. Я занимаюсь спортом шесть—семь раз в неделю, и ни одной из моих тренировок на часах нет:

  • теннис,
  • баскетбол,
  • традиционная силовая,
  • функциональная,
  • кросс-фит.

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

В АппСторе оказалось много приложений для разных видов спорта, и это натолкнуло меня на мысль порыться в документации HealthKit — фрэймворка для работы с тренировками и данными о здоровье. Оказалось, что в SDK доступен трекинг 70 (!) видов спорта.

Правда, почти все эти приложения какие-то кривоватые

В итоге я решил написать минималистичное watchOS-приложение, в котором были бы только нужные мне тренировки с возможностью легко добавить любую другую. Приложение получило кодовое имя «Just Do It», потому что там нет даже целей (мне и не нужно). Есть только выбор спорта и вывод основных показателей в процессе тренировки — время, калории, текущий и максимальный пульс.

Ну и главное — я хотел научиться писать приложения для часов. В итоге получилось вот что:

В комплекте идёт iOS-приложение, через которое можно стартануть тренировку на часах.

Исходный код лежит на Гитхабе.

Если вы пользуетесь часами и хотите добавить свой вид спорта, а также у вас есть Мак, Xcode и базовые навыки программирования, то это делается с помощью нескольких строчек кода в WorkoutConfig.swift.

Занимайтесь спортом! :-)

Ctrl + ↓ Ранее