borovikov

26 октября 2015, Berlin, Germany

# Понедельник 46 твитов

Все привет! Меня зовут Денис Боровиков. Сейчас живу в Берлине, разрабатываю поиск в Zalando.

12:13

Zalando - это крупнейший онлайн-магазин одежды в Европе, всего работает около 1000 разработчиков.

12:14

Из технологий используется практически всё :) В том числе и BigData, программирование GPU и так далее.

12:14

До этого довелось работать в разных компания, из заметных это hh.ru и Deutsche Bank.

12:15

На этой неделе хотелось бы ещё разок пройтись по наболевшим темам :)

12:16
@backendsecret говорят отношение к работникам в заландо потребительское. это правда ?
12:17

Начну про то, как устроена разработка в Zalando, так как это весьма необычно.

12:18

Так вот организация построена на внедрении демократических принципов

12:19

У команд полная автономия и большинство решений принимаются голосованием внутри.

12:19

Команда решила писать на Erlang? Так тому и быть!

12:20
@backendsecret какие темы у вас наболели ?

Да все тоже, про красивый код, жёсткие сроки, взаимоотношения в коллективе и так далее twitter.com/ipronix/status…

12:25
@backendsecret что можно писать таким безумным числом разработчиков на одном e-commerce проекте? о_0

Они точно все именно инженеры?..

Система большая и высоконагруженная. И масштабная. Много стран, много складов. Этой целый мир twitter.com/mkn8rd/status/…

12:27

Но права даются с ответственностью - команда самостоятельно отвечает за тестирование и деплой.

12:28
@backendsecret GPU -- это интересно. Для чего используете?

Нейронные сети twitter.com/scaint/status/…

12:29
@backendsecret я всё-таки подозреваю что 1000 человек имелось в виду сотрудников всего, а не разработчиков.

Сотрудников всего 9000 twitter.com/mkn8rd/status/…

12:31
@mkn8rd @backendsecret Заландо это круче Яндекса ;) Самая быстрорастущая компания в Европе за все времена.
12:39

Каждой команде дается отдельный AWS аккаунт, дальше все в твоих руках :)

12:39

Хочешь Lisp? Отлично, но успевать за сроками, деплоить и саппортить тебе, так что решай сам.

12:40
@backendsecret да, но 1000 человек? Это почти яндекс какой-то. И потом, вы что, под каждую страну и каждый склад отдельно всё пишете с нуля?

Не с нуля, но есть кастомизации twitter.com/mkn8rd/status/…

12:46
@freiksenet_ru @backendsecret @mkn8rd это догадки и практика ? в теории и я знаю, а вот как на самом деле делают интересно.

Если тема интересна, советую искать инфу по deep learning twitter.com/ipronix/status…

12:56

Другая особенность это то, что у тебя 2 босса. Один это обычный босс, второго ты выбираешь себе сам

12:58

Что-то вроде народных депутатов :) Подход называется Radical Agility.

12:59
@backendsecret, это очень интересно! Есть статья или что-нибудь подробное про это?

slideshare.net/ZalandoTech/ra… twitter.com/ilnurkhalilov/…

14:02
@backendsecret а с такой анархией кто отвечает за аудит безопасности ?

На самом деле не анархия. Есть правила, например мы можем использовать только собственный дистриб линукса - tuapage twitter.com/ipronix/status…

14:09
@backendsecret а в реальности есть у вас Lisp-команды?

Есть clojure команды. А ещё scala, go, erlang и много ещё чего twitter.com/petrmyazin/sta…

14:10

Ну да бог с этим манагерством, поговорим про технологии :)

14:35

Другая интересная штука у нас - это деплой

14:35

Для деплоя используется опен-сорсный тул - stups.io, разработанный у нас.

14:35

Его изюминка - immutable стеки. Ansible/Salt - вчерашний день :) Собираешь Docker образ, и специльной тулзой раскатываешь.

14:36

Тулза создает новый стек. Тестируешь, если все ок, то трафик (или часть) льешь на новый стек. Старый потом убивается.

14:37
@backendsecret Ты так и не рассказал зачем два манагера)

Второй босс ответственен за твоё развитие и удовлетворенность twitter.com/freiksenet_ru/…

14:38
@backendsecret на какие из github проектов Заландо стоит глянуть?

stups (и все что с ним связано, например spilo), zmon, play-swagger twitter.com/strobegen/stat…

15:56

Продолжая тему деполя. Основной формат деплоя - Docker. Что бы обеспечить иммутабельность деплоя пришлось сделать свою докер-репу.

17:23

Отличие кастомной репы в том, что запрещены SNAPSHOT-теги. Соответственно новый деплой это всегда новый тег в докере

17:25

Так же имеется репозиторий проектов (Kio). Через него аппрувятся релизнутые образы. Без аппрува Docker-образ просто не раскатается по проду

17:28

И естественно последнее время мой основной подход к построению систем - это микросервисы

18:36

При миграции на микросервисы самая типовая проблема - это дезинтеграция данных.

18:38

Раньше ты мог сджойнить 2 таблицы в бд, а теперь они под управлением разных сервисов. Что же делать, %username%?

18:39
@backendsecret shared database это антипаттерн же

Не-не, никаких shared database, это зло. Но данные поджойнить как-то надо twitter.com/raxpost/status…

19:44
@backendsecret а старые образы как-то удаляются?

Нет, но они какой-то терпимый объём занимают. Точную цифру не подскажу. twitter.com/ikkeps/status/…

19:47
@backendsecret выглядит как complexity increasing, может просто архитектура или схема БД не по тому пути пошла?

Микросервисы вообщем-то и есть усложнение приложения на макроуровне и упрощение на микроуровне. И ни разу не панацея twitter.com/raxpost/status…

19:54
@backendsecret к слову о микро и прочих сервисах. Что лучше использовать для управления (запуск, рестарт и т.д.), мониторинга?

Stups не плох :) Ещё mesosphere стоит посмотреть. twitter.com/ichesnokov/sta…

20:40
@backendsecret а как же изменение модели данных и миграции?
22:05
@backendsecret GraphQL обертка вокруг всех сервисов!
22:08
@backendsecret CQRS поверх всей этой децентрализации. И надеешься, что eventual consistency обойдешься :)

Winner! twitter.com/mr_mig_by/stat…

22:22
Как-то я сегодня еще не троллил @jsunderhood и @backendsecret. Не порядок! Надо исправлять! План не выполнен!
22:32

# Вторник 22 твита

Так, продолжаем мусолить микросервисы :) Сейчас это не делает только ленивый, но все же.

11:54

Часто спрашивают, а какой язык хороший / плохой для современного бекенда. Так вот с микросервисами выбор свободней

11:55

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

11:56
@backendsecret а не получится зоопарк, который сложно станет поддерживать?

Деплой и мониторинг конечно должен быть общим. А там уже какая разница что внутри Docker образа запускается twitter.com/dcromster/stat…

12:02
@backendsecret а если нет деления на команды? Одна большая, но микросервисы.

Сама по себе такая ситуация - плохая. Это уже какой-то распределённый монолит twitter.com/dcromster/stat…

12:04
@backendsecret хорошо, а если команда развалилась, а там всё написано на брейнфаке? :) (200% утрированно, но, надеюсь, мысль понятна)

Основа основ - доверие. Ну какая вероятность, что целая команда полные неадекваты? twitter.com/dcromster/stat…

12:16
@dcromster @backendsecret А если команда развалилась и там просто все херово написано? Не переоценивай важность языка.

Точно! Как раз чаще такое и бывает - заставили писать всех на одной унылой технологии, нашли только унылых людей twitter.com/freiksenet_ru/…

13:01

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

13:30
@backendsecret какая ересь. все хотят власти и денег.

Вы сами себя загнали в такое место, что белого света не видите twitter.com/ipronix/status…

13:44
@backendsecret @dcromster так заландо хипстеров понабрало пропагандируя демократию и равноправие ? или таки они за деньги работают ?

Вам так хипстеры в заландо покоя не дают, что сразу видно какой вы счастливый со своими деньгами :) twitter.com/ipronix/status…

13:56
@ipronix @backendsecret я сам за новые технологии, мне интересно с точки зрения управленя, не все могут себе позволить такую свободу

Не всем нужно. Если компания не ИТ, то им хватит и обычных писак за деньги twitter.com/raxpost/status…

14:00
@backendsecret а вы наивно на них пашете за идею. ну удачи. да еще вчера расписывали как все красиво пока во внутренности не заглянуть.

Вам в гадалки надо :) По одному файлу судите. Ну-да, ну-да, вокруг же заговор и все плохие )) twitter.com/ipronix/status…

14:02
@ipronix @backendsecret деньги и власть — это ресурсы. Личная и профессиональная свобода — цели в индивидуальном образовательном проекте.
14:23
@ipronix @podmostom @backendsecret цель любого объекта в этом мире получить максимум, затратив минимум.

Интересно как тогда работают венчурные инвестиции? Людям дают денег не получив изначально в замен ничего. twitter.com/de_gis/status/…

15:31

Продолжая измышлизмы: а какой прок работодателю от свободы программиста, скажет %username%. И выдаст в себе советикуса обыкновенного :)

15:56

Монетизация свободы. Win-win, как говорят консультанты.

15:59
@backendsecret повышение производительности? :)

Да! Когда-то и отмена рабства казалась не выгодной, как так платить ЗП, это же не выгодно! twitter.com/dcromster/stat…

16:22
@backendsecret интересно, а как у вас обучают новых коллег местным тулам - stups и тп ?

Есть один месяц онбординга, там в том числе учишься stups. twitter.com/strobegen/stat…

18:57
@backendsecret а можешь привести пример задачи и как бы ты её разбил на микро сервисы?

На вскидку у нас много такого: нужно сделать какую-нибудь ML задачу. twitter.com/timrael/status…

19:27
@Fedor_Sukhov @backendsecret на начальных этапах смысла ноль, особенно если компания маленькая. Надо просто писать хороший монолит.
22:52
@Fedor_Sukhov @backendsecret и то не обязательно. Не забываем, что наш любимый github.com это как раз таки здоровенный монолит.

Не совсем, у них жирный core проект + микросервисы: github.com/blog/530-how-w… twitter.com/Fodoj/status/6…

22:55

# Среда 18 твитов

Кто-нибудь может с ходу ответить, что такое volatile в других языках?

В Java для volatile гарантируется, что запис. значение видимо другим потокам и happens-before последующим чтениям twitter.com/rubyunderhood/…

0:05

Так, повышаем градус холивара :) Сегодня поговорим про выбор технологий

13:54

Лично я выбираю comprehensive решения. IDE - IDEA, язык - Scala. Сейчас объясню почему

13:57

Я считаю выгодным изучать технологии, которые сложно учить, но потом получаешь профит

13:58

Да, забыл, любимые ОС - Linux и Mac OS X

13:58

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

14:02

Что можно не съев пуд соли делать тоже, что и старшие коллеги

14:03

Сейчас меня совершенно не пугают толстые мануалы и сухие спецификации.

14:03

Да, тут надо оговориться, что технология должна быть сложной не из-за костылей, а из-за фич.

14:08
@backendsecret легкий троллинг тогда - почему не emacs вместо IDEA? сложно освоить но зато потом IDE для Scala и всего в любом терминале

Как раз посматриваю на emacs последнее время :) Да, это мой подход twitter.com/strobegen/stat…

14:16
@backendsecret какой профит от Scala? Реально ли нам надо в проектах таргетить этот ваш JVM?

Scala хороша для описания сложных процессов, пример: doc.akka.io/docs/akka-stre… twitter.com/podmostom/stat…

15:25

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

15:33
@backendsecret Одерский супер-спец, но никто же спорить не будет с тем, что Scala — по факту — не получилась с точки зрения pl design.

После Scala будет Dotty, и это очень хорошо. Язык столкнулся с реальностью и развился во что-то новое. twitter.com/podmostom/stat…

15:43
@backendsecret Одерский супер-спец, но никто же спорить не будет с тем, что Scala — по факту — не получилась с точки зрения pl design.
16:14

В общем Scala это такой Haskell, который раз, и в прод!

16:17
Чисто технически - да. Однако реальность в том, что по Scala очень мало позиций на рынке. И программистов тоже мало twitter.com/backendsecret/…

В Берлине хватает :) twitter.com/fcoder/status/…

18:16
@mr_mig_by @backendsecret если CQRS это то, что написано в википедии, то я не понимаю как именно оно поможет сджоинить 2 таблицы

Слушаешь евенты, локально собираешь какой нужно тебе query store и джойнишь twitter.com/89__bo/status/…

21:03
@rubyunderhood @backendsecret @89__bo @mr_mig_by КГБ отправляет мне ивенты через телефонную розетку
22:36

# Четверг 23 твита

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

14:12

Тут у меня нет какого-то определённо мнения, ибо сам пытаюсь разобраться

14:13

Так вот, в Москве ВО разработчика рассматривалось как что-то опциональное. Хорошо если оно есть и хорошо если вуз именитый

14:16

Но вот в Берлине многие коллеги, и особенно начальство имеют не только ВО, но и PhD

14:17

У меня ВО есть, но PhD нет, из-за этого я немного комплексую

14:18

Интересно было бы послушать мнение тех, кто уже долго работает в Европе на этот счёт, насколько здесь PhD критично в перспективе

14:20
@backendsecret сталкивался с таким же в Мюнхене. Нет CS-магистра - извините...

Да, без хотя бы магистра видимо совсем туго в Берлине, согласен twitter.com/de_gis/status/…

14:24
@backendsecret точнее требовался или инженер,или магистр,т.к.у немцев,как и у нас,на бакалавров часто смотрят косо - зародыши специалистов
14:28
@backendsecret может и самообразование тоже обсудим?

А давайте. Я считаю, что в идеале самообразование должно быть совмещено с работой twitter.com/alexdanilov/st…

16:00

Например у нас изучение чего либо на работе считается рабочим временем

16:02

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

16:02

Работодатель заинтересован в развитии людей. Опять же win-win ситуация

16:03
@backendsecret не совсем так, работодатель заинтересован если развитие удовлетворяет потребности бизнеса, а не в другую сторону

А это уже косяк работодателя. Иметь людей, которые сильнее среднего и не найти чем их занять это просто epic fail twitter.com/daryachu/statu…

16:53

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

16:55

Есть очень здоровский совет. Не работайте с мудаками. Компания должна стремится к win-win, а не win-fail ситуации.

16:56

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

16:59
@backendsecret Можешь сказать признаки хорошей компании и признаки кошмарной?

Супер рецепта у меня нет. Я задаю обычно наводящие вопросы про то, что смогу ли я что-то внедрить или улучшить. twitter.com/yelbota/status…

17:22
/@Shiroginne в чём смысл направлять абсолютно все усилия на то, чтоб ЛИШЬ БЫ СХАНТИЛИ?

Точно. Причём схантили во что-то наибанальнишнее twitter.com/rubyunderhood/…

22:41
@backendsecret долгосрочной перспективы может и не быть, если бабло быстро не поднимать :)

Вот кстати всякие стартапы это отдельная тема, там долгосрочной перспективы нет twitter.com/chudesnov/stat…

23:22

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

23:23
@de_gis @backendsecret в чем проблема, если сколько то дней в месяц все сотрудники — r&d?

У нас именно так, 20% времени все могут быть R&D. Правда желающих не много :) Нужно все-таки активней людей учить twitter.com/siliconbangalo…

23:39
@backendsecret опцион И должность. А у опциона еще вестинг и клифф. А еще налоги…
Вывод делаем сами.
23:39
@backendsecret вам Frontend Architect не нужен? :)

Фронтендеры вообще нужны :) twitter.com/mr_mig_by/stat…

23:51

# Пятница 9 твитов

@backendsecret вообще фронтендеры всем нужны. А набирают жквери-погроммистов.
А мне потом расхлебывай…
0:10
@backendsecret от и я об этом - мир сильно разнообразный
0:14
@backendsecret или технологии?

Сомнительно. Нужно все будет делать на коленке, с технологиями разве что поверхностно познакомитесь. twitter.com/ctrlok/status/…

10:07
@backendsecret или за релокейт

Тоже можно! twitter.com/iambernik/stat…

10:08
Я бы вопрос иначе поставил: что делать разработчику, если он не хочет расти в руководителя?

Расти в архитекторы / консультанты. twitter.com/rubyunderhood/…

11:34
@backendsecret @anton_davydov @dcromster @rubyunderhood я не замечаю экспансии ноды на бэке. фронт на сервере—да, бэка мало. но это ощущения
13:45
@backendsecret а как устроен хайринг в Zalando - он централизован или каждая команда ищет отдельно?

Централизованный twitter.com/strobegen/stat…

13:46
@backendsecret может ли быть так что человек не попал в одну команду но приглянулся другой?

Может. Некоторых берут вообще не в определенную команду, они потом сами ищут её себе twitter.com/strobegen/stat…

13:48
There are two types of programmers in the world; those who put commas at the end of key/value pairs:

foo: “bar”,

and there are idiots.

19:11

# Суббота 11 твитов

Сегодня выходной, а это значит, что хакерам не нужно писать код

13:51

Хотел бы обсудить тему full stack разработки

13:52

Мне кажется что найм full stack разработки может быть только ограниченным.

13:55

Full stack звучит очень заманчиво, но проблема в том, это очень редко когда человеку по-настоящему интересно и то и то

13:56

Обычно у фронта и бека совсем разное мышление. Фронту интересно получать осязаемый результат. Бек больше тяготеет к решению головоломок.

13:59

Из того что я видел, full stack в масштабах компании идёт хорошо когда либо бек простой, либо фронт простой, или вообще проекты простые

14:08

В случае простого фронта бекендеры просто на коленке делают фронт и так далее.

14:09
@backendsecret а ещё можно full stack + backend. Это позволяет снять с бекендера простые задачи и сосредоточиться на сложных.
15:28
@backendsecret команда разработчиков должна быть full-stack , а не команда full-stack разработчиков
15:29
@MaximSukharev @backendsecret но зачем, когда можно взять одного фуллстека + 3 проектных менеджера + продакт менеджера + процесс-менеджера!

И каждому по директору! twitter.com/ohtheanguish/s…

15:33

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

15:42

# Воскресенье 23 твита

@backendsecret поддержу негатив. Из моего опыта вывод в цитате: "бабе - цветы, дитЯм - мороженое"
4:40

Всем привет. Сегодня расскажу про оценку сроков, так как это у меня не плохо получается

14:55

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

14:56

Приоритет = Полезность / Срок, получаеться менеджменту что бы решить что мы делаем в первую очередь необходима оценка сроков

14:58

Как сроки оценивать НЕ надо: оценивать не должен тот, кто ставит задачу.

14:59

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

15:01

Поэтому второе НЕ: не надо оценивать саму постановку задачи, это пальцем в небо

15:03

Нужно предложить один, а ещё несколько способов решения, и дать оценки для них.

15:04

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

15:05

Есть тонкий момент, если на ходу продумать решение задачи не получается и как решать не ясно, по сути срок сказать нельзя

15:06

Ни в коем случае нельзя фантазировать на счёт оценки сроков. Если не знаешь - возьми время на ресеч, и оценивай это время.

15:10

Как только понимание сроков меняется, лучше немедленно сообщить менеджменту и вместе решить что делать дальше. Замалчивать нельзя.

15:11

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

15:14

Сроки оценивать можно и нужно!

15:15
@backendsecret когда у нас будут летающие машины?

Беру время на ресеч. Нужен магистр + phd + стажировка + 5 лет на ресеч. Где-то через 17 лет смогу ответить когда :) twitter.com/ohtheanguish/s…

15:24
@backendsecret в этот момент ты понимаешь, кто тут еще не “сениор”

Бинго! Кстати признаки сеньорности тоже прикольный топик twitter.com/mr_mig_by/stat…

15:24
@backendsecret реквестирую топик ради разведения срача!

Ок, ну и кто же такой синьор девелопер? :) twitter.com/mr_mig_by/stat…

15:30
@backendsecret @mr_mig_by Это относительное понятие. В одной компании чувак сеньор, в более серьезной — джун

Это конечно так. Но хотелось бы поговорить про идеальное понятие зрелого разработчика twitter.com/semenov/status…

15:41
@backendsecret вот ещё хорошая практика:
15:52
@strizhechenko @backendsecret чувааак, все менеджеры "имеют идею” как это сделать, но не умеют ни малейшего понятия как “сесть и сделать"
16:28

Время прощаться. Всем спасибо за внимание, было круто! С вами был @borovikov До новых встреч!

18:31

other