borovikov

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

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

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

9:13

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

9:14

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

9:14

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

9:15

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

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

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

9:18

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

9:19

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

9:19

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

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

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

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

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

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

9:27

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

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

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

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

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

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

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

9:39

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

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

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

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

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

9:56

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

9:58

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

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

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

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

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

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

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

11:10

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

11:35

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

11:35

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

11:35

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

11:36

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

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

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

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

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

12:56

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

14:23

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

14:25

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

14:28

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

15:36

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

15:38

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

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

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

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

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

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

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

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

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

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

Winner! twitter.com/mr_mig_by/stat…

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

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

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

8:54

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

8:55

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

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

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

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

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

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

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

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

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

10:01

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

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

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

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

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

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

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

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

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

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

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

12:31

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

12:56

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

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

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

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

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

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

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

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

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

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

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

21:05

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

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

10:54

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

10:57

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

10:58

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

10:58

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

11:02

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

11:03

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

11:03

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

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

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

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

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

12:25

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

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

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

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

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

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

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

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

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

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

# Четверг 25 твитов

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

11:12

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

11:13

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

11:16

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

11:17

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

11:18

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

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

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

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

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

13:00

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

13:02

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

13:02

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

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

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

13:53

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

13:55

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

13:56

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

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

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

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

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

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

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

20:22

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

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

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

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

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

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

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

@backendsecret или технологии?

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

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

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

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

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

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

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

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

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

10: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.

16:11

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

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

10:51

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

10:52

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

10:55

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

10:56

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

10:59

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

11:08

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

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

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

12:33

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

12:42

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

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

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

11:55

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

11:56

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

11:58

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

11:59

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

12:01

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

12:03

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

12:04

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

12:05

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

12:06

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

12:10

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

12:11

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

12:14

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

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

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

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

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

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

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

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

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

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

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

15:31

other