# Понедельник 46 твитов
Все привет! Меня зовут Денис Боровиков. Сейчас живу в Берлине, разрабатываю поиск в Zalando.
12:13Zalando - это крупнейший онлайн-магазин одежды в Европе, всего работает около 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Я бы вопрос иначе поставил: что делать разработчику, если он не хочет расти в руководителя?
Расти в архитекторы / консультанты. 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:48There are two types of programmers in the world; those who put commas at the end of key/value pairs:19:11foo: “bar”,
and there are idiots.
# Суббота 11 твитов
Сегодня выходной, а это значит, что хакерам не нужно писать код
13:51Хотел бы обсудить тему full stack разработки
13:52Мне кажется что найм full stack разработки может быть только ограниченным.
13:55Full 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 @mr_mig_by второй уровень по dev.by/pages/programm…15:52
@kmmbvnr @backendsecret либо 1.4 по этой шкале: michaelochurch.wordpress.com/2013/04/22/ger…15:52
@backendsecret вот ещё хорошая практика:15:52
@strizhechenko @backendsecret чувааак, все менеджеры "имеют идею” как это сделать, но не умеют ни малейшего понятия как “сесть и сделать"16:28
Время прощаться. Всем спасибо за внимание, было круто! С вами был @borovikov До новых встреч!
18:31# Ссылки
other
- http://www.slideshare.net/ZalandoTech/radical-agility-with-autonomous-teams-and-microservices-in-the-cloud
- https://github.com/blog/530-how-we-made-github-fast
- http://doc.akka.io/docs/akka-stream-and-http-experimental/current/scala/stream-graphs.html
- http://megamozg.ru/post/2022/
- https://dev.by/pages/programming_matrix
- https://michaelochurch.wordpress.com/2013/04/22/gervais-macleod-23-the-shodan-programmer/