Size: a a a

2021 April 05
FEDOR BORSHEV
Стать тимлидом: 2 поток

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. так же: пулл-реквесты не больше 500 строк.
источник
FEDOR BORSHEV
В прошлый раз я неверно рассчитал время — сделал примерный бекенд, накидал фронтенд, но работу не закончил.

Продолжаем в это воскресенье в 14:00 на https://youtu.be/mSCikgiNXkc, приходите.
источник
2021 April 11
FEDOR BORSHEV
Начинаем через 15 минут — https://youtu.be/mSCikgiNXkc
источник
2021 April 12
FEDOR BORSHEV
#вопрос Как тебе удаётся длительное время концентрироваться на одной задаче?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Масштабируйтесь через увеличение количества воркеров.
источник
2021 April 16
FEDOR BORSHEV
Почему у меня нет автомобиля

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

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

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

Вопрос к тем, у кого машина есть, — а вы хотели бы от неё избавиться?
источник
2021 April 17
FEDOR BORSHEV
Вышел подкаст, где я не матерюсь и говорю по делу! Вместе с Саматом поотвечали на неудобные вопросы Юли Яковлевой, редактора Запуска Завтра, рассказали, почему так трудно найти программистов и почему все профачивают сроки.
источник
FEDOR BORSHEV
В сегодняшнем эпизоде подкаста мы с Федей делимся своими факапами и страдаем по поводу несовершенства IT индустрии. Ведёт этот выпуск непревзойденная Юля Яковлева. Юля редактирует все выпуски, а в этом садится за микрофон и задаёт нам с Федей вопросы: почему в разработке все так плохо, почему мы не можем найти себе программистов и ещё кучу других.

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

Слушайте и подписывайтесь: AppleApple, GoogleGoogle, CastboxCastbox, SpotifySpotify, ЯндексЯндекс, OvercastOvercast, веб-версиявеб-версия.
источник
2021 April 19
FEDOR BORSHEV
Иногда проекты делаются и без нормальных процессов — люди просто делают свою работу и что-то успевают.

Но чаще всего так не получается — не так идёт примерно всё. Смотрите, к примеру, что пошло не так у нас в школе при запуске второго потока «Стать Тимлидом»: на прошлой неделе я заболел и не мог работать несколько дней; у Вани в больницу загремела супруга, и он остался сидеть с ребёнком; а Марьяна сейчас ждёт многодневный перелёт через какие-то экзотические места, чтобы вернуться домой из Турции.

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

Если хотите научиться так же — приходите на курс: завтра стартует второй поток, ещё можно успеть.
источник
2021 April 21
FEDOR BORSHEV
Make fetchdb

Важная штука, на которую забивают даже взрослые команды, — это свежесть данных на машине разработчика. Вот прилетает тебе ошибка, ты тратишь 30 минут, чтобы её воспроизвести, а потом выясняется, что воспроизводилась она только на свежих данных. Идёшь на прод, дампишь базу и тратишь те же 30 минут ещё раз — грустно. И это хорошо, если база не весит 100 Гб.

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

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

Обычно на небольших проектах это делается очень просто: вот пример реализации на django и sqlite для нашей школы.
источник
FEDOR BORSHEV
Завтра в 11:00 в клабхаусе (простите, я не выбирал площадку) говорю с кучей интересных ребят про зерокод: когда можно, а когда нельзя, где граница и как найти баланс.
источник
2021 April 22
FEDOR BORSHEV
Руководитель разработки, рубист и ещё пара вакансий

Друзья, мы с Саматом продолжаем нанимать людей. У нас две новые вакансии:
Руководитель разработки. Это вакансия — к нам, а не к клиентам: мы целиком доверим вам разработку одного из наших клиентов. Сейчас у нас есть Всеволод, но мы хотим сделать ещё как минимум 2 таких же контура. Контур — это самостоятельное подразделение нашей компании, которое в один момент ведёт одного клиента. Руководитель контура — это программист с любовью к хорошему коду, который не боится людей. Всему остальному — научим.

Рубист в Вебиум. Под руководством Антона вы напишете новый движок для электронной коммерции в образовательных курсах.

— Ну и Сноб: нанятые в прошлый раз ребята уже заканчивают онбординг, так что ищем бекендера на питоне и фронтендера на vue.

За рекомендацию сотрудника, который пройдёт испытательный срок, заплачу лично вам 50 000 рублей.
источник
2021 April 23
FEDOR BORSHEV
Инструменты: things

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

В плане фич для продуктивности things ничем не отличается от любого конкурента — от Todoist до блокнотика со списком дел: задачи можно ставить и закрывать, планировать выполнение на определённые дни, группировать по проектам.

Things я выбрал за его внешний вид и нативность: приложения работают быстро под все платформы.

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

Кроме основного приложения, я периодически пользуюсь things.sh — простым скриптом, который позволяет вытащить в эксель данные из внутренней SQLite.
источник
2021 April 26
FEDOR BORSHEV
#вопрос Как понять, что сегодня я поработал достаточно и можно идти отдыхать? Условное «не обманываю ли я своего работодателя».

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

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

Каждый понедельник я отвечаю на один конкретно поставленный вопрос. Задавайте на fedor@borshev.comfedor@borshev.com
источник
2021 April 28
FEDOR BORSHEV
Сервисы: healthchecks.iohealthchecks.io

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

100% способ убедиться в надёжности бекапов — учения: взять и восстановить копию продакшена где-нибудь рядом с основной площадкой. Способ этот — ручной, а значит, дорогой и медленный. Чтобы не проводить учения каждую неделю, бекапы нужно мониторить. Самый простой (и бесплатный) вариант — healthchecks.io.

Сервис работает по принципу мёртвой руки — вы задаёте периодичность бекапов и получаете эндпоинт, который нужно дёргать с этой периодичностью. Сделали бекап — дёрнули эндпоинт. Если ваш скрипт не дёрнет эндпоинт за нужный период, вы получаете уведомление. Получается, что этим вы покрываете все возможные неисправности. Неважно, сломался доступ к БД, закончилось место на диске, скрипт упал: результат один — недёрнутый эндпоинт и уведомление. Только (set -e) не забывайте.
источник