🏍️ Более быстрая лошадь

🏍️ Более быстрая лошадь

Продуктоводы любят цитировать Генри Форда:

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

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

Кажется, в этой байке очень мало хорошего:

1. «Если бы спросил, они бы попросили». Да откуда ты знаешь? Спроси сначала — мало ли, вдруг ответы тебя удивят.

2. Допустим, реально ответили, что нужна «более быстрая лошадь». Это весьма полезная информация, только надо сфокусироваться на «быстрая», а не «лошадь». Почему важна именно быстрота, а не выносливость, комфорт или там стоимость владения? Что смогут они такого делать, чего раньше не могли? Сразу возникают вопросы, которые помогут увидеть правильное направление.

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

4. Средний продуктовод — далеко не Генри Форд (сорян). Не грех и спросить, корона не свалится.

В общем, я за другую цитату Форда:

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

7 важных факторов PHP-приложения

7 важных факторов PHP-приложения

Инженеры платформы Heroku (https://www.heroku.com/) на основе собственного опыта создали методологию (https://12factor.net/ru/) для разработки SaaS-приложений.

Эта методология учитывает три важных аспекта:
— расширяемость — развитие кодовой базы и функционала;
— сопровождаемость и возможность командной работы над проектом;
— масштабируемость.

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

Кодовая база (https://12factor.net/ru/codebase). Забота о коде начинается с принципов его версионирования и хранения. Используйте Git Flow или его адаптацию с учетом специфики работы ваших команд.

Зависимости (https://12factor.net/ru/dependencies). Используйте менеджер зависимостей Composer (https://getcomposer.org/) и его основные операции install и update для манипуляций c composer.json (https://getcomposer.org/doc/04-schema.md) и composer.lock.

Конфигурация (https://12factor.net/ru/config). Предпочтительным методом обработки конфигурации является использование переменных среды. Для работы с ними мы применяем компонент symfony/dotenv (https://github.com/symfony/dotenv).

Параллелизм (https://12factor.net/ru/concurrency). Выполняйте процессы в фоне, тем самым снижая время отклика при взаимодействии с вашим сервисом. Выделяйте веб-процессы в реальном времени и рабочие процессы. Первые принимают http-запросы от клиента, а вторые — выполняют фоновые задачи, например, с помощью брокера сообщений RabbitMQ (https://github.com/rabbitmq).

Паритет разработки/работы приложения (https://12factor.net/ru/dev-prod-parity). Для того чтобы обеспечить схожесть сред разработки, тестирования и продакшена, мы используем виртуализацию на основе Docker и специально подготовленные образы, содержащие одинаковые наборы и версии библиотек. Промышленные и тестовые среды отличаются лишь степенью масштабирования, на основе технологий K8S и Swarm.

Журналирование (https://12factor.net/ru/logs). Фактор утверждает, что приложение должно просто писать в STDOUT и STDERR, а среда должна отвечать за маршрутизацию этих сообщений в хранилище. Технология PHP-FPM позволяет производить вывод логов в STDOUT, что крайне полезно при работе с Docker-контейнерами. Для организации процесса логирования на уровне приложения мы используем сторонние внешние библиотеки, например Monolog (https://github.com/Seldaek/monolog) или компоненты фреймворков.

Задачи администрирования (https://12factor.net/ru/admin-processes). Реализовать сценарии администрирования приложения можно с помощью внешних библиотек, например Symfony Console (https://github.com/symfony/console). Большинство современных фреймворков имеют встроенные средства для организации запуска консольных команд для служебных целей и миграций. Например, в Yii Framework есть понятие консольного приложения (https://www.yiiframework.com/doc/guide/2.0/en/tutorial-console) и команды.

Подсчёт потоков

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

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

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

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

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

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

Время собирать фрукты

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

В выступлении Евгения Гурьянова из DocDoc на Product Sense (да, я всё ещё досматриваю то, что не успел послушать вживую в Минске) было про опыт использования этого подхода в масштабах компании и с активным использованием экспериментов. Команда Евгения проводит быстрые A/B проверки гипотез и примерно 2-3 из 10 экспериментов приносят рост конверсии. Причем не на пару процентов, как это обычно бывает, а сразу на 20-30! Вы удивитесь какие простые изменения могут дать заметный прирост в заявках от клиентов и, следовательно, в деньгах для компании!

Формат доклада тоже хорош. Фрукты Евгений классифицировал — будут и ананас, и груша, и даже картошка. Дело было в Минске... ;)

Рейчел Бергер написала о влиянии технологических компаний на дизайнерские портфолио.

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

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

Сами дизайнеры не считают это главной проблемой. Чтобы пополнять портфолио, надо делать проекты (1), которые хочется показать (2) в портфолио (3).

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

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

2. Непонятно, что дизайнер получит от пополнения портфолио. Работа у него и так есть.

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

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

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

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

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

Испытываю слабость к сделанным с любовью вещам.

Испытываю слабость к сделанным с любовью вещам.

Продукты — физические и цифровые — за которыми чувствуется человек и его мысль, не оставляют тебя равнодушным.

Казалось бы:
«Просто» крекеры.
«Просто» упаковка.

Но.

Смотрите, что написано внутри

«Привет!

Я — специальная конструкция :)

Именно благодаря мне при транспортировке крекеры не ломаются и остаются целыми.

Хорошего дня!»

То есть кто-то прошёл экстра милю:
— согласовал идею
— договорился о технологии
— и вовлёк команду в эти экстра косты на производство (с одной стороны)

С другой → удивил меня и порадовал.

Это настоящий микро-момент, где ты испытываешь своё микро-WOW: коробка рассказывает тебе свою историю в категориях пользы для тебя.

Дружественный, но не инфантильный tone-of-voice. Пожелание хорошего дня.

Если мы все с вами так будем подходить к работе, так строить команду и компанию, чтобы этого было больше — будем жить в другом мире.

Если знаете ребят — передайте респект.