FEDOR BORSHEV
24.9K subscribers
36 photos
1 video
4 files
677 links
Рассказываю, как руководить программистами

fborshev@pm.me / borshev.com

Реклама не продаётся
Download Telegram
no-code — это техдолг

No-code-решения бывают клёвыми: приятно же без программистов повесить на сайт форму подписки или настроить новое оповещение клиентам через плагин к AmoCRM. Однако, решая задачи быстро, бизнес часто забывает, что задачи имеют стоимость владения — мало просто запилить фичу, нужно ещё сделать, чтобы она не падала, а если упала — не сильно задевала бизнес. И тут no-code проигрывает по всем фронтам.

Вот повесили вы форму подписки на сайт, а через месяц смотрите — а вёрстка поехала: ошмётки формы вылезают на страницу корзины, пользователи путаются, конверсия падает. Если бы у вас был программист, который отвечает за сайт, он бы это быстро исправил — сам накосячил, сам и чини. А если вы это сделали на no-code — ещё придётся сначала понять, какая именно из очередных фич привела к такой проблеме. Или если ваша система no-code уведомлений сошла с ума и начала спамить настоящих клиентов? Придётся бросать все дела и бросать самому.

Вообще, лёгкость прикручивания новых фич раздувает софт — в одной команде мы как-то отдали бизнесу полный контроль над Google Tag Manager, и через несколько месяцев скорость загрузки контента у нас упала до нескольких секунд — ребята просто ставили новые теги, забывая о старых. В результате Intercom конфликтовал с CarrotQuest, а три системы коллтрекинга подвешивали браузер.

Я не призываю совсем отказаться от no-code-решений, но помните: если решаете задачу на no-code, вы говнокодите, и этот долг придётся рано или поздно выплачивать.
Главное дело дня

Главное ежедневное дело менеджера и тимлида — делать обзор. Это когда садишься и полчаса приводишь в порядок список дел:

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

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

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

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

Чтобы системно делать обзоры, поставьте периодическую задачу и не беритесь ни за что другое, пока не закончили обзор. Если не поставите задачу, обзоров не будет.
Сегодня в 21:00 говорим с Ильёй Бирманом в Клабхаусе о том, как нанимать программистов в Эгею.

Эгея — очень приятный движок для блога, только вот беда: Илья написал его очень давно. Сейчас это — легаси, и в разговоре мы попробуем понять, что с этим делать, не переписывая всё с нуля.

https://www.joinclubhouse.com/event/MzjLwk0p
Стать Тимлидом: II поток

Сейчас в консалтинге я нанимаю программистов одновременно к двум клиентам. Для меня найм всегда был болью — несмотря на огромный поток заявок, приходится отрубать 95% откликов. В такие моменты я всегда чувствую стыд перед бизнесом — вон же люди, готовые у нас работать, едва ли не в очереди стоят, а я их всех заворачиваю. Но свои ценности я всё равно не предаю — лучше два месяца буду искать самостоятельного программиста, который будет заботиться о бизнесе, чем найму 5 обычных исполнителей, которым нужен менеджер с палкой, и которые дальше окна дебага в своей IDE не выглядывают.

Пока рынок труда всё ещё перегрет, это выглядит дико — сейчас принято, чтобы работодатели сами бегали за программистами, размахивая печеньками и «дружным коллективом». Но я искренне верю, что потребность в людях, нажимающих кнопки с 9 до 6 рано или поздно начнёт уменьшаться. Ну а потребность в тех, кто решает задачи бизнеса, растёт уже сейчас. И именно для таких ребят мы подготовили большое обновление нашего курса «Стать Тимлидом»: дописали уроки по отзывам от первого потока, нашли новых экспертов для ланч-таймов и подготовили классную механику — p2p-проверку домашки. Идея в том, что когда вы даёте обратную связь таким же ученикам как и вы, вы заново переосмысливаете свои знания.

«Стать тимлидом» — самый важный курс нашей школы: это универсальные навыки, которые одинаково подойдут и синьёрам-архитекторам и крепким джунам. Даже если вы собираетесь писать код до пенсии, наш курс поможет делать это более полезно для бизнеса.

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

Новый поток стартует 20 апреля и продлится до 23 мая. До понедельника включительно действует скидка 10% по промо-коду TL2START
Лайвкодинг в воскресенье: Личный кабинет на vue.js + django

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

Начнём с личного кабинета — места, куда каждый ученик сможет зайти и указать своё имя в том виде, в котором хочет увидеть его на дипломе. Сейчас кода ЛК нет совсем, так что это отличная возможность посмотреть, как начинаются проекты на vue.js (v2, т.к. v3 пока сыровата) и как можно подружить их с django.

Встречаемся на ютубе в это воскресенье, в 14:00 MSK.

P.S. Весь код нашей школы мы храним в опенсорсе — вот тут, к примеру, лежит бекенд, который обрабатывает покупку курсов: цены, промо-коды, интеграции с банками и мейлчимпом.
Можно жить и без привычек

После моих постов об утренних ритуалах (ссылки: 1, 2, 3) в комментах было много мнений о том, что я робот, живущий по ритуалам. Хочу это опровергнуть.

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

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

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

В октябре прошлого года мы с Федей запустили первый совместный проект — курс «Стать тимлидом» о том, как договариваться с бизнесом, нанимать команду, отстраивать в ней процессы, расти самому и разбираться с техдолгом.

Курс прошел кайфово. Обучили 100+ ребят, получили массу классных отзывов, периодически ребята пишут нам, как улучшились процессы и стало кайфовее. Мы счастливы и поэтому открываем продажу на второй поток.

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

1/ Кому подойдет. Раньше мне казалось, что этот курс больше для технарей, ведь мы даже о техдолге говорим. Но в процессе стало понятно, что подходит и менеджерам проектов и аналитикам, ведь мы много говорим о мышлении бизнеса. А в курс я принесла опыт, который получила, разбираясь с техдолгом МИФа, совсем не будучи технарём.

2/ Контент. Для первого потока у нас было 5 лонгридов и 5 ланчей со спикерами. Казалось, что мы полностью закрыли все вопросы. Но на Q&A мы поняли, что еще волнует ребят и добавляем в этом потоке. Поэтому лонгриды станут лонгридищами, а 5 ланчем превратятся в 8 ланчей:
— Добавим тему психологии, которая возникла очень остро в первом уроке про переговоры;
— Ланч о глубинных интервью, чтобы учиться формулировать гипотезы и ловить инсайты (это пригодится даже для личных пет-проектов);
— Расскажем, как управлять творческими командами
— И еще куча всего, о чем хочется рассказать

3/ Два взгляда — бизнесовый и технарский. На первом потоке какие-то вещи больше рассказывал Федя, какие-то я. На Q&A мы сливались в одно целое и каждый вопрос рассматривали с двух сторон. И это самое крутое, что может быть, на мой взгляд. Например, вопрос инфраструктуры: сколько времени нужно на это выделять, нужно ли и как продавать бизнесу, если нужно. Или как писать вакансию, чтобы к тебе приходили целевые кандидаты. О такой картинке я могла только мечтать несколько лет назад. Кому-то теперь повезет, потому что эту штуку мы еще больше усилим.

4/ Практика. В прошлый раз у нас было только 2 тарифа: с обратной связью нас с Федей и без. И на мой взгляд, не хватило командной работы. Поэтому в этот раз будет тариф с командной домашкой. Индивидуальная тоже остается. И проверять ее будем не только мы, но и вы. Я поняла, что это самый крутой способ обменятся опытом друг с другом, а не достать только из моей или Фединой головы.

Пунктов еще миллион, но боюсь, что вас потеряю. Поэтому лучше отправлю вас смотреть программу.

По промокоду — cool, 10% скидки. Стартуем обучение — 20 апреля. Проходить можно в своем темпе или с дедлайнами.
Липовый Туман: скатились

Тихо и незаметно вышел новый эпизод. Говорим, как нас накрыл синдром самозванца во время подготовки курса про асинхронную архитектуру, по-детски материмся (как всегда) и рассказываем, куда пропал сосед.

Слушайте везде (18+): SoundCloud, Apple, Яндекс.Музыка, Google Podcasts, Castbox, Spotify, RSS
12 факторов: инстанс должен быть одноразовым

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

Представьте себе веб-воркер, который заводится по несколько минут — к примеру, компилирует ассеты, скачивает свежие версии сертификатов или делает ещё что-нибудь, что принято делать в CI. Деплой такого процесса будет занимать те самые несколько минут. А если таких процессов крутится 20 и вы заменяете их последовательно?

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

В следующий четверг, 15 апреля, в 20:00 будем здесь в голосовом чате. Будем рады любым вопросам и предложениям: что вам нравится, что не нравится, в чём сомневаетесь, что стоит показать на будущих курсах и т.д. Приходите, если вы уже учились у нас или только думаете купить курс.

В конце разыграем промо-код на 20% скидки на любой тариф курса «Стать Тимлидом».
Не копи пулл-реквесты

Частая ошибка начинающих ребят — начать копить пулл-реквесты: добавил фикс тут, поменял настройки линтера там, написал чуть-чуть кода здесь. Это — плохо.

Во-первых, любой несмёрджённый пулл-реквест — это незавершённая работа. Это значит, что рано или поздно по нему нужно будет что-то сделать: придут замечания, которые надо будет выполнять, или злой тимлид пройдёт по открытым пулл-реквестам и спросит: «Когда мёрджим-то?» Надо ли говорить, что в это время у вас будет дедлайн по совсем другой задаче, и этот ПР вам будет совсем не в кассу.

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

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

См. так же: пулл-реквесты не больше 500 строк.
#вопрос Как тебе удаётся длительное время концентрироваться на одной задаче?

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

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

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

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

Каждый понедельник я отвечаю на один конкретно поставленный вопрос. Задавайте на fedor@borshev.com
Ищу ассистента

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

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

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

Я исповедую стиль управления servant leadership. Это означает, что ваше развитие лежит в моих интересах: мы будем говорить с вами об управлении проектами, людьми и собственным временем. Я буду давать вам возможность ошибиться, страхуя там где будет опасно. Если хотите расти в сторону менеджера проектов или исполнительного директора — вы не ошибётесь.

Работа удалённая, фулл-тайм. Зарплата 60-80к, в зависимости от опыта и задач, которые вы закроете. Дополнительно я компенсирую затраты на связь. Если вы живёте в Москве — зарплата будет выше на 30%, т.к. у вас добавятся задачи, связанные с личным присутствием: удалённо вы будете нанимать на это подрядчиков.

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

Если порекомендуете хорошего ассистента, который пройдёт испытательный срок, заплачу лично вам 30к.
12 факторов: приложение — это не демон

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

Классический подход к разработке ПО подразумевает, что вы напишете один демон, который будет обрабатывать всё это у себя внутри. Неважно, будут ли это отдельные процессы или отдельные треды внутри королевского процесса, как в JVM, — главное, что будет одна точка входа типа /usr/bin/myapp.

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

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

Масштабируйтесь через увеличение количества воркеров.
Live stream started
Live stream finished (1 hour)
Почему у меня нет автомобиля

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

Дело в том, что современный мир позволяет получать все функции машины, не имея её в собственности. Если мне надо поехать из точки А в точку Б — есть такси и каршеринг, в пробки — метро. Хочется расслабиться за рулём — есть аренда, можно взять хоть Гелендваген АМГ, если деньги позволяют. То есть я спокойно езжу, но не трачу время на страховку, шиномонтаж и парковку. Последнее в Москве — самое сложное: можно доехать за 15 минут, а потом искать парковку ещё 30. Ну и, конечно, я не замораживаю несколько миллионов в неликвидной железке, которую можно разбить или вообще стать жертвой угонщиков.

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

Вопрос к тем, у кого машина есть, — а вы хотели бы от неё избавиться?