Русский
Русский
English
Статистика
Реклама

Cto

И снова о Legacy. Вечная боль техдира

27.07.2020 20:17:32 | Автор: admin

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


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


Техдир пришёл к ним, поздоровался и спросил: Ребята, скажите честно, какой аццкий зверь меня ждёт в этом проекте? Потому что стейкхолдеры рассказали только о единорогах с радужными хвостами и розовых пони? Legacy, да?


Legacy, ..., грустно ответили разработчики.


Сказка закончилась. Началась работа и непростые решения.



Cитуация. Первый извечный вопрос русской интеллигенции Кто виноват?


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


Они привлекает либо аутсорсеров, либо от других своих проектов отвлекает разработчиков. В общем, буквально экономят на всём, пытаются за копейки сделать какой-нибудь мини MVP, с помощью которого проверить гипотезу. Допустим.


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


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


И погнали. Оно работает с помощью каких-то негров с опахалами, шамана, бивня мамонта, летающей китайской крысы и панголина.


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


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


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


Сами гипотезы-то быстро проверяются берут программиста из какого-нибудь проекта, выдергивают его на пол дня, он быстро-быстро налепил и убежал, потом берут другого программиста или вообще фрилансера какого-нибудь.


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


Проблема. Второй извечный вопрос русской интеллигенции Что делать?


И проблема заключается в том что, во-первых, цена разработки высокая: она складывается из того, что ты погружаешься заново, проводишь R&D такой на то, чтобы разобраться, как здесь все работает. С другой стороны, документации нет. Документация нужна для того, чтобы ты разобрался, сформировал справочник и мог им пользоваться в дальнейшем. Документация это такой коммуникатор между стейкхолдерами, между разработчиками и постановщиком задач, между продуктоунером и конечными пользователями. Такая форма дешевой коммуникации, как железная дорога. Её долго и дорого строить, но зато потом очень дёшево перебрасывать грузы и людей на огромные расстояния.



Итак, техдир приходит на выстреливший проект. Программисты там, что могли, сделали. Теперь приходит технический управленец, который знает, как построить правильно, как масштабироваться и так далее. И он видит вот это вот нечто. Да, именно Нечто, как в фильме ужасов. И у него возникает дилемма, с одной стороны, он же новый человек перед проектом, ему тоже нужно какие-то свои KPI выдерживать, как-то показывать себя перед бизнесом.


А бизнес вообще не знает, что проблема есть. Бизнес вообще не понимает: Ну как так, MVP же работает?. Работает. А почему новую фичу нельзя вот прям счаз воткнуть? И с чем сталкиваются многие технические управленцы, они не могут объяснить, в чем конкретно проблема и самое тяжелое они не могут показать в метрике, измеримой бизнесу, чтобы они понимали, что в текущем состоянии разработка фичи стоит 100 рублей, а в оптимизированном, например, 10 рублей.


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


Решение проблемы. Ломать нельзя рефакторить. Или уходя гасите всех


И мы переходим к решению проблемы. Существуют различные попытки решить проблему.


Решение номер раз. Помножить на ноль


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


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


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



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


И у команды есть свои резоны и свой выбор о том, как им действовать. Кто-то говорит: Ну-ну, посмотрим, что эта ваша новая схема стоит, будет он помогать или не будет, это большой вопрос. Кто-то встает по стойке смирно и говорит: дДа, хорошо, я готов. Некоторые начинают откровенно вредить. Почему? У них же раньше была власть, ещё вчера у них была власть, они были опытными сотрудниками, которых ценили на проекте за то, что они могли решить любую проблему. А проблемы заключались в том, что там всё это было в таком бардаке, что никто не знал.


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


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


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


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


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


Решение номер два. И давайте тут чуть-чуть починим


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


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


Что у нас получается? А у нас получается, что команда ввела так называемый налог на непонятно что, формально называется налог на исправление технического долга. Но как он там исправляется, если бизнес придет и спросит А что там и как? Что у вас? Бизнесу, конечно, объяснят, но он не поймет. В чем заключается технический долг с точки зрения технаря, понятно.


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


Во втором примере новой концепции нет и это реально проблема.


Решение номер три. Золотая середина. Микроверсия нового продукта


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


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


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


И теперь важная тема. В книге Фредерика Брукса приводится приводится пример того, как раньше строили храмы и там был пример храма Temple Expiatori de la Sagrada Famlia в Барселоне, строящегося на частные пожертвования начиная с 1882 года, знаменитый проект Антонио Гауди.



Суть в том, что Sagrada Famlia придумал Гауди и он выработал архитектуру, каким храм должен быть, но так как проект огромный, его строили много поколений и он еще недостроен, его достраивают еще.


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



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


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


Теперь давайте посмотрим на поток задач, который приходят в спринт. Там есть какие-то мелкие правки, какие-то мелкие фичи. И вот эти вот вещи, какие-то мелочи, которые приходят, их нужно делать по-старому, по-плохому. Точно так же вонзаем какие-то костыли, делаем по-старому.


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


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


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


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


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


Это, пожалуй, один из самых удачных подходов, который мне известен.


О проблеме, когда сталкиваются технический директор и Legacy, рассказал CTO Дмитрий Симонов, основатель канала Техдирские заметки. Так как сам испытал и не раз эту извечную боль техдира.

Подробнее..

DevOps с человеческим лицом

04.08.2020 14:20:22 | Автор: admin
Мы часто рассказываем, что полезного услышали на конференциях, реже о спикерах будущих мероприятий. И почти никогда не показываем людей, которые стоят за кулисами каждого хорошего выступления и дирижируют ансамблем тем. Пора это менять, потому что то, кто и с каким подходом готовит программу, может рассказать о конференции гораздо больше, чем список тезисов.

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


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

В этой беседе участвовали четверо: Тимур Батыршин, Дмитрий Зайцев, Валерия Пилия и Мона Архипова. И так удачно совпало, они все смотрят на DevOps немного под разными углами и приносят разные акценты в программу конференции.

Тимур Батыршин (erthad) в IT более 15 лет, за это время участвовал в строительстве дистрибутивов Linux, виртуализации серверов, когда это еще не было модным, автоматизировал разворачивание серверов на облаках и строил архитектуру облачных приложений.

Тимур Батыршин: Можно сказать, что путь в программный комитет DevOpsConf начался в 2012-2013 году с сообщества Hangops Ru (Hangops можно расшифровать как Ops на Hangouts, именно в Hangouts проводились регулярные беседы об индустрии). Постепенно сообщество выросло за пределы чата, и основной костяк энтузиастов стал организовывать DevOpsDays Moscow. Дима и Лера тоже участвовали, а больше всех двигал конференцию Саша Титов (osminog).

Дмитрий Зайцев (bhavenger) развивал DevOps- и SRE-практики, когда это ещё не было модным. Совмещал их с ITIL и Cobit, пока те ещё были в моде. Имеет опыт работы в gamedev, adtech, bigdata, fintech, marketing. Является одним из организаторов DevOpsDays Moscow, DevOps Moscow, Hangops Ru. Сейчас Head of SRE во flocktory.com.

Дмитрий Зайцев: Году в 2015 я как-то оказался в чате Hangops, вскоре стал участвовать в записи и организации видеопосиделок. В 2017 Саша Титов обратился ко мне с идеей сделать конференцию. Тогда она называлась RootConf и была больше для системных администраторов. Я как раз был среди тех, кто пытался её изменить. В 2018 это удалось, мы перезапустили конференцию уже под названием DevOpsConf, сместив акцент с тулинга для сисадминов на DevOps: что это такое, что мы хотим от этого подхода, чего хочет рынок от специалистов в DevOps.

Валерия Пилия работает во flocktory.com Infrastructure Engineer, занимается поддержкой инфраструктуры на AWS с k8s. Участвовала в адаптации русскоязычного издания книги DevOps Handbook и является одним из организаторов митапов DevOps Moscow и конференции DevOpsDays Moscow 2019. В программный комитет DevOpsConf пришла два года назад, как и другие участники беседы с подачи Александра Титова.

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

Мона Архипова (Mona_Sax) COO sudo.su (МИРЦ), до этого занимала руководящие и экспертные должности в области безопасности и IT. В ежедневной работе активно использует DevOps-практики и тоже начинала, когда это еще не было мейнстримом. Мона присоединилась к программному комитету после отличного доклада Как (вы)жить без отдела безопасности о том, что безопасность это ответственность каждого человека. Теперь несет безопасность в массы не только на конференциях по безопасности, но и на DevOps Live.

Мона Архипова: Когда Саша Титов пригласил меня в ПК, я решила, не можешь предотвратить возглавь. К сожалению, большинство IT-конференций не уделяет внимание безопасности и получается вжух-вжух и в продакшн, а потом бывает очень больно от того, что что-то утекло или выставлено без пароля. Хотелось бы насадить в IT понимание того, что безопасность нужна, но важно искать баланс между безопасность и скоростью DevOps.

Безопасность и DevOps


Как вы уже поняли, Мона продвигает DevSecOps и в этом году безопасности на конференции станет больше. Но это не будет конференция по безопасности внутри DevOps Live все выступления рассчитаны на любой уровень экспертизы, то есть подойдут тем, кто только начинает задумываться о безопасности. Но и тем, кто уже работает в этом направлении, покажем некоторые неочевидные моменты и полезные инструменты.

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

DevOps системным инженерам: инструменты и не только


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

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

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

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

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

Валерия Пилия: Было бы наивно ставить перед собой исключительно просветительскую цель. Она, конечно, заложена в конференциях by design, но невозможно научить кого-либо против воли. Зато можно заинтересовать, заставить удивиться и усомниться. Помочь узнать что-то новое, что, может быть не сразу, но пригодится и получится что-то очень классное.

Мона Архипова: Я в свою очередь привношу старые добрые вещи. По одной простой причине: хотя область и молодая, уже успело смениться поколение тех, кто занимается инфраструктурой, DevOps и т.д. Нынешние джуниоры уже не слышали про этот наш ITIL и другие страшные аббревиатуры. Поэтому, мне кажется, важно не только рассказывать о новом, но и напоминать, что старые практики никуда не делись, они все еще актуальны. Новые инструменты безусловно облегчают жизнь, но фундамент и база тоже должны быть.

Дмитрий Зайцев: Ждать от новых людей в индустрии, что они будут изучать ITIL, я бы не стал. Кажется, основное, что нужно было взять из ITIL, естественным образом перешло в современные практики. С другой стороны, странно, если вы работаете в IT и ничего не читали об Extreme Programming, хотя этой методологии уже больше двадцати лет.

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

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

DevOps в продуктовой разработке


Идея конференции DevOps Live посмотреть на DevOps с разных сторон, в частности с точки зрения продуктовой разработки.

В рамках DevOps-подхода технические решения должны быть связаны с задачами бизнеса. Но инженеры часто не очень хорошо себе представляют, в чём эти задачи состоят. Например, считают, что раз в DORA Report написано, что крутые организации релизятся по несколько раз в день, то для бизнеса важнее всего time-to-market.

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

Для DevOps Live Тимур Батыршин и Андрей Шорин поговорили с Product Owner'ам. Оказалось, что time-to-market как его понимают инженеры частые релизы им не очень-то и важен. Важнее предсказуемость, которая достигается, когда продуктовые команды, команды разработки, эксплуатации и менеджмент работают над общими целями и понимают друг друга. Поэтому на конференции уделим внимание тому, как договариваться, устанавливать доверие, работать с токсичностью и т.д.

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

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

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

DevOps на Chief-уровне


Внедрение DevOps-практик в компании однозначно не обходится без активного включения CTO, то есть среди аудитории DevOps Live есть технические руководители. ПК решили определить, какие боли у CTO и как можно помочь их решить, потому что оказалось, что на современных IT-конференциях такого контента мало. Чаще всего рассматриваются более частные вопросы отдельных команд или технических задач.

Одно дело, выбирать между Kubernetes и OpenStack, и другое решения Chief-уровня. Таких решений, во-первых, приходится принимать сильно больше, во-вторых, чаще всего в компании еще нет релевантного опыта и можно опираться только на чужие результаты, в-третьих, высока цена ошибки.

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

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

Взаимопонимание во главе угла


Как видите, все темы взаимосвязаны и являются частью пазла. Не нужно думать: Ага, продуктовая разработка меня не интересует, до СТО мне еще далеко остается только часть с инженерными практиками. Это не так.

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

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

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

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

Всё это онлайн


Тема, о которой мы не могли не поговорить, онлайн, куда пока что переместились все мероприятия. Мы в Онтико уже провели три тестовых и три больших онлайн-конференции (как они прошли можно посмотреть в статье о KnowledgeConf), не всё так страшно. Но мы понимаем, какие могут быть сомнения, более того, они есть даже внутри ПК.

Две главные проблемы онлайна на наш взгляд:

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

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

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

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

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

Другое не самое очевидное преимущество онлайна в том, что мы не ограничены не только пространством (например, Инфопространством), но и временем. Весной на собственном опыте мы поняли, что на онлайн-конференции совершенно невозможно оставаться вовлеченным восемь часов подряд. Зато у нас есть возможность для маневра: мы можем распределить наши мероприятия на несколько дней по несколько часов. Расписание будет всё еще довольно плотным, чтобы участники были погружены в контекст, но несколько дней по несколько часов в удобное время обеспечит комфортную скорость для восприятия информации.

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

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

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

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

DevOps Live получается:

  • Вот такой ширины с точки зрения форматов: будут доклады, мастер-классы, воркшопы, дискуссии, групповые и индивидуальные консультации и это еще не все карты раскрыты.
  • Вот такой высоты с точки зрения аудитории: ждём на конференции инженеров разных IT-специальностей, безопасников, CТО, менеджеров продуктов и владельцев бизнеса.
  • А еще и глубины, потому что хардкорные вещи тоже обязательно будут.

Надеемся, это и наша со спикерами тщательная подготовка позволит конференции победить в конкуренции за внимание даже работу и соцсети.

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

DevOps Live пройдет в два этапа 29-30 сентября и 6-7 октября. До 15 августа еще можно подать доклад или забронировать билет перед повышением цены.

Следите за обновлениями в телеграме или рассылке будем сообщать о принятых спикерах и открывать подробности форматов.

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

Профессия СТО часть 2

13.01.2021 14:06:06 | Автор: admin

И: Что происходит, когда новый СТО приходит в компанию?

Е.Р.: Когда я пришёл работать в IVI, там небольшая команда, но была. Поэтому у меня этот пусть небольшой опыт, но есть. Прежде всего, ещё до того, как ты принимаешь решение о том, что ты куда-то выходишь, надо понять, какие цели и задачи перед тобой стоят. Когда ты переходишь куда-то работать на уровень СТО, это чудовищно огромный кот в мешке, даже коты в мешках. Я могу прекрасно выступать на конференциях, быть весёлым балагуром и задорно рассказывать о том, как устроена жизнь, а на самом деле оказаться задротом и раздолбаем, который, кроме как поговорить, ничего не умеет. Это риск и для компании, и для человека, который приходит работать на новое место, особенно если команда уже сформирована.

Интересный вопрос: а кто собеседует СТО? СЕО и его подчиненные. СТО - это такой мостик между теми, кто дает деньги, и теми, кто занимается разработкой, внедрением, имплементацией. Тебе надо сначала сформулировать свою картину мира, какие задачи и цели перед тобой стоят. Со 100%-й вероятностью то, что тебе говорит СЕО, окажется не так. Потому что то, какие задачи перед тобой ставят люди, которые тебя нанимают, скорее всего, это не совсем то, что им нужно - если бы они знали, что им нужно, им не нужен бы был СТО. Поэтому сначала требуется аудит и понимание того, что происходит. Для меня это прежде всего аудит людей, их возможностей, их потребностей. У меня был очень серьезный вызов - мне в подчинение достался человек, который был существенно старше меня и обладал - и до сих пор обладает - компетенцией, которой я не обладаю настолько глубоко. То есть я в институте проходил, как выглядит семиуровневая модель сети, но ниже истории с транспортным уровнем никуда не опускался. А тут есть человек, матёрый и опытный, и пришёл шпендель, который моложе его и не обладает компетенцией, чтобы им руководить, как ему могло показаться. Мой челлендж был понять, можем ли мы работать вместе и можем ли совместно приносить компании пользу. И мы, как мне кажется, завоёвывали взаимное уважение друг перед другом. Очень аккуратно присматривались, общались, пытались понять, на сколько мы в принципе говорим на одном языке. Нам это удалось, мы работаем вместе с 2012 года и тьфу-тьфу-тьфу вроде у нас всё хорошо.

Как правило, самые основные вызовы - это понять, какие проблемы есть у команды, можно ли с этими людьми что-то построить и захотят ли эти люди с тобой что-то строить, куда делся предыдущий СТО, с чем он справился, с чем он не справился. Ты должен сделать так, чтобы команда тебя приняла и ты был её частью. Получится это или нет - хрен его знает. Сейчас наш рынок труда довольно сильно перегрет и есть безумное количество мест, куда человек может устроиться работать, с разными условиями. А это значит, что он выбирает в том числе и зону психологического комфорта, где у него есть цели, где его, как бы это ни было парадоксально, заставляют переступать через себя. Потому что мы тренируем свой мозг и, если у нас есть хороший тренер, который нас заставляет каждый день что-то делать, мы прокачаемся намного быстрее - что в спорте, что в вопросах профессионального уровня. И нужно найти общий язык с командой, с другими представителями топ-менеджмента, выстроить мосты, а лучше сломать стены и сделать так, чтобы не было делений на наши новые-старые. Это довольно длительная работа. Может, уволить всех надо к чертям и собрать новую команду, всё зависит от ситуации. Я знаю компании, где работает всех разогнать и набрать всех заново, и это тоже выигрышная история, и компании, где люди плавно перестраивают процесс, сохраняя людей и hr-бренд.

А как выглядит собеседование СТО?

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

А как тебя собеседуют?

Иногда говорят: Смотри, у нас есть такие-то проблемы, как бы ты их решал? Или говорят: Есть ли у тебя опыт того-то того-то? При этом верят на слово, потому что, как правило, тот, кто спрашивает об опыте, сам этим не занимался раньше. Когда тебя собеседует генеральный директор или директор по персоналу, они смотрят на твой уверенный тон, у них есть свои маркеры вранья. Ты должен побороть в себе синдром самозванца и сказать: А я вообще ничего!. В основном, мне кажется, им нужно понять, как ты будешь решать их проблемы, и можешь ли ты их решить. Все, кто собеседовал меня, хотели увидеть какую-то уверенность в завтрашнем дне. Что на этого парня можно спихнуть весь геморрой, который сейчас есть, который они сейчас тянут, потому что тянуть больше некому. Дальше ты плавно переходишь к своим вопросам, и, как мне кажется, твои вопросы говорят о тебе намного больше, чем те вопросы, которые тебе задают. Ещё есть история, когда люди просто тебя знают. Ты получаешь рекомендацию от кого-то из их команды, например: По технике он норм, посмотрите, на сколько он долбодятел, сможете ли вы с ним работать.

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

Поскольку я предпочитаю работать подолгу на одном месте, у меня есть довольно интересное мнение, которое касается и разработчиков, и СТО в первую очередь. Люди, которые прыгают из одной компании в другую, проработав по году, не отвечают за свои слова. Это значит, что те архитектурные решения, которые они сделали, проверяет кто-то другой. И они не получают того самого опыта, который нужен для жизни долгоиграющего сервиса. Ты устроился работать в компании, проработал там два месяца, написал какой-то сервис или сделал какую-нибудь фичу, а когда эта фича через 7-8 месяцев перешла в суровую эксплуатацию, ты увольняешься. Но кто будет отвечать за то, что эту хрень написал ты? У СТО ещё более длительный период. Ты принимаешь такие решения, за которые компания будет расплачиваться через несколько лет.

Есть какие-то вещи в твоей будничной рутине, которые, если бы можно было, ты бы вычеркнул из обязанностей СТО и никогда бы этим не занимался больше?

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

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

Вилки зарплат СТО примерно такие. Я не слышал о максимуме, но могу привести несколько примеров предложений, которые приходили мне. Я знаю, что сейчас зарплаты СТО начинаются примерно от 250 тысяч. Это мы говорим про компании не очень большого масштаба. В средней компании зарплата СТО сейчас, как мне кажется, около 450 тысяч. У гигантов побольше. Опять-таки, я смотрю по рынку по России. Если мы говорим про западные компании, история может отличаться, там роль СТО несколько более дорогостоящая. Но сейчас хорошие ценники болтаются около 700-800 тысяч. А дальше уже идут звёздные истории. Я знаю СТО с зарплатой в миллион, я знаю СТО с зарплатой полмиллиона, я знаю СТО с зарплатой 0,7 миллиона. И это всё довольно крупные проекты, которые на слуху.

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

Так совпадает, что люди выбиваются в сторону СТО примерно в районе кризиса среднего возраста или чуть-чуть пораньше - хотя я сильно до 30-ти начал заниматься управлением. Но по-хорошему, это просто жизненный вопрос: А что ты хочешь? Кто-то сильно упарывается по баблу. Идут в говнопроекты, где понятно, что то, что ты будешь разрабатывать, будешь разрабатывать в стол, и человек понимает, что оно никогда не полетит. Я знаю людей, которые в разные проекты ходят за деньгами. И когда они с помощью бонусных программ получают определенное value, они начинают не работать. Это один из путей. Второй из путей - когда ты переходишь в категорию бизнес-ангелов или инвесторов, людей, которые своим опытом и компетенцией помогают молодым компаниям пробиваться с технологической точки зрения. Тоже вполне себе интересная история. Этим славится определенное количество людей. То есть либо ты уходишь и делаешь свой стартап, либо ты просто помогаешь команде - за долю или ещё за что-то - которая тебе симпатична. Есть люди, которые продолжают переться от того, что они делают, и находить себе задачи и проекты, в которые они влюбляются. Я пока не разочаровался в том, чем я занимаюсь, и мне нравится то, что я делаю. Мне нравится заводить эти шестереночки и находить применение своим умениям. Плюс, есть два стандартных направления: вертикальный рост и горизонтальный рост. Ты можешь перепрыгнуть в компанию с большим штатом, с другими масштабами, ты можешь вырастить свою компанию - вариантов масса. А можешь пойти работать разработчиком, потому что, вы удивитесь, но в разных направлениях в большинстве случаев ценник заплат СТО не сильно отличается от зарплат разработчика или лида.

А что с опционами?

Не у всех есть опционы. Компаний, которые нормально целятся в опционную программу, немного. Тех, которые вообще без всяких опционов, больше 90%. Мы с вами привыкли смотреть на гигантов, которые выступают на конференциях, но рынок-то большой. Есть куча никому неизвестных компаний, которые делают офигенные вещи на хорошем уровне. Они не вкладываются в маркетинг, в бренд, они просто делают хорошо. Или работают на госорганы и не могут рассказать, что они делают хорошо. Но если закончить прошлую мысль, скажу так: ответственность СТО сильно больше, чем ответственность разработчика. Это то, о чем я говорил в начале - ты сам должен придумать, куда тебе расти. И если ты этого придумать не можешь, тебя ждёт очередной кризис, нервные срывы, психолог и синдром самозванца.

Подробнее..

Перевод Четыре ошибки программистов, которые я осознал, только когда стал CTO

08.05.2021 14:13:54 | Автор: admin
image

Я работал программистом более пяти лет. Не особо впечатляет, ведь кто-то из вас, вероятно, имеет в три раза больший опыт, но мне нравилось думать о себе как о сениор-разработчике. Звучит серьёзно и солидно, правда?

Однажды мне предложили стать Chief Technology Officer (CTO) в медтех-стартапе. Поработав некоторое время на этой новой должности, я могу обернуться назад и сказать, что не был сениор-разработчиком. Не поймите меня неправильно я по-прежнему считаю, что обладаю отличными знаниями программирования, особенно веб-разработки; но если это так, почему я не думаю, что был сениором?

Всё это из-за четырёх заблуждений, которые у меня были.


Пользователь (?)

1. Пользователь это идиот


Нет, он не идиот.

Да, пользователи работают с приложением неожиданными, часто странными способами.

Да, пользователи могут задавать вопросы, которые кажутся по-настоящему глупыми.

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

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

Пользователь не специалист. Мой врач не требует от меня, чтобы я знал отличия между липопротеинами низкой и высокой плотности. Так почему я привык предполагать, что пользователь знает, каким браузером он пользуется? Это очевидно вам и мне, но моя мама считает, что Google и Интернет это синонимы. Она бы сказала, что не пользуется никаким браузером, потому что использует Google.

Иногда чтобы удовлетворить пользователя мне нужно было переопределять части фреймворков для изменения их стандартного поведения. Иногда мне приходилось добавлять поддержку браузеров, которые я поддерживать не хотел (привет, пользователи Safari). Сегодня это кажется мне глупым, но в то время я действительно думал, что если мне приходится создавать в своём коде обходные пути для удовлетворения требованиям клиента, то в этом виноват клиент.


Выбираем самое лучшее имя для переменной.

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


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

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

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

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

Мы часами обсуждали то, насколько плохо это решение, и сколько оно будет стоить нам в будущем.

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

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

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


Отношение моей старой команды к пробованию чего-то нового.

3. Я буду использовать для этого проекта X, потому что знаю его


В моей предыдущей компании мы создавали каждый проект с одинаковым технологическим стеком: Symfony и Angular. Почему? Является ли Symfony лучшим бэкенд-фреймворком? Нет. Может быть, Angular единственный способ создания современного фронтенда? Нет. Мы всегда выбирали эту связку технологий, потому что не знали другие так же хорошо, как эти. Это была наша зона комфорта, но действительно ли неправильно выбирать хорошо известные технологии для новых проектов? Это зависит от разных факторов.

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

Помню проект, в котором самым важным требованием был хорошо работающий WebSocket. Что мы выбрали для создания бэкенда? Symfony, разумеется. Возможно, сегодня реализация WS на PHP будет выглядеть проще, но в то время это было кошмаром. Мы потратили много времени, чтобы заставить его работать. ОЧЕНЬ много. Мы знали, сколько времени (и денег) будет потрачено для создания WS на PHP, но мы отказались от идеи использования Node. Почему? Не могу сказать точно. На Node мы бы создали API в десять раз быстрее, но он не был в технологическом стеке нашей команды.

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


Что я думал о решениях менеджера по продукту.

4. Владелец продукта/менеджер по продукту ошибается, я бы сделал лучше


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

Это было так наивно, но я действительно считал, что всё так просто. Теперь я полностью понимаю, как сложно спланировать каждую деталь проекта. Нужно учитывать ограничения технологий и бюджета (что на самом деле одно и то же), необходимо думать о пользователях, которые будут работать с твоим продуктом, нельзя забывать о требованиях бизнеса и маркетинга. Иногда некоторые требования неизвестны в начале; иногда меняются обстоятельства у бизнеса, а иногда нужно сначала что-то создать, чтобы понять, что это можно сделать лучше.

Ещё один аспект менеджеры по продукту могут совершать ошибки. Да, всё так просто. Программисты создают баги и PM тоже. Сегодня это кажется мне настолько очевидным. Если бы я был программистом получше, то понял бы это раньше. Вместо того, чтобы пытаться доказать, насколько он ошибается, мне нужно было сосредоточиться на поиске решений.

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

Подведём итог


Для кого-то из вас эти четыре пункта могут оказаться очевидными. Если вы работаете в отличной организованной agile-команде с хорошим руководителем и не забываете основные правила UX, то я искренне рад за вас. Наверно, вы можете быть гораздо лучшим программистом, чем был я. Ведь чтобы быть хорошим программистом, недостаточно только технических навыков. Гораздо важнее понимать, какую ценность ты можешь принести компании, и как это сделать. Теперь я понимаю определение сениор-разработчика следующим образом:

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




На правах рекламы


Подыскиваете VDS для отладки проектов, сервер для разработки и размещения? Вы точно наш клиент :) Посуточная тарификация серверов самых различных конфигураций, антиDDoS и лицензии Windows уже включены в стоимость.

Подробнее..

Управление разработкой в горизонтальных компаниях расшифровка онлайн-встречи. Часть 2

18.11.2020 16:23:31 | Автор: admin

На прошлой неделе мы выпустили расшифровку первой части онлайн-встречи Управление разработкой в горизонтальных компаниях, где приняли участие СТО Райффайзенбанка, Mindbox и руководитель разработки в Циан.

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

Гости

Темы второй части

  • Чем leadership внутри плоской команды отличается от менеджмента?

  • Как в горизонтальной структуре решаются вопросы безопасности?

  • Какие плюсы от открытых зарплат в Mindbox?

  • Как команда соблюдает technical excellence?

  • Как в горизонтальных компаниях шарятся ресурсы?

  • Есть ли у вас и как устроен Performance Review?

Чем leadership внутри плоской команды отличается от менеджмента. Как решаются вопросы безопасности. Technical excellence. Решение конфликтов

Алексей Рыбак: Давайте сейчас перейдем к вопросам из зала. Я начну зачитывать те вопросы, которые есть в текстовом чате. Первый вопрос был от Димы Кушникова. Сергей, а чем leadership внутри команды отличается от менеджмента?

Сергей Кононенко: Менеджмент command and control. Command and control никто из этих троих людей, которые входят у нас в leadership team, не занимается.

Алексей Рыбак: Понял. Следующий вопрос тоже от Дмитрия. Банковское обслуживание довольно регулируемая индустрия. Наверняка есть огромное количество требований, которые необходимо соблюдать, чтобы регулярно проходить аудит безопасности? Что случилось с политикой безопасности в процессе трансформации?

Сергей Кононенко: Ничего не случилось, они все с нами. Аудиты есть не только по безопасности, есть много других аудитов, которые мы регулярно проводим: как внутренние, так и внешние, так и групповые из Raiffeisen Group.

Алексей Рыбак: Следующий вопрос был тоже от Дмитрия. Сергей, кто и как контролирует, что команда соблюдает договоренности, technical excellence? Как происходит изменение требований technical excellence?

Сергей Кононенко: Бездушные роботы контролируют. Есть соответствующие механизмы, которые просматривают все артефакты команды и смотрят, попали в threshhold выполнения или не попали. Как происходит? Все изменения болезненны обычно для организации, поэтому происходят желательно мягко, с большим количеством информации: почему это происходит, когда это произойдет, зачем это происходит.

Алексей Рыбак: Хорошо, следующий вопрос. По-видимому, уже всем. Вопрос от Вадима Назарова. Отличный, кстати вопрос. Как организуется решение конфликтов, если платформенной команде в рамках своего проекта требуются какие-то доработки от продуктовых команд, а у продуктов тоже свой бэклог?

Сергей Кононенко: Мне, наверное, проще всего ответить. У нас нет платформенных команд, которым нужны какие-то особенные доработки. Платформенные команды выставляют definition of done, что значит разработка на их платформе. Если этот definition of done под продуктовые команды не соблюден, то их инкремент просто не принимается в платформу.

Алексей Рыбак: Понятно. Никита, как у вас?

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

Алексей Рыбак: То есть через какую-то специальную встречу, где происходит какая-то договоренность. Хорошо, тогда такой вопрос. Во всех liberated структурах есть всегда такой стиль, когда ты, с одной стороны короче, вежливое нет, вежливое постоянное нет. Структура позволит это сделать, но в случае, если постоянно идет отказ: Да, но не сейчас. Нет времени, слушай, такой важный проект. Да, техдолг, но не сейчас, и постоянно, постоянно откладывается. Что произойдет? Встречаемся: Слушай, не могу, не можем.

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

Алексей Рыбак: У тебя есть платформенная команда, которая переходит с одной версии API или базы данных на другую. И логику надо переписать, потому что тот SQL, который я написал, или тот API, который я использую, новым софтом не поддерживается. Я должен переписать достаточно важный кусок. Я не хочу его трогать, оно поломает дофига всего. Я объяснил это продакту, который говорит: Не-не-не, вы вчера сломали что-то. И в прошлом месяце что-то сломали. Нет, сейчас мы делать не будет, потому что у нас очень важные планы, бла-бла-бла

Никита Прудников: Да, я понял, могу ответить.

Алексей Рыбак: Ну, привет! А когда? Вы встретились, сказали: Встретимся через две недели и поговорим. За две недели произошло еще что-то, через две недели тоже. Вот такой сценарий. Дальше?

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

Алексей Рыбак: Кто влезет в бизнес-логику? Платформенная команда влезет в бизнес-логику, перепишет какие-то вызовы, платформу?

Никита Прудников: В том числе она может так сделать, конечно.

Алексей Рыбак: Я понял. У вас были такие кейсы? В реальности были такие ситуации или нет? Как они разрешались?

Никита Прудников: Давай подумаем. У нас часто нет такой суперантогонизации между ролями команд. То есть, если такие кейсы возникали, чаще всего не было конфликта. Платформенная команда договаривалась с продуктовой, у которой вообще-то есть выделенный постоянно ресурс на технический долг, который она может тратить. И они решали, что эту часть чуваки сделают у себя, потому что это business critical, и они очень сильно в домене это знают, эту часть запулит себе платформенная команда.

Либо все сделает платформенная команда, либо еще какое-то решение. Допустим, мы отказываемся от этого инкремента, потому что есть большие бизнесовые риски. То есть возможностей даже недопущения этого конфликта очень много.

Я могу тебе прямо сейчас привести пример. Я на встрече несколько раз упоминал, что я сейчас занимаюсь автоматизированным SLA компании. И понятно, что он затрагивает продукты. В смысле в продуктах надо делать изменения, чтобы он замерялся. И обычно мы доходим до компромисса, что инкрементный SLA попадает в роадмэп продуктовых команд.

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

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

Никита Прудников: Может быть, но я не могу вспомнить пример такой задачи, если честно. Из-за того, что очень близко коммуникация С одной стороны, всё привязано к бизнесу, и мы обучаем архитекторов мыслить от бизнеса. То есть нам не нужны рефакторинги в воздухе, они всегда замотивированы чем-то. И спустя годы архитекторы могут объяснить продукту, зачем им это нужно, потому что они работают с продуктом в одной команде постоянно и занимаются приоритезацией части роадмэпа.

Алексей Рыбак: Хорошо. Михаил, у вас конфликты тоже решаются больше на более ранней стадии общения? Или можешь вспомнить какие-то примеры, когда они выплеснулись куда-то, не смогли решить?

Михаил Юматов: Бывают ситуации, когда команда платформы не может договориться с продуктовой командой. В этом случае они подключают меня или это может дойти до уровня CTO, где мы можем разрешить этот конфликт. И это либо укладывается в квартальное планирование, если это какие-то большие истории, которые затрагивают много продуктовых команд, и нужно разрезать весь этот проект продуктовым командам плюс платформе. Либо это какие-то небольшие истории в рамках квартала. И, соответственно, либо продуктовые команды самостоятельно договариваются вместе с платформой, либо не договариваются и эскалируют выше. И мы уже вместе принимаем решения.

Открытые зарплаты: какие от них плюсы. Рыночные зарплаты, воронка кандидатов. Описание задач

Алексей Рыбак: Ясно, спасибо. Никита, к тебе вопросы. Два вопроса. Первый вопрос от Димы Кушникова. Какие плюсы вы получаете от открытых зарплат?

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

Алексей Рыбак: Да, но, с другой стороны, появляется в том числе и определенное давление отрицательного характера, которое никуда не деть, а так бы его могло бы и не быть.

Никита Прудников: А какого отрицательного давления?

Алексей Рыбак: Например, произошла какая-то ошибка или необходимо удержать сотрудника. И закрытые зарплаты позволяют сделать определенный дисбаланс. Но поскольку он не является открытым, то он не оказывает никакого отрицательного

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

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

Алексей Рыбак: То есть ты думаешь, что настолько все привыкают, в том числе к такого рода культуре, что и уже уходить некуда? Ты это имеешь в виду?

Никита Прудников: В каком-то смысле я это вижу. У нас компания, с точки зрения нагрузки, серьезная. Именно day-to-day workload большой. И мы даже со своей стороны, сейчас интересный минус расскажу открытых зарплат, мы до сих пор не придумали хорошего процесса, чтобы люди самостоятельно пушили свою зарплату.

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

И мы сейчас с HR, с каким-то таким вещами занимаемся. Возможно, восприму твой совет про один на один, что надо реструктурировать в этом месте. То есть такая проблема есть.

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

Алексей Рыбак: Разные бывают ситуации, особенно когда большие коллективы. Такой еще вопрос, перекликается с одним из последних, по-моему, вопросов. А как часто вы делаете рыночный обзор зарплат? И есть ли у вас процесс, который оценивает, произошел ли gap up? Или люди скромно работают, а потом в какой-то момент им поступает предложение и они находятся в ситуации, когда: Блин, нифига себе. Это почему у нас

Никита Прудников: Ну, gap большой. Но это то, про что я рассказал.

Алексей Рыбак: Вопрос был довольно прямой: рыночные ли у вас зарплаты? Я здесь развернул: как часто у вас происходит такого рода ревью? Что из себя представляет этот процесс?

Никита Прудников: Ревью обычно происходит с точки зрения вакансий. Я и еще ряд людей, мы занимаемся интерированием вакансий на HeadHunter. И нам, естественно, с учетом того, что полностью открыты зарплаты внутри компании, этот гэп понятен. То есть у нас есть какая-то вилка на HH, к нам приходят какие-то люди по воронке

Алексей Рыбак: Прости, Никита, не понял. Как он вам понятен? С HeadHunter вы взяли эту информацию?

Никита Прудников: Мы делаем вилку на HeadHunter в вакансии, и к нам в воронку приходят какие-то люди. У нас нон-стоп конвейер собеседований. У меня каждый день примерно по одному собеседованию C#, лидов, я участвую.

Алексей Рыбак: Правильно я понимаю, что вы собираете это с потока входящих?

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

Алексей Рыбак: С потоком такая проблема. Ты ошибся, ты получаешь достаточное количество людей, но не получаешь определенных людей. У тебя получается ошибка смещенной оценки. С одной стороны, ты получаешь достаточное количество людей, которые зааплаились и что-то назвали. И при этом какую-то часть не видишь.

Никита Прудников: Но я в этот момент рефлексирую вилку, с ней же тоже процесс есть, она меняется. Если я вижу, что воронка работает не на меня, в этот момент я ее меняю.

Алексей Рыбак: Хорошо. У тебя есть понимание, какая текучка внутри компании?

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

Алексей Рыбак: То есть 2%? Если 50 человек

Никита Прудников: Я тут боюсь обмануть, честно тебе скажу. Просто я сейчас что-то из памяти вспоминаю. Кажется, оценка такая.

Алексей Рыбак: В любом случае это какие-то части. Давай двинемся дальше. Был еще вопрос, тоже, Никита, тебе. У нас минута Mindbox. Вадим Назаров спрашивает. Чем занимаются архитектор? Есть ли он? Кто ему ставит задачи? Кому подчиняется? Взаимодействует ли он с командой?

Никита Прудников: Это я вначале во время презентации рассказывал, давайте повторю. В каждой команде есть техлидер, мы их так называем. Архитектор, техлидер примерно то же самое в нашей терминологии. У него три ключевых вещи в его ответственности.

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

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

Алексей Рыбак: Понял. Никита, спасибо большое. У нас есть первый смелый. Спасибо большое, Георгий. Поднял руку, оказался на панели среди спикеров. Георгий, у вас вопрос. Прошу вас. Только включите, пожалуйста, микрофон.

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

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

Алексей Рыбак: Спасибо большое. Кто хочет ответить из вас?

Сергей Кононенко: Давайте я отвечу. Задачи прорабатываются внутри команды. Если задача не имеет понятного acceptance-критерия, то есть критерия, по которому мы поймем, что задача сделана, то, скорее всего, она будет сделана не сразу, не очень качественно, и у нас будут сюрпризы. Поэтому, пока команда не поймет, что они понимают, что нужно сделать, скорее всего, задача в работу не пойдет.

Алексей Рыбак: В связи с этим у меня вопрос. Это искусство описывать задачи, в том числе это искусство Мы это всегда называли PRD, спеки не важно. Спеки более технический текст, PRD более продуктовый. Там идет взаимодействие с дизайнером, там идет взаимодействие, может быть, не с одним продактом. Продакт, если будет описывать задачу, зашьется. Дизайнер не всегда готов описывать. UX-человек, если есть отдельный UX-специалист или UX-дизайнер, то он, может быть, каких-то аспектов продуктовых не знает. То есть это всегда магия.

Два вопроса в связи с этим. Как добиться того, чтобы не умерли все эти люди в процессе описания, потому что иначе это будет бесконечно. И кто все-таки это делает? Кто это делает и как добиваемся того, что это не занимает бесконечное время?

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

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

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

Алексей Рыбак: Спасибо, Сергей. Михаил, ты включал микрофон, видимо, хотел что-то ответить.

Михаил Юматов: У нас все опять же зависит от команды. Где-то, может быть, в наиболее сложной предметной области есть project-менеджер, который берет какую-то идею сырой от продакта и описывает уже более детально. И с этим детальным описанием уже выходит к команде разработки, где вся команда ревьюит это дело.

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

Как решаются вопросы безопасности

Алексей Рыбак: Следующий вопрос был Уже вопросы из Youtube пошли. Вопросы безопасности как решаются в ваших структурах? Я так полагаю, что так или иначе вопросы безопасности идут через платформенные команды. И они есть как в Mindbox, так и в Циане.

А есть ли платформенные команды все-таки у вас, Сергей? И вопросы безопасности каким макаром решаются? Потому что команда собралась и сама решила, как делать с точки зрения безопасности это не самый лучший set up.

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

Алексей Рыбак: У меня в связи с этим следующий вопрос. Во-первых, резюме. Достаточно мощная служба безопасности, автоматизация процесса деплоя таким образом, чтобы происходили почти все проверки автоматически.

Ревью. Означает ли это, что это какой-то процесс фоновый, или означает ли это, что каждый коммит должен пройти ревью безопасника?

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

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

Сергей Кононенко: Chaos Monkey?

Никита Прудников: Я думаю, скорее, пентест ты имеешь в виду.

Алексей Рыбак: Больше пентест, но нормальный пентест, когда никто не предупрежден.

Сергей Кононенко: Пентесты и BCP практикуем обязательно. Но совсем без предупреждений мы не можем, потому что банк работает 24/7. Вы, извините, приедете на заправку, а у нас пентест, и вы не сможете заплатить карточкой.

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

Сергей Кононенко: А мало ли, пенетрейшн удастся, и система упадет.

Алексей Рыбак: Ах, в этом смысле. Хорошо. Давайте дальше, про безопасность сообразили.

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

Алексей Рыбак: Михаилу вопрос. Как вы шарите ресурсы между командами, если шарите?

Михаил Юматов: Ресурсы это люди, наверное? Если люди, то стараемся этого не делать. Вот такой ответ. Иногда такое бывает, но это ад и для команд, и для человека.

Алексей Рыбак: Использует ли кто-то таймшиты? Если нет, то почему? Я не знаю, что такое таймшиты. Видимо, какая-то диаграмма или какое-то расписание?

Михаил Юматов: Это, видимо, отчетность по времени, как я понимаю.

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

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

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

Алексей Рыбак: Кто-нибудь еще хочет ответить?

Никита Прудников: Во-первых, мы стараемся очень сильно лайнить продукты с командами. То есть команда редко что-то делает, не относящееся к их продукту. Но процессы бюджетирования похожи, только мы вместо сторипоинтов просто используем эти блоки, карточки и также пропорционально делим. И из этого строим продуктовый P&L.

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

Алексей Рыбак: Хорошо. Ребята, еще быстрый вопрос всем. Просто давайте да или нет. Есть ли у вас performance review? Никита?

Никита Прудников: Все сложно. Что ты подразумеваешь под performance review?

Алексей Рыбак: Performance review это когда у тебя есть процесс, когда ты оцениваешь работу каждого человека в отдельности.

Никита Прудников: Если этот человек заводит карточку на повышение зарплаты, а это происходит автоматически, публично. В смысле, он же там пишет цели и то, чего он достиг.

Алексей Рыбак: Если он не завел эту карточку?

Никита Прудников: Если он работает как работает, в смысле нет вопросов с точки зрения стейкхолдера и других чуваков, то регулярного performance review нет. Если есть вопросики, тогда да, поехали. То есть on demand.

Алексей Рыбак: Сергей, как у вас?

Сергей Кононенко: Есть performance review команды. У команды есть performance-цели. И раз в год команда оценивается, и от этого зависит, получит команда бонус или не получит команда бонус.

Алексей Рыбак: Раз в год и всей командой?

Сергей Кононенко: Да.

Алексей Рыбак: Понял, спасибо. Как у вас, Михаил?

Михаил Юматов: Есть как оценка вовлеченности команды. Но это, скорее, больше про здоровье команды. И конкретного сотрудника тоже в том числе.

Алексей Рыбак: То есть у конкретного сотрудника есть performance review?

Михаил Юматов: Да.

Алексей Рыбак: Раз в какое время?

Михаил Юматов: Если говорить про какой-то общий процесс, то это может быть раз в полгода или год. Но на регулярной основе с лидом на one-to-one это постоянный процесс скорее.

Алексей Рыбак: Окей, то есть он такой Процесс performance review, если этот процесс, то у него есть определенный таймлайн, подготовка, заранее известные сроки, сколько раз в год. У кого-то один раз, у кого-то четыре раза. Хорошо, ладно.

Алексей Рыбак: Давайте двинемся дальше. Опять два вопроса Никите. Как техлиды оценивают технический уровень разработчиков не из своего стека?

Никита Прудников: У нас практически full stack. Просто из-за специфики компании У нас нет мобильной разработки, у нас очень ограниченный фронт, по сути, ограниченный облачной админкой нашего продукта. И очень много бэка. И большой проблемы с тем, что человек не разбирается в соседнем стеке, нет. Нам буквально только-только потребовались фронтенд-heavy истории. И в одной из команд появился выделенный фронтенд-лидер, который формулирует архитектуру фронта и все такое. И есть точка экспертизы и с точки зрения другого стека. Тут большой проблемы нет: ни в тех командах, где нет фронта, ни в той команде, где есть фронт. А с ним самим работаем совместно.

Алексей Рыбак: И следующий еще был вопрос, тоже, Никита, тебе. Про T-shape. В процессе работы компании возникает специалист с уникальным набором навыков. Как и надо ли это как-то выравнивать с рынком?

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

Мне кажется, с этой точки зрения сильно помогают как раз открытые зарплаты. Просто из-за того, что мы не можем сформулировать суперформальные критерии, что такой человек с таким набором навыков стоит вот столько. Это случается органически, потому что этот человек работает в команде с другими людьми. И по сути вопрос в ценности. То есть насколько этот конкретный T-shaped ценен для команды и компании. Это и элайнится с зарплатой в итоге.

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

Сторипоинты. Системы премирования, мотивационные схемы. Перерасход людей

Алексей Рыбак: Хорошо, мы поговорили про эстимейты. И кто-то использует эстимейты, кто-то не использует, кто-то использует сторипоинты, кто-то не использует. Вопрос был: расскажите про детали использования сторипоинтов. Кто-нибудь может рассказать, что из себя они представляют? Как вы с ними работаете? Как происходит оценка через сторипоинты? Я так понимаю, что Никита делал.

Никита Прудников: У нас нет сторипоинтов. У нас пулятся карточки одинакового размера.

Алексей Рыбак: То есть мы примерно посчитали, что это недельная задача или на несколько дней задача, и мы просто оценили, что в неделю таких карточек команда может взять не больше пяти.

Никита Прудников: Это уже команда внутри делает. Скрам-мастер изобретает любой удобный ему процесс с командой, как ему удобнее ставить себе совместно с PO на следующую каденцию. Но обычно они ориентируются: Мы прикинули, вот сколько карточек. Обычно мы столько делаем.

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

Алексей Рыбак: Михаил, Сергей, у вас есть сторипоинты?

Сергей Кононенко: Есть, работаем по классике. То есть команда, planning poker, все дела.

Алексей Рыбак: Какие есть варианты сторипоинтов? Сколько: 1 2, 1 5, 1 48?

Сергей Кононенко: Обычно это исправленное Фибоначчи, то есть: 1, 2, 3, 5, 8, 10, 20.

Алексей Рыбак: Мы когда-то давным-давно, более десяти лет назад, когда пробовали, степени двойки использовали. Короче, что-то тоже похожее.

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

Алексей Рыбак: Понял. Что у вас, Михаил? Сторипоинты есть?

Михаил Юматов: Нет, у нас сторипоинтов нет, у нас часы обычные.

Алексей Рыбак: Окей, вопрос от Коли Крапивного. Что происходит, если при текущих приоритетах бизнеса какая-то команда оказывается перегружена, какая-то недогружена? Есть ли процесс ребалансировки? Если есть, то как часто за последний год менялись составы команд в связи с изменением нагрузки?

Сергей Кононенко: Мне, наверное, проще всего ответить. Никакой ребалансировки нет, потому что каждая команда отдельная структура, которая живет в своих реалиях.

Алексей Рыбак: Вопрос, мне кажется, задан больше в предположении, что какая-то есть в компании смесь между какая-то именно матрица, когда есть какая-то большая функциональная часть, у нее есть какие-то подчасти. Как-то побили, а потом оказалось, что побили неверно, потому что что-то куда-то навалилось. Если, с другой стороны, стримы продуктовые разбили изначально и достаточно жестко поделили, то кажется, что и такой ребалансировки быть не должно.

Алексей Рыбак: Следующий вопрос. Евгений Волк спрашивает. Как работают мотивационные схемы, система премирования, распределение премий между командами, внутри команд? Попробую по-другому задать вопрос. Тут получается так. Есть ли премии? Как часто? На команду или внутри команд? Сергей, давай с тебя начнем.

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

Алексей Рыбак: Означает ли это?.. Сейчас, у меня тут уточнение. Что может быть? Может быть такая ситуация, что это распределение произошло почти автоматом, просто по грейдингу. Подходов к этому несколько, я просто пытаюсь понять. Один подход это когда согласно общему перфомансу выделился бюджет, который потом как-то раскидался. Это один подход.

Второй подход такой, что у меня есть мой персональный план в зависимости от того, какой на меня фидбэк или еще что-то и какой у меня грейд, назовем это так. Это какая-то часть. И еще есть какая-то часть командная. Как у вас?

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

Алексей Рыбак: Понял. Михаил, как у вас?

Михаил Юматов: У нас, кроме повышения в рамках роста между грейдами или внутри грейда, нет никаких премий.

Алексей Рыбак: А как у вас в Mindbox, Никита?

Никита Прудников: Профшаринг.

Алексей Рыбак: Не понимаю, разъясни, пожалуйста.

Никита Прудников: Часть прибыли компании распределяется среди команд. Там тоже формула непростая: частично мы учитываем выручку продуктов или иногда рост выручки, если мы понимаем.

Внутри команд обычно рулит стейкхолдер, именно распределением ПШ. В некоторых командах полная демократия, они голосуют и как-то договариваются. В командах, в которых я больше заказчик, я стараюсь выделить себе какую-то часть, которую я сам распределяю, и часть распределяет сама команда. С одной стороны, чтобы учесть усилия, за которыми я не уследил, с другой стороны, у демократии есть плохая специфика, что она размазывает все. Если возник какой-то outstanding performance, в смысле долгосрочной ответственности, то он недостаточно премируется. И на этот случай я себе кусочек отжимаю и напрямую конкретным людям отдаю в своих командах.

Алексей Рыбак: Понятно. Тогда еще один вопрос от меня, важный, который не затронули. Смотрите, а перерасход людей? Это больше вопрос, наверное, Никита, к менее гетерогенным командам, когда много: мобильщики такие, сякие, фронт, бэк. Начинаешь компоновать микрокоманды вокруг продукта, и оказывается, что если ты вокруг каждого продукта, а не семейства продуктов собрал команду, то получается, что обязательно там должны быть тестировщики, обязательно такие роли, сякие.

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

Запускаем новый продукт и говорим: Ладно, мы продуктовая компания, нам нужна микрокоманда вокруг этого продукта. Кто нам для нее нужен? Очевидно, нам нужен тот человек, который будет делать фронт. Если мы делаем при этом какое-то мобильное приложение, значит, нам нужен и iOS, и Android. Нам нужен бэк, обязательно нам нужен QA, QA на все. Одного QA на такое количество людей мало. Ой, bus factor, давай по два. Ой, раз два, давай еще добавим QA. В результате команда разрастается.

Сталкивались ли с подобными вещами при планировании структуры? Как это решали? Наверное, в первую очередь вопрос, Сергей, к вам.

Сергей Кононенко: Мы стараемся нанимать людей широкого спектра. То есть, если QA, хорошо бы, чтобы он умел программировать и писать автотесты, помогал разработчикам. Если разработчик, то а как же он не будет писать автотесты? Если он бэкендер, а давайте он будет еще и на фронте уметь писать. Таким образом мы контролируем безразмерные разрастания команды.

Алексей Рыбак: Но все-таки

Никита Прудников: Я, кстати, соглашусь, у нас похожая история. В смысле, мы стараемся

Алексей Рыбак: Но iOS разработка и бэкенд совсем разные.

Сергей Кононенко: Да-да-да, все правильно, поэтому у нас команды, которые прямо совсем full stack, допустим R-Mobile какой-нибудь, банковское приложение клиентское, там, пожалуйста и Java, и Scala, и Kotlin, и iOS, и базы данных, и DB2 чего там только нет. Но в момент один собирается по одному одному человеку из каждой экспертизы. А до конца года у них цель, чтобы каждый освоил еще две экспертизы.

Алексей Рыбак: Понятно. Михаил, что-нибудь можете добавить?

Михаил Юматов: Я немножко прослушал сам вопрос. Цель собрать команду, подсосать откуда или что?

Алексей Рыбак: Нет. Когда мы делаем новые направления, бывают команды, которые выпускают консюмерные продукты не в каком-то стриме большом, а например, игры делает или какие-то социальные приложения. Делают какие-то небольшие кусочки, эксперименты. И, когда запускается программа, команда, у которой есть мобильная история, веб-история, то у тебя появляется сразу же определенное количество мобильщиков, фронтендеров, QA. И команда сразу становится достаточно большой. Хотя кажется, что для того, чтобы выполнить такой проект, его можно было бы подмешать к какой-то другой команде, более большой, или нужно было бы выделять целую отдельную команду?

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

Да, действительно есть проблемы с тем, что, условно, разработчик iOS, он умеет только iOS. Есть у нас и мы поощряем это ребята, которые развиваются из С# во фронт, с фронта в Python, с Python в C#, и так далее. Но это, наверное, такие кандидаты, которых нужно как раз рассматривать для того, чтобы не раздувать ее.

Алексей Рыбак: Георгий снова тянет руку. Георгий, еще раз вас включу, и, наверное, это будет последний вопрос.

Георгий: Да, у меня есть еще два небольших вопроса. Первое насколько, как у CTO в организациях, ваши возможности ограничены? Что вы можете сделать, что нет? Какие-то есть у вас ограничения или нет?

И второй вопрос про команды. Есть у вас удаленные команды? Вы нанимаете только русскоговорящих или у вас есть иностранцы? Есть ли какие-то ограничения с этой стороны?

Никита Прудников: Кто готов ответить? Давайте я. Ограничение роли CTO. Учитывая специфику организации, в принципе, инициировать я могу любое решение, но оно должно быть мотивировано про пользу. Иначе будут несчастливые люди, процессы вето и дальше эскалация, если захочется через всю цепочку вето пройти до совета директоров или до голосования акционеров, если надо. Так любое решение могу принять, какое необходимо, главное, чтобы оно было мотивировано пользой. И главное уведомить про это решение людей, на которых оно повлияет. Если они окей с ним, то все, принято.

А про удаленные команды у нас сейчас нет. Нет опыта, и нет команд удаленных, вся локация в офисе.

Михаил Юматов: Про ограничения мне довольно сложно ответить. Тут, мне кажется, любое решение это будет, скорее всего, результат какого-то обсуждения, навряд ли я буду какие-то истории единолично принимать, но я не CTO.

Если говорить про удаленку, то мы нанимаем ребят со всей России. И планируем продолжить после локдауна и коронавируса оставаться на удаленке, мы и до этого так были.

Алексей Рыбак: Русскоговорящая?

Михаил Юматов: Да.

Алексей Рыбак: Окей, мультиязычных команд нет. Ещё быстрый вопрос. Ребята, когда последний раз писали код? Из YouTube вопрос.

Никита Прудников: Вчера.

Михаил Юматов: Сегодня. Но я должен оговориться, что это просто какие-то автоматизации своих

Алексей Рыбак: Понятно. Хорошо, ребята вышли уже даже за время, два часа пролетели. Спасибо вам огромное за эту встречу. Постарались ответить на все вопросы.

Еще раз спасибо огромное всем, кто поучаствовал, гостям. Тема нашего митапа была Управление разработкой в горизонтальных компаниях. Сегодня у нас в гостях были Никита Прудников из Mindbox, Михаил Юматов из Циан и Сергей Кононенко из Раффайзенбанка. Спасибо вам большое.


Если у вас остались вопросы, то можете задать их прямо под этим постом.

У нашего сообщества есть Фейсбук-группа Управление и разработка крупных IT-проектов и канал @feedmeto с интересными публикациями из корпоративных (преимущественно забугорных) техноблогов, и канал автора @rybakalexey про управление разработкой в продуктовых компаниях.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru