Бомбящий программист
383 subscribers
81 photos
81 links
Бывший разработчик, но все еще инженер.
Download Telegram
Про performance review

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

История. Шел четвертый квартал 202x года: день холостяка, black friday, cyber monday, и тому подобные распродажи. В какой-то момент мобильное приложение, за которое я тогда отвечал, стало значительно медленнее работать. Экраны загружались медленно, и казалось, что проблема где-то в бэкэнде. Однако, метрики мобильного гейтвея оставались в пределах разумного - 200-500 мс на уровне 95-й перцентили. Спустя некоторое время выяснилось, что проблема заключалась в WAF, который стоял перед мобильным гейтвеем и пропускал через себя весь трафик. При резком скачке трафика нагрузка CPU на WAF была под 100%, что приводило к обработке всех запросов с задержкой до 3 секунд. Я принял решение и взял на себя ответственность направить трафик напрямую в наш мобильный гейтвей, те мимо WAF. И о чудо, проблема пропала. Наш CPO тогда сказал мне: "Антоха, приложение просто летает!".

Спас ли я тогда наши KPI от краха? 100%. Получил ли я потом за такое от ИБ по "шее"? Да. Думаю, что если бы у нас тогда был performance review, я бы не получил высокую оценку.

При всем при этом я уверен, что при штате в сотни-тысячи инженеров внедрение performance review неизбежно, просто потому что необходим единый механизм для оценки всех и каждого. Другой вопрос - как его внедрить так, чтобы не возникало performance driven development, и чтобы правила игры оставались понятными и прозрачными.
🔥4
Очень субъективный пост о мотивации

Ради чего мы все работаем в IT? Ради славы? Власти? Признания? Денег?

Существует 5 уровней корпоративной культуры. Пятый уровень называется - "Жизнь прекрасна". Если говорить о сфере IT, то это означает, что команда разработчиков стремится решить задачу, с которой ранее не сталкивался никто другой, а их решение может улучшить мир. Это может быть поиск лекарства от рака, разработка квантового компьютера или открытие новых планет. Заниматься такими задачами, конечно, невероятно здорово, но, к сожалению или к счастью, большинство задач, которые решаются в IT, связаны с бизнесом и направлены на рост прибыли и капитализации компании.

Когда я был маленьким и еще совсем "зеленым", мне искренне казалось, что IT - это такие благородные рыцари, которые делают мир лучше. Однако, поработав уже около 15 лет в этой сфере, я понял, что все это пустые слова, и все мы, так или иначе, работаем ради денег. Потому что у нас всех есть семьи, дети, пожилые родители, ипотека и так далее. И нет ничего плохого в том, чтобы работать ради денег. Другое дело, что было бы здорово, если бы работа еще сопровождалась чем-то полезным для общества или, по крайней мере, не вредила ему.
💯9🔥1🌚1
Ура! Утвердили мою тему на TLConf 2024 в Питере.

О чем буду рассказывать
В Magnit Online мы разделяем важные принципы инженерной культуры, которые помогают нам решать проблемы системно, поддерживать открытую коммуникацию, эффективно планировать задачи и разрешать конфликты с учетом всех аспектов. Такая культура позволяет нам создавать стабильные и надежные системы, принимать сложные технические и социальные решения и добиваться устойчивого развития компании. Я расскажу вам, как мы пришли к этому, какие были сложности и когда вам, как слушателям, следует задуматься о формировании собственной инженерной культуры.
🔥6👏62
Смены работы пост

Самое продолжительное место моей работы была компания Ostrovok, где я проработал 5 лет. Пришел я в Ostrovok на роль Python разработчика, а увольнялся с должности руководителя разработки B2B-продукта. У меня были свои причины для увольнения, но сейчас это не так важно. Главное, что после смены работы мне было очень трудно влиться в новый коллектив. Все казалось неправильным, неоптимизированным, неэффективным и нелогичным. Позже я понял, что это были ложные мысли, потому что я пытался применить свой предыдущий опыт к новому месту работы, что, как минимум, было неправильным из-за различных предметных областей, а, как максимум, вредно, потому что не все практики Ostrovok были полезными. Например, нельзя приходить в MedTech c идеологией стартапа и принципом fail fast.

Со временем я осознал, что длительное время работать на одном месте без радикальных изменений, таких как смена должности или изменение бизнеса, негативно влияет как на меня самого, так и на компанию. Например, для разработчика я считаю вредным работать на одной должности в одной компании в течение ~10 лет, потому что твой кругозор будет ограничен кругом общения и контекстом, который окружает тебя в рамках только одного места работы. С другой стороны, я не люблю "джамперов", то есть кандидатов, которые меняют места работы каждые 6-9 месяцев.

Как часто надо менять работу? Ваши мысли.
3👍2🔥1
Про важность стандартов и шаблонов

Практически все крупные автоконцерны перешли на производство автомобилей на базе автомобильных платформ. Ярким примером является MQB платформа от VW Group. На базе MQB VW Group выпустило около 40 автомобилей брендов VW/Audi/Skoda/Seat. В чем суть? Модульная платформа позволяет легко и быстро изменять колесную базу и ширину колеи автомобилей, а также адаптировать конвейер завода под выпуск моделей разных классов.

А что у нас в IT? Шаблоны CI/CD, шаблоны для запуска микросервисов, стандартизация метрик/логов/трейсов, дизайн системы, микрофронты, модуляризация мобильных приложений: все это проявления в той или иной степени платформизации. Все крупные IT-игроки уже поняли, что лучше один раз вложиться в свою платформу и потом выпускать новые продукты на базе перечисленных выше инструментов. Индустрия движется к стандартам и шаблонам, чтобы уменьшить (сделать быстрее) TTM и сократить TCO. Хороший свежий пример - это OpenTelemetry. Где бы я ни работал, везде инженеры изобретали свой стандарт по тому, как писать логи, собирать метрики и строить трейсы. Часто было так, что разные команды внутри одной компании делали эти вещи по-разному, и потом пытались соединить "ежа с ужом". Сам таким занимался. Надеюсь, что OpenTelemetry раз и навсегда решит эту задачу.
👍6🔥2
Пост про требовательность

Вводная А
Я считаю, что одной из важнейших черт успешного руководителя является высокий уровень требовательности как к самому себе, так и к своим сотрудникам. Что означает требовательность? Это умение не только выявлять проблемы, но и добиваться их решения с определенными, понятными сроками и четким планом действий. При этом требовательность работает в обе стороны. То есть, если вы ставите перед сотрудником высокую планку по достижению каких-либо целей, то сотрудник имеет полное право требовать от вас чего-то аналогичного.

Вводная Б
Одзиги – уникальное проявление японской вежливости: приветствие, прощание, поздравление, благодарность, извинения. Правильно и красиво поклониться – не так-то просто, это настоящее искусство, показатель хорошего воспитания, благородства. Высшая, а фактически, низшая форма уважения – сайкэйрэй (最敬礼) – «самый почтительный поклон». Его делают, опускаясь на колени и почти касаясь лбом пола.

Резюме
Если вы как руководитель не держите высокую планку требовательности к самому себе, то либо признайте это совершив условный сейкэйрэй, либо покиньте свой пост.
🔥7👍1
Субьективное мнение о важности личного бренда в IT.

Когда я учился в Бауманке, где-то на 4-м курсе, у нас был предмет, суть которого заключалась в том, чтобы научиться совместно с одногруппниками работать над общим проектом, как если бы мы работали над ним в коммерческой компании. Надо было использовать все инструменты для командной работы: таск-трекер, систему контроля версий и т.д. Этот предмет вел бывший выпускник Бауманки (далее Господин Н), который основал свою компанию и занимался коммерческой разработкой под заказ. Он на своем примере понимал, что студенты оканчивают ВУЗ и не понимают, как работать над проектом совместно в команде. Это был первый раз, когда я задумался о личном бренде.

Пару лет спустя, когда я закончил ВУЗ, попал на какую-то конференцию, кажется, это был Highload, где Господин Н рассказывал что-то про нагрузку в одном из его проектов. Про нагрузку тогда только начинали говорить, и его выступление было крайне актуальным. Это был второй раз, когда я задумался о личном бренде.

Ближе к концу 201x года, когда стали регулярно проходить TeamLeadConf, TechLeadConf и прочие хххLeadConf, Господин Н выступал там регулярно, и все его доклады всегда были на острие. Это был третий раз, когда я задумался о личном бренде.

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

Кстати, Господин Н - это CTO ivi.ru
👍8🔥3👏2
На этой неделе проходит Podlodka TeamLead Crew #12, тема «Метрики».

Я принял участие в публичном собеседовании в качестве кандидата. Для ясности - собеседование ненастоящее, т.е. никакого найма не предполагалось и сама вакансия была придумана специально для данной сессии. Цель в том, чтобы показать зрителям и слушателям, как может проходить собеседование на должность Engineering Manager с акцентом на вопросы о метриках эффективности работы команд. К данному мероприятию заранее не готовился, и поскольку предметная область была новой для меня, пришлось фантазировать по ходу беседы.

В итоге мне понравилось, слушателям вроде бы тоже.
👍5🔥51
Саморефлексия на тему того, почему я до сих пор живу и работаю в РФ.

Недавно осознал, что у меня нет друзей, с кем можно созвониться и через 30 минут встретиться, чтобы попить пива. Причина проста - все уехали. Все друзья детства и практически все близкие знакомые, с кем я работал до Магнита, уехали из страны и строят свою жизнь в других местах. Это их выбор, и я не имею права осуждать или критиковать их за это. Я искренне желаю вам удачи!

Почему же я остался? Копаясь глубоко внутри себя, понял, что основная причина крайне проста - это лень.

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

Плохо ли это? Непонятно. Стыдно ли мне за это? Точно нет. Каждому свое.
🔥8👍4👏2🤔2
Пока Магнит 🧲, здравствуй Золотое Яблоко 🍏

Завтра, 12 апреля, у меня последний рабочий день в Магнит, а уже в понедельник, 15 апреля, я выхожу на роль СТО Ecom в Золотое Яблоко.

Мой путь от роли backend разработчика до роли СТО был крайне последовательным: 6 лет в разработке, 5 лет в тимлидстве, 3 года в роли руководителя отдела. Пора двигаться дальше, пора выйти из зоны комфорта и погрузиться во что-то новое.

Попользовавшись мобильным приложением ЗЯ и сайтом, единственное, что хочется исправить как можно скорее, это отображение заказа после его оплаты. Сейчас это происходит не сразу и вызывает у меня, как у клиента, замешательсво. Работа каталога, карточки товара, корзины, качество поиска и выбор способов оплаты работают хорошо, а качество упаковки товаров и сама коробка, в которой все привозят, просто выше всяких похвал 👏👏👏
👏213👍3
Про networking

История 1. Когда я покидал undev, я проходил собеседования в разные компании, одной из которых был ivi. В ivi меня не взяли (или я сам не пошел, уже не помню), но было забавно, так как на интервью меня собеседовал человек, которого я сам собеседовал 6 месяцами ранее в undev.

История 2. Когда я покидал ostrovok, я проходил собеседования в разные компании, одной из которых был банк Тинькофф. В банк я не пошел, но пошел в SoftPro, где меня собеседовал тот же человек, что и в Тинькофф.

История 3. Когда я уходил из SoftPro, я проходил собеседования в разные компании, одной из которых был DeliveryClub. С DeliveryClub у меня не сложилось, так как на позицию, на которую я претендовал, впоследствии был выбран внутренний кандидат, который спустя 3 года стал моим коллегой в Магнит.

Вывод - networking наше все.
👍13🤡3
Когда-то я был разработчиком и писал много кода.

Для саморефлекции использовал сервис wakatime, который показывает сколько, в каком проекте и на каком языке я в этот день писал код. Полезно и приятно, рекомендую, встраивается в любую IDE.

Жалко, что ничего подобного нет для самоанализа cвоей активности в confluence/jira/miro/почте. Или есть?
👍3🤔2
Про проверку СБ

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

Когда-то давно в Магните я хотел нанять своего близкого знакомого, с которым ранее работал в ostrovok. Я был готов взять его без собеседований и т.п., так как знал, что он идеальный кандидат для искомой позиции, но СБ его отклонило. К сожалению, тогда я не мог ничего с этим сделать. Для информации, мой близкий знакомый ранее работал в крупнейшем жёлтом банке, ostrovok, Яндексе, а затем в крупнейшем синем банке, и нигде у него не было проблем с СБ.

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

Кстати, этот мой близкий знакомый в последствии основал одну из самых успешных онлайн-школ в России по обучению QA, а может и самую успешную.
🤮102👍114
Про ArchOps или, как я сегодня написал, 1424 строк архитектуры.

Помню, как лет пять назад первый раз услышал о возможности описывать инфраструктуру кодом, а спустя некоторое время DevOps-инженеры получили свой Terraform, и всё завертелось-закрутилось вокруг методологии GitOps (infrastructure as code).

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

Если вы ничего не поняли, вот топовая статья об этом, но я использую structurizr.
🔥6👏1
Пост скучания по MS Teams

Однажды коллега сказал мне: "Мы еще все пожалеем, когда потеряем Teams", и он оказался прав. Уже целый месяц я работаю без MS Teams и... о, ужас, как же я скучаю по нему.

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

Возможно, все это можно найти в других конфигурациях почты, мессенджеров, звонилок, например, Google+Slack+Zoom, но в MS Teams это все было доступно из коробки и работало очень удобно.
👏65🥰2😭1
Пост об очевидности

Когда я учился в университете, у меня был преподаватель по физике, который часто говорил фразу "очевидно - когда очами видно". Он утверждал это, когда демонстрировал доказательство какой-либо формулы или теоремы. В конце, когда все было готово, а доказательство занимало 3-4 доски от края до края, и половина аудитории потеряла ход его мыслей уже на второй доске, он отходил в сторону, осматривал все взглядом, вздыхал и говорил: "Вот теперь очевидно, потому что очевидно - когда очами видно".

Сейчас, когда мне приходится сталкиваться с высоким уровнем неопределенности, непрозрачности, ограниченной информацией, я не могу сказать, насколько очевидным является решение, пока не визуализирую его где-то. Это может быть записная книжка, wiki, confluence, miro, drawio - не важно. Главное, что туда можно перенести свои или чужие мысли, визуализировать их и оценить их очевидность уже своими очами.
🔥7👍5
Пост про устойчивость.

Мой предыдущий руководитель в последний раз поставил мне цель на квартал - стать более устойчивым. Что означает устойчивость? По его словам, основные факторы устойчивости это:
- личные - в основном это семья;
- ИПР - наличие сильного руководителя, у которого есть чему учиться;
- наличие наставника;
- обратная связь с рынком (расширение сети контактов, участие в конференциях, ...).

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

Имеется в виду, что не важно, что произошло, не важно, с какими проблемами ты столкнулся на работе, главное, чтобы дома было всё хорошо, чтобы все были здоровы и счастливы. Если говорить о нас, как о роботах-пылесосах, то дом - это наша зарядная станция, которая должна функционировать стабильно и без сбоев. Хорошо, что моя "зарядная станция" меня не подводит.
🔥18👍75
Про монорепо vs полирепы

Что лучше микросервисы на базе монорепы или на база множестве репозиториев?

Я никогда не имел опыта работы разработчиком с монорепой, но слышал о таком подходе в Yandex/Facebook и еще ряде известных мест. Всегда этот рассказ или статья сопровождались каким-то набором дополнительного тулинга вокруг монорепы, который фактически ограничивает скоуп, с которым разработчику придется непосредственно вести работу. Один из аспектов, который мне точно нравится в монорепе, это возможность хранить техническую документацию, соглашения по разработке, API контракты, различные диаграммы взаимодействия и артефакты архитектуры непосредственно в самом монорепозитории. Я искренне верю, что чем ближе документация к коду, тем она более качественная, идеально когда она вообще генерируется из кода или наоборот.

При этом микросервисы, где у каждого свой репозиторий, кажется мне более понятным и логичным способом организации работы команды. Но этот подход обязательно требует соблюдения строгих соглашений между командами по использованию общих практик и соблюдения техрадара. Чтобы соглашения соблюдались, надо вести шаблон CI/CD, который не позволит команде или какому-то отдельному инженеру запустить сервис на каком-то другом стеке или использовать какой-то иной подход к запуску линтеров, тестов, генерации документации, проверки API контрактов на обратную совместимость, проверок докер образа на безопасность, деплою, и т.д. и т.п.

В обоих случаях, не важно монорепа или полирепозитории, нужен какой-то дополнительный инструментарий или со стороны разработчиков для других разработчиков, или со стороны DevOps для разработчиков. С монорепой, наверное, на старте чуть проще, так как все лежит в одном месте изначально и контролировать соглашения по разработке проще просто на уровне процесса codereview.
👍5
Пост о маленьких победах каждый день

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

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

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

Из известных исследований на эту тему - это исследование Мартина Селигмана "The Effectiveness of Psychosocial Intervention for the Treatment of Unipolar Depression" в журнале "Journal of Abnormal Psychology" опубликованое в 1990 году. Один из выводов звучит примерно так:
Постепенное достижение маленьких успехов и поощрение позитивных результатов способствует формированию позитивной жизненной позиции у индивидуума.

Кстати, у нас в странах СНГ есть отличная фраза на этот счёт: "Едим слона по кусочкам". Каждый кусочек можно рассматривать как маленькую победу.
12👍6🔥3
Что такое senior инженер?

Несколько лет я наблюдаю тенденцию снижения уровня оценки senior инженера. Это проявляется в том, что кандидаты в возрасте 20-25 лет с опытом работы всего 2-3 года начинают самоопределять себя senior'ами. Конечно, возможно все, и если начать работать и писать код в, скажем, 16 лет, то к 20-25 годам действительно можно достичь уровня senior. Однако это скорее исключение из правил. Обычно видишь резюме с опытом работы всего 2-3 года, где кандидат сам оценивает себя как senior. Понятно, что сейчас рынок очень "голодный", и в свете оттока специалистов в период пандемии и после 2022 года общий уровень, по моему субъективному мнению, senior'ов существенно снизился. Раньше senior-инженер был таким "решалой" - сотрудником, который мог решить любую задачу без лишних вопросов, потребности в точном ТЗ/БТ, помощи от другого специалиста и т.д. и т.п. Ему можно было поручить задачу, забыть о ней, и вспомнить уже только тогда, когда он вернется с готовыми вариантами решения.

Как-то с бывшими коллегами из Магнит мы написали свое представление о senior инженере. Если интересно - welcome по ссылке.

"Люди, которые наиболее успешны в IT-индустрии, это те, кто приветствует перемены и готов признавать, что их знания устарели." - Стивен Хоффман, сооснователь LinkedIn


Может просто мои знания (понимание) о senior инженере устарели?
👍7🔥72
Последние две недели освежаю свои знания в подходах к построению организационной структуры.

Вопрос достаточно холиварный, или, как говорят в ЗЯ, лоливарный. Если объяснять на примерах, то есть две модели: модель Spotify и модель Avito. Я не утверждаю, что именно эти компании эти модели создали, просто их примеры самые яркие и имеют разные публичные документы и манифесты. Весь мой опыт до ЗЯ был, так или иначе, связан с моделью Avito и я был, и наверное все ещё являюсь, амбассадором этой модели при построении команд. Она мне кажется вполне логичной и, что более важно лично для меня, она крайне требовательна к роли тимлида команды. В ЗЯ модель построения команд похожа на Spotify. Для меня это с одной стороны тяжело, с другой стороны я чувствую, что получаю ответы на вопросы, на которые раньше не мог найти ответов. Понятно, что дьявол всегда кроется в деталях реализации и они у каждой компании свои, но тот факт, что в Spotify модели нет роли тимлида команды не даёт мне покоя.

Мне, как СТО, хочется опираться на руководителей, у которых за плечами есть большой инженерный опыт. В классической Spotify модели у продуктовых команд нет тимлидов. Как быть?

P.S.: как по мне, то роль тимлида отлично описана в https://tlroadmap.io/
👍6🤩4🔥1