Size: a a a

2020 July 15
FEDOR BORSHEV
Скоро: как запускать проекты без хуйни

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

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

Статья пока доступна у меня на патреоне, скоро опубликуем для всех.
источник
2020 July 18
FEDOR BORSHEV
Мой супер-патч к django-money попал в историю — его записали на плёнку и сложили вместе с кучей другого опенсорсного кода в подземное хранилище где-то в Арктике.

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

Ну ничего, надеюсь, впишусь, в следующий пятилетний цикл архивирования с чем-нибудь более стоящим.
источник
2020 July 20
FEDOR BORSHEV
Запретить float

Что только не хранят программисты во float — деньги, количество и вес, сотни всего. Особенно умиляют координаты — неужели они их реально складывать и вычитать собираются?

Если кто не знает, float — это числа с плавающей точкой, которые не гарантируют точности. Верно, вам никто не обещает, что 0.1 + 0.2 будет равно 0.3. Если говорить грубо, причина в том, что в компьютере нет нецелых чисел — там вообще только нули и единицы.

Если вам надо хранить десятичные дроби, используйте специальные типы данных, которые для этого разрабатывались: Decimal, или что там у вас в языке. Подробнее почитайте на https://0.30000000000000004.com.
источник
2020 July 21
FEDOR BORSHEV
Выложил в блог расширенную версию поста о том, зачем нужно оцифровывать инфраструктуру — https://borshev.com/devops-signals/.

Ссылку можно давать всем, кто до сих пор грепает по логам в консольке.
источник
2020 July 22
FEDOR BORSHEV
pmdaily
Скоро: как запускать проекты без хуйни

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

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

Статья пока доступна у меня на патреоне, скоро опубликуем для всех.
Доредактировали с Саматом нашу статью и опубликовали на виси — https://vc.ru/hr/143929-kak-zapuskat-proekty-bez-zhiry-i-prochey-skukoteni-vot-nashi-glavnye-principy

Набрасываем много — и про скрам, и про жиру, и про огородики.
источник
2020 July 24
FEDOR BORSHEV
Давай решай уже

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

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

А что случится, если уволить такого сотрудника по ошибке? Парадоксально, но, скорее всего, ничего: просто найдёшь нового.

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

Мой выбор — поскорее принимать решения, чтобы поскорее получить результат или поскорее исправить последствия своей ошибки. Do not make right decisions, but make decisions and then make them right.
источник
2020 July 25
FEDOR BORSHEV
Стрим: настрока CI\CD в Docker Swarm

Совсем забыл вас предупредить, но завтра в 14:00 будет очередной стрим! В прямом эфире настроим непрервыную доставку микросервиса на node.js в кластер на docker swarm, в конце поотвечаю на вопросы по теме.
источник
2020 July 27
FEDOR BORSHEV
#вопрос Расскажи, зачем стоит покупать кастомный SSL-сертификат?

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

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

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

Каждый понедельник я отвечаю на один чётко поставленный насущный вопрос про ИТ. Присылайте вопросы на fedor@borshev.com
источник
2020 July 29
FEDOR BORSHEV
Как уменьшить количество кликов в зуме

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

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

P.S. Ещё это работает для ноушена — по умолчанию электроновское приложение ноушена не открывает ссылки notion.so, поэтому вы постоянно оказываетесь с двумя ноушенами вместо одного — в браузере и в электроне.
источник
2020 July 31
FEDOR BORSHEV
Не продавливать по срокам

Неопытные менеджеры часто строят разговоры с программистами на давлении. Начиная от банального «5 дней, говоришь? А может, давай за 4, но без тестов?» и заканчивая манипулятивными просьбами расписать подробную смету по часам на каждое требование.

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

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

Единственный нормальный способ уменьшить названный программистом срок — это спросить у него совета, какое требование из задачи выкинуть, чтобы стало легче работать. Все остальные — манипуляции, которые не приведут ни к чему, кроме сорванных дедлайнов.
источник
2020 August 03
FEDOR BORSHEV
Рассказал в новом совете про CI\CD на простом языке — что это такое и зачем нужно.

Покажите это своему менеджеру и дизайнеру, и скорее внедряйте.
источник
2020 August 05
FEDOR BORSHEV
Ремоут- и неремоут люди

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

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

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

В неумении общаться удалённо нет ничего страшного — карантин уже заканчивается, вещи потихоньку возвращаются на место. Если вы всё ещё вынуждены работать на удалёнке с «офисными» ребятами, попробуйте пожёстче внедрить ежедневные встречи, когда вся команда собирается с видео и проговаривает все мантры из стандартного скрамовского дейли: вчера я сделал X, сегодня сделаю Y, беспокоит меня Z — обычно помогает.
источник
2020 August 06
FEDOR BORSHEV
Стрим без темы

А давайте в этот понедельник в 19:00 соберёмся на ютубе? Будет не обычный образовательный стрим — в этот раз мы просто поболтаем в свободной форме. Темы общения задаёте вы сами — заходите на https://app.sli.do/event/d33ahdeg и задавайте вопросы, или голосуйте за уже заданные.

Это — эксперимент: я целиком отдаю вам решение о том, что будет. Подойдёт что угодно: если принесёте код на джанге — сделаю ревью, если попросите рассказать, как планировать спринты так, чтобы всё успевать — поговорим об этом.
источник
2020 August 07
FEDOR BORSHEV
Тупое правило менеджера: не написано, значит, не было

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

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

На встрече договорились что-то сделать и не записали? Значит, никому не надо.

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

Не написано, значит, не было.
источник
2020 August 10
FEDOR BORSHEV
Что я делаю, когда простудился

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

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

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

Возможно, именно благодаря этому подходу за последний год у меня случилось всего два таких дня.
источник
2020 August 12
FEDOR BORSHEV
Даже в чатах можно общаться нормально, если писать длинные сообщения

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

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

Чуть менее невыносимо — это когда ты общаешься так же, как в почте: развёрнутыми понятными письмами с драматургией и колл-ту-экшенами, только письма эти пишешь в чате, а не в почте. Возьмите на вооружение, если цените своё внимание, но попали в команду, которая использует слак вместо электронной почты.
источник
2020 August 13
FEDOR BORSHEV
Мы с Федей ищем технического директора в igooods себе на замену.

igooods — это доставка продуктов из гипермаркетов. Сотни тысяч клиентов, тысячи заказов в день, миллиард оборота в месяц. 36 городов России. В партнерах — Метро, Лента, Призма, Вкусвилл, Ашан, Глобус, Карусель, Окей.

Техническая команда — 31 человек. Под капотом рельса и реакт, нативные мобильные приложения для iOS и Android.

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

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

Мы с Федей запустили эти процессы, но чтобы завершить работу, нужно жить в Питере.

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

Офис в Питере, помощь с переездом. Подчинение напрямую владельцу бизнеса; основной рабочий партнер — CPO Андрей Родин.

Пишите краткий рассказ о себе мне в личку или на s@samat.me.
источник
2020 August 14
FEDOR BORSHEV
А какую я добавил ценность?

Хороший менеджер задаёт этот вопрос во время каждой своей активности.

Какую ценность я добавил, когда сходил на встречу? Был ли полезен, принёс что-то новое или тупил в фейсбук?
Какую ценность я добавил, когда ответил на письмо? Легче ли стало совершить следующий шаг по проекту?
Какую ценность я добавил, когда поговорил с программистом? Стало ли ему понятнее, что и как делать на проекте?
Какую ценность я добавил за неделю руководства отделом? А за месяц?

Если нечего ответить, значит пора переставать заниматься деятельностью, которая не приносит ценности: отказаться от встреч с командой, которой ты не нужен, не слать пустые отписки на письма, не отвлекать программистов. Или просто отдохнуть.
источник
2020 August 17
FEDOR BORSHEV
#вопрос Реально ли стартануть в качестве начинающего программиста в 50 лет?

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

Я не вижу ни одного препятствия, чтобы выполнить 5 из 6 пунктов из моего списка как вкатить в программирование. Предположу, что проблема будет только с шестым пунктом — найти команду с высокой инженерной культурой: эйджизм, сексизм и кучу других -измов никто не отменял.

Единственный вариант, который я вижу, — повысить свою ценность до устройства на работу. Попробуйте сделать такое крутое портфолио, которое только можете, — много наконтрибьютьте в опенсорс или напишите какой-нибудь большой сложный проект, больше чем стандартный todo-mvc. Это тяжёлый путь: пойти джуном в нормальную компанию гораздо легче. Зато этот путь зависит целиком от вашего желания, а не от предрассудков окружающих.

Надеюсь, у вас всё получится!
источник
2020 August 19
FEDOR BORSHEV
Цель встречи

Отличный способ сэкономить время на любой встрече — это писать её цель. Типа «я сейчас иду к заказчику, чтобы договориться об изменении вот этих требований: раз, два, три». Или «я выступаю перед командой, чтобы донести вот эти, эти и эти мысли». Или «Я созваниваюсь 1:1, чтобы узнать, насколько мой сотрудник чувствует себя счастливым в рамках текущего проекта».

Цель — это не агенда: скорее это внутренняя задача, не достигнув которой со встречи лучше не уходить.

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

Дополнение от Марьяны Онысько: «А еще, когда ты прописываешь цель встречи, то становится понятно, нужна ли она вообще. Иногда вопрос решается просто парой сообщений в чате»
источник