Feature flags

Feature flags

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

Чаще всего их формирует фронтенд, и отсылает на бекенд в момент каждого запроса: типа вот этому пользователю в списке друзей показываем количество общих, а тому — нет. Пример — гитхаб, который передает фиче-флаги в заголовке media при каждом запросе. Сейчас у них в API, к примеру, включается-выключается одновременно 30 фич.

Есть ещё одно очень полезное применение фиче-флагов — полное отключение функций приложения на уровне инстанса бекенда. К примеру у нас в ЦРМ есть простая фича — уведомлять пользователя по СМС о статусе заказа. Но я не хочу, чтобы СМС уходили с тестовых стендов или из CI, даже если кому-то хватит ума прописать боевые ключи на них. Поэтому я делаю фиче-флаг ENABLE_NOTIFICATIONS и включаю его только в переменных окружения на проде.

Для серьезных случаев, когда одна фича затрагивает несколько проектов, есть суровые системы корпоративного feature toggle, вроде Unleash. Получается централизованное хранилище признака `включенности` фич.

GitHub Developer
API previews
Get started with one of our guides, or jump straight into the API documentation.

Epic Growth Conference

Epic Growth Conference

27 и 28 марта в Москве проходит конференция про продукты и рост — Epic Growth. Набор спикеров впечатляет: лично я обязательно пойду на Байрама Аннакова, Игоря Лутца и Orkun Özbatur из Амазона.

Если тоже соберетесь — пишите в личку, попьем кофе.

Кстати, организаторы подарили нам промо-код для покупки билетов: egc_product.

Www.Egconf.Ru
Epic Growth Conference
Конференция по продуктовому маркетингу о стратегиях и тактиках эпического роста продуктов

​Я ничего не понял

Я ничего не понял

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

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

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

Но если вы потратили несколько минут, а письмо понятнее не стало — просто вежливо напишите «я ничего не понял». Если человеку и правда от вас что-то нужно — он напишет еще одно, понятное письмо, или предложит созвониться.

Вопрос

Вопрос: работаю удаленно, помидорками по 25 минут. Если сложить помидорки за день, то получается всего 5 часов. Это нормально? Надо ли больше?

Если в вашей команде (как у нас в mtrl.ai) не трекают рабочее время, и вы за эти 5 часов успеваете выполнить все задачи — то да, это нормально.

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

А вот если большинство оставшегося времени уходит на потребление — это проблема.

#вопрос

Gdematerial.Ru
ГдеМатериал: купить стройматериалы с быстрой доставкой. Строительные материалы в Москве, низкие цены.
ГдеМатериал сервис быстрой доставки строительных материалов, купить стройматериалы с доставкой, широкий ассортимент, доступные цены, подъём и разгрузка.

​API гитхаба

API гитхаба

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

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

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

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

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

Не работаю с мудаками

Не работаю с мудаками

В отношениях с людьми я руководствуюсь простым правилом — не работать с мудаками.

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

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

Расставаясь с такими людьми, я делаю лучше и им, и себе.

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

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

#друзьяканала 

#друзьяканала 

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

У разработчиков есть три смежных профессии — управление проектами, дизайн и аналитика. Для последнего рекомендую канал @analysis_paradisis. Highlights:

Корреляция или причинно-следственная связь;
— Серия постов, как писать ТЗ (да, есть проекты где без него нельзя), начинать отсюда;
— Понятно про 5 почему.

Вопрос

Вопрос: что ты как CTO думаешь про монорепозитории?

Думаю то же самое, что и про serverless, vue.js или SCRUM.

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

А если у вас монорепозиторий потому что так в фейсбуке, или у вас сломалась кнопочка «add repo» в гитхабе — это конечно плохо.

Другие вопросы — #вопрос. Задать свой — @fedor_borshev.

Проблемы со сроками

Проблемы со сроками

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

Юристы не принимают договор, который тебе проучили? Согласовывай — твоя проблема. Код внезапно потребовал рефакторинга? Твоя проблема.

Клево, когда все проблемы решаются «внутри» задачи, не отвлекая постановщика.

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

Если проблему со сроками поднять честно и вовремя, то скорее всего ничего страшного не случится.

Говорить только о будущем

Говорить только о будущем

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

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

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