Дмитpий Hecтepук

Блог о программировании — C#, F#, C++, архитектура, и многое другое

Как я выбрался из порочного круга

17 комментариев

Поскольку мы постепенно двигаемся к развязке всей этой истории, я решил посветить эту часть моего повествования моей работе в JetBrains (месте где я провел 5½ лет). JetBrains, для тех кто почему-то не знает, это компания, которую подняли три разработчика из России. Компания занимается производством инструментария для разработки, в т.ч. IDE, тулы командной работы, и даже собственный язык программирования!

Тут будет рассказ про то как я там работал и как я оттуда ушел и что я вообще обо всем этом думаю.

Для начала следует пояснить, что попал я туда очень… странно. Вся история достаточно странная и не очень укладывается. Дело было так: сидел я 2½ года дома и искал работу, но ничего не получалось. И вот, пошел я как-то в одно агенство искать работу — кстати, в то агенство которое мне нашло, собственно, мою первую в РФ работу (так что посыл уже нехороший). Сунулся к ним, они предложили сходить отсобеседоваться в некую достаточно стремную немецкую контору, ооочень сильно смахивующую на тот процессконтрол, который я попал несколькими годами ранее.

Это отдельная история, причем забавная. Контора куда меня послали находилась в заводе ЛОМО (Ленинградское Опто-Механическое Объединение), большом страшном здании которое, как и всю бывшую в СССР индустрию, распилили и раздали арендаторам. Само местоположения работы делало все это невозможным, т.к. ездить каждый день в Старую Деревню не имея машины (а ЗСД вроде бы в том направлении еще не было) мне не представлялось возможным, но, я решил сходить чисто из спортивного интереса интереса.

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

Сама контора, филиал немецкой продуктовой фирмы, которая делала машины для подсчета денег. Единственное что думалось мне в тот момент: я хотел бы иметь машину чтобы считать свои горы денег. Всё. Но вот, начинается собеседование, мне задают вопросы, простые очевидные вопросы вроде «что такое .NET», а мой мозг просто берет и посылает меня нафиг. Полностью. Я не могу ответить ни на что. Такое впечатление, что на совокупность стрессоров, мое сознание просто ответило: нет, дружок, не сегодня, иди отдхони пожалуй.

Это был позор. Я думаю что те люди кто меня собеседовал тоже прифигели: человек вроде MVP, постит дофига интересного, подкаст, юзергруппа, и тут… но поделом, хорого что мне туда не светило, там были те же CMMI и прочие дурные запахи плохого кодинга и низких зарплат.

Связавшись снова с КА, а честно сказал им что «не судьба» и попросил их найти что-нибудь еще. Они сказали что да, вот тут есть контора, JetBrains называется, мы твое резюме зашлем. И пропали — я от них больше ничего никогда не услышал. Зато появился сам JetBrains.

Когда я пришел на собеседование в JB, в руках у кадровички (как-то невежливо звучит… от сотрудника отдела кадров компании, вот, сорян) было вовсе не то резюме которое должно было послать КА, а другое, которое я посылал сам в JB двумя годами ранее и которое было просто проигнорировано. Что это было? Думаю вы догадываетесь: КА послало мое фактическое резюме в контору, получило это свое «нам не интересно», а мня все-таки позвали т.к. все контакты были на моем CV которое уже было там. Этично ли такое поведение со стороны нанимателя? Это вам решать, но премия ускользнула из рук КА в этом случае, это точно.

Как я уже говорил, JB дал мне минимально возможную для сотрудника зарплату, но на самом деле нет. На самом деле я, как человек, который любит ломать комедию и даже в критическом положении понимал что нужно свой кусочек хлеба отгрызть, честно сказал: ребята, все супер, только я это, резидент Англии, а у вас офис в Чехии, давайте это, как-то, контрактинг и все такое. JB согласился. А когда такая пьянка пошла, мне пришло письмо, в котором меня попросили посчитать, сколько же нужно мне платить чтобы gross чтобы net был такой, как мне обещали. И вот тут стало совсем весело… думаю вы все уже догадались что я сделал.

Теперь, пожалуй, самое важное, для тех кто хочет там работать: JB обалденный работодатель и я глубоко им благодарен. Без них, я бы не сделал первый шаг на пути в нормальным деньгам и нормальной жизни. Интересные задачи, нормальные коллеги, отсутствие процессов и драмы на работе, бесплатная еда, спортзал, полеты бизнес-классом над Атлантикой — все это было прекрасно. Точнее было бы прекрасно если бы мне было лет 20 и у меня не было ребенка и более четкого понимания что все это золотая клетка и что активный доход — это вообще адъ. Но если вам 20 с хвостиком, JB — почти идеальное место работы. Я сам привел в компанию 2 человека и вижу, что их прет от работы там… и это хорошо!

При этом, нельзя сказать, что JB это тотальный идеал. Действительно, в большинстве продуктовых команд хорошо и можно много творить. Деньги вы можете посмотреть на Glassdoor, они, как бы сказать, даже по индустрии середнячок, и я не думаю что кто-то из девелоперов делает там «соточку» (а для меня это критерий, увы). Спектр задач узко специализирует вас в область алгоритмов что, с одной стороны, хорошо, с другой ограничивает вас в плане применения, например, real-life фреймворков. Мне в то время было с высокой башни и на то, и на то, и как я уже говорил, все мысли были о том как все это переиграть в свою пользу. Инфраструктура у JB была откровенно так себе — как я уже писал, я работал на достаточно плохом железе, на серверах где работали всякие CI системы тоже все «не подарок». Офисные реалии до переезда были так себе, читайте мой эпос про рестораны в предыдущих частях повествования.

Чтобы понять, как отжать себе маленький кусочек рая, я задал простой вопрос: если в JB так офигенно, то куда же уходят люди? Оказалось, что программисты если оттуда и уходят, то идут в именитые конторы вроде Microsoft или Google. Депрессирует ли это меня? Да, пожалуй. Во-первых, потому, что хоть зарплаты в этих местах и в разы больше, чем в JetBrains (это не должно удивлять), но корпоративная культура в этих энтерпрайзах… это что-то с чем-то. Microsoft, когда я ходил к ним в гости по работе — это просто бизнес, ребята в костюмах, разные отделы которые друг друга ненавидят, куча внутренней конкуренции и, самое главное, эта ситуация «лебедь, рак и щука» когда компания даже имея классные продукты (Нокия итд.) умудряется продалбывать целые сегменты рынка. Ну или Синофский который пытался убить дотнет… все эти истории плохо пахнут. Да, посмотрите на сегодняшний день, что у компании с ее главной ОСью? Да ничего. Все так же уныло и безыдейно, а в приоритетах уже только Azure.

Про другие конторы вроде Гугла (чего стоит внутреннее видео где сотрудники плачут после выборов бога-императора Трампа) у меня примерно такое же мнение: как только ты видишь в лексиконе компании такие слова как diversity, читать уже не стоит, т.к. белых гетеромужчин там очевидно угнетают (гребаные расисты-гетеросексисты!). А гугол как раз отличился 50-ю оттенками толерастии, так что я бы туда не пошел чисто по политическим соображениям. Примечательно что технический директор JetBrains ушел программистом именно в гугл… программистом, а не менеджером или руководителем продукта! Он потом вернулся, но… этот факт многое говорит о положении JB в табели о рангах ИТ индустрии. Покажите мне еще компанию, где техдир уходит на позицию кодера!

Короче, посмотрев на это, я все понял: какого-то прогресса ребята, уходящие из JB, не нашли, это не «качественный скачок» а просто развитие карьеры, где ты уезжаешь в долину на «сытные» для обычного айтишника 200к в год (налоги и конские траты можете посчитать самостоятельно). Только один человек из тех что я знаю стал исключением, и про него мы вскользь поговорим, но не сегодня. Сегодня у нас обсуждение того куда уходят люди из JB.

Нужно понимать, что я, работая в JB, не работал в JB. У меня даже в контракте было написано «не сотрудник», поэтому я не имел некоторых плюшек вроде медстраховки (до сих пор нет, сорян), но, с другой стороны, я имел плюшку в том, что будучи приписан к Пражскому офису, я был лишен всей бюрократии связанной с РФ. И это было хорошо, т.к. в Европе бизнес делается намного проще: все очень неформально и «был ли мальчик», этого тоже никто не узнает.

Команда евангелизма внутри JB — это вообще как отдельная компания. Там только иностранцы (в РФ мало у кого есть свободный инглиш, а тем у кого есть — мой респект и уважуха, вы крутые!), поэтому у нас в основном были люди из США, Британии и стран Европы где с английским лучше чем в Окоянной. Нельзя сказать что у них у всех идеальный английский, но но достаточно хорош чтобы рассказывать и делать видосики, писать статьи и все в этом духе. Как люди они… вменяемые. Серьезно, команда евангелизма это команда абсолютно адекватных людей, с похожими на мои взгляды на жизнь. Так же как и основной (программистский) состав JB, в евангелизме не любят буллшит и непрофессионализм, и все люди стараются чтобы «было хорошо».

В целом, все евангелисты были старше меня. И я, опять же, задал себе вопрос: вот эти ребята иногда уходят (текучка в евангелизме намного больше чем в основном JB, сюрприз!), а куда они уходят-то? Ведь явно куда-то где лучше, где больше бабла, они же не настолько наивны чтобы менять работу «идейно», у них дома, машины, семьи, яхты и вся эта кухня, за все это надо платить. И вот тут я кажется выиграл свой первый джэкпот.

Одного из наших евангелистов звали John Lindquist. Был он у нас недолго, а ушел потому, что сделал немало приносящий проект egghead.io — сайт с видосиками по разным веб технологиям вроде Node.js. Вся эта тема с курсами меня заинтриговала: я конечно не верил что там какие-то золотые горы, но знал что есть по крайней мере одна контора, Pluralsight, которая платит авторам чтобы они что-то там для нее писали.

Все мои попытки «питчить» курсы в Pluralsight были неуспешны: мне просто не отвечали. А потом я заметил что еще у одного автора, James Kovacs, который тоже какое-то время работал в JB (а потом ушел и вообще исчез куда-то), есть там какие-то курсы, и я просто попросил его пробросить контакт. И вот тут мне уже ответили, я предложил курс (по MATLAB), мне его зааппрувили и… предложили $4k за производство курса!

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

Я написал несколько курсов, но один из курсов чего-то не задался: писал я его долго, Pluralsight были в раздумье то ли я им сделал что они хотели, достаточно ли он отличается от того что у них уже есть. И так далее. Но потом курс все-таки выпустили и он начал приносить, эмм, около $4k пассива!!!

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

На тот момент, работать евангелистом, при моем отвращении к поездкам и социуму, уже было как-то совсем глупо: деньги от этого евангелизирования не делали никакой погоды вообще (дошло даже до того, что я забыл подать инвойс на несколько тысяч и спохватился только несколькими месяцами спустя… мне было пофиг), меня это все только отвлекало. Я продложил писать курсы для Pluralsight и одновременно попробовал написать что-то для другой площадки, Udemy. И что вы думаете: за один год работы (один suka год!!!) мой график выглядел вот так:

$20k пассива… вы только вдумайтесь, у нас пиковая зарплата разработчика это $5k (и эта сумма не растет уже лет 10!), больше этого платят мало кому, вакансий таких практически нет, и даже если ты и получишь больше, тебе нужно за эти деньги работать… Вообщем, если сложить это и то что я делал на Pluralsight, ну, по идее все это повествование можно закрывать, т.к. на такие деньги уже можно как-то худо-бедно жить, кушать в ресторанах (ну, не всегда с мишленовскими звездами), и заниматься персональными проектами. Можно даже купить себе что-нибудь, например… первую в жизни машину!

Весь мой эпос по идее должен закончиться на этой ноте как на «грани возможного», и так бы и было, не познакомься я в JB, будучи еще там, с одним разработчиком который, уволившись оттуда, не пошел работать по найму, а решил делать свой собственный стартап. Но это — тема для другого разговора. А сейчас, я лишь скажу что я не жалею что провел более 5 лет в JetBrains. Если у вас есть шанс идти туда работать — идите, т.к. по РФ в плане кодинга трудно найти что-то лучше. ■

Реклама

Written by Dmitri

27 ноября 2018 at 19:26

Опубликовано в Career

Tagged with

Мой опыт наемной работы

9 комментариев

В предыдущих двух постах я не объяснил, откуда у меня такой цинизм и эгоизм. Но теперь-то вы все узнаете. Это конечно совокупность многих факторов, но основной такой: я на 2½ года остался без работы с маленьким ребенком. Дело было вот как…

После ухода из той не особо веселой конторы, я пошел работать на зарплату в 3 (три!) раза больше в один крупный аутсорсер. Пошел работать ПМом т.к. в тот момент я именно в этой сфере имел скиллы. И все бы хорошо, но тот аутсорсер был сильно завязан на фин заказчиков, а то был 2008 год — год как раз когда subprime mortgage crisis, провалы по CDO и каскадный эффект по всем тем рынкам. Просидев 3 месяца в «айдле», аутсорсер попросил меня на выход при этом, правда, дав еще лишние 3 месяца оклада. Это было немного необычно что контора так «благородно» поступила, но 3 месяца моей, даже немаленькой, зарплаты рассосались очень быстро. В то время у меня было много трат вроде, например, самовозгоревшегося холодильника (не шучу!) который нужно было заменить.

Я, естественно, пытался найти работу. Всеми силами. Но рынок остыл настолько, что ничего внятного на нем не было. Зато были четкие пацанчики, которые хотели ПМа на зарплату которая у меня была несколькими месяцами ранее, были очень стремные конторы с трубчатыми мониторами в полуразваленных заводах. Было очень много курьезных историй на которые ушло более 2-х лет моей жизни, в т.ч. попытки найти работу в Швеции (нуль результата), очень много странных предложений от не менее странных контор (в основном с элементами дэмпинга), и все в этом духе.

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

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

Выйдя снова на работу на ооочень скромные деньги («у нас все начинают с такой зарплаты»), мой мозг был порабощен крамольными идеями чуть более чем полностью. Работал ли я? Да, я помню что я что-то делал, но первый год, пока я еще был в офисе (всего я проработал 5½ лет), я постоянно думал о чем угодно, только не о работе. У меня была, по сути, одна цель: выйти из игры, выйти быстро, чем быстрее тем лучше. О таких вещах как «Канары» я тогда не знал, я просто хотел независимости от системы чтобы когда случится новый 2008 год (а для России он действительно случился в 2014-16!) у меня был хоть какой-то буфер, и всячески искал пути. Конечно, я нашел то что искал, но не будем торопиться! Надо же растянуть рассказ на несколько постов.

В какой-то момент, после года работы, я по лютой ошибке допустил локальный кризис, который вылился в мои побегушки по Стокгольмским лесам со шведскими полицейскими (про это когда-нибудь тоже будет рассказ). Под шумок этого кризиса (конечно, об этом по факту никто не знал), я предложил начальству в конторе отпустить меня в свободное плавание. Решение было принято за день, и вот, я был свободен от офиса навсегда! Офис мне совсем не нравился — плохое компьютерное оборудование, неидеальный климат-контроль (как всегда, хехе), плохая еда в столовой, езда по 45мин туда-назад, все это совсем не радовало, так что я в один момент ушел и забыл обо всем этом. Да, про еду вообще можно писать отдельный рассказ: в то время собственной столовой у компании не было, а столовая в БЦ была «так себе», так что мы с моей 2й половиной начали ходить сначала в столовую Microsoft (у них-то был БЦ класса «А» и ресторан с пивоварней), а потом ситуация как-то вообще ушла из под контроля потому что мы стали ходить в дорогой ресторан «Рыба», что начало выливаться в ланчи длиной в час а также употреблением вина (!) что выбивало из колеи так, что вернувшись в офис, работалось очень плохо. Это было очень странное время. А я всего лишь хотел нормально питаться, черт возьми!!!

После ухода на удаленку, работа практически перестала существовать. Если она занимала 1 час в день — это было нормально. Единственное, что действительно напрягало, так это поездки на всякие конференции: сначало это было весело, но когда ты делаешь это постоянно, начинается какое-то бурление другой, новой ненависти. Плюс, в какой-то период я много ездил по России. Россия, для тех кто не в теме, это не страна для покатушек. Это где-то от «некомфортно» до «опасно», и я никому не советую заниматься евангелизмом по РФ. Просто не стоит оно того. Природа в РФ не красивая, а бурелом и дебри, а люди, условия… ну не предназначена Окоянная для туризма, увы. Она предназначена для разбитых судеб, для страданий, для падения духом, для эмиграции в теплые и красивые страны, в конце концов. Но не для sightseeing.

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

Не то чтобы все в жизни было так гладко. Во-первых, у меня пока я работал в офисе все еще оставались различные проблемы со здоровьем, в т.ч. загнание себя в стресс, отравления, адовые проблемы с зубами («двойная доза анастетика» для меня была практически нормой) — подозреваю что из-за Питерской воды, т.к. мы не сразу начали заказывать воду. Но это еще полбеды — из офиса-то я ушел, так что эти проблемы отчасти решились сами собой. Что меня начало выбешивать чуть более чем полностью это дальние поездки, причем выбешивало все — и перелеты когда я в лаунже выпивал целую бутылку (!) красного вина просто для того чтобы не помнить полет, и однообразные отели, и нежелание вообще никого видеть или слышать в новых местах. У меня развилась тотальная социальная апатия, в перерывах между конференционнымми днями я порой запирался в отеле и ел суши (и тут, даже тут я удивился травануться, причем настолько что пришлось экстренно бежать к коллеге за антигистаминными!), я просто не хочел ничего видеть и слышать, я даже там был поглощен какими-то своими идеями.

Отдельной статьей можно выделить полеты в Штаты. В таких полетах очень сложно мониторить свои сервисы и боты, но главное что я помню — это острое желание вернуться назад в самолет, где кровать, вкусное вино, можно посмотреть фильм и уснуть, чтобы подождать, когда же все это закончится. Прилетев в Штаты, я оставлял свой график «как есть». Я ложился спать в 7 вечера, вставал в 4 утра и наслаждался тишиной. Желания побыть немного туристом у меня не было никакого, хотя иногда коллеги и затаскивали меня в рестораны или, например, на Алькатрас. В фоне у меня в голове была всегда только одна мысль: я хочу путешествовать только за свой счет, туда, куда я хочу и тогда, когда мне удобно. Большие города, посиделки в инвестбанках и прочих интерпрайзах, конференции и визиты в МС — это то чего мне хотелось меньше всего.

Постепенно, за все эти годы поездки по конфам и общения с разработчиками, я понял что я не хочу видеть и слышать никого и ничего, я не хочу ни с кем общаться вообще. Почему? Потому что у нас нет общего языка. Можно подумать что айтишники все одинаковые, но на самом деле нет: большинство людей предпочитают обыденные вещи. Никому не сдались мои дискуссии про аппаратные ускорители или FusionIO потому что у людей нет ни денег ни желания что-то в этой сфере делать. Никому толком не нужны новые ЯП, метапрограммирование, кодогенерация, боты которые собирают и обрабатывают данные в Biztalk. Даже мои более «гиковые» наклонности вроде D&D или M:tG обсуждать не с кем.

Касательно социалочки, it’s not you, it’s me. То есть проблемы скорее во мне чем в вас. Мне прекрасно живется «как есть», и я склонен думать, что один из показателей эмоциональной зрелости — это когда вы можете просто быть наедине с собой и найти в жизни мотивацию делать что-то, что не связано с другими людьми. Да, иногда я пытаюсь помочь другим людям, по возможности, толкать именно ту идиологическую линию эгоцентризма, которая описана в этих постах, но мотивирует это мое желание «другого уровня счастья» для других людей которые, я верю, вполне могут его достичь.

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

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

Written by Dmitri

22 ноября 2018 at 1:08

Опубликовано в Career

Мой опыт продуктовой разработки

8 комментариев

Возможно всё, что я написал в прошлом посте — слишком очевидно. Жизнь жестока, капитализм, все такое. Что же делать? Очередной сумбурный пост.

Для начала, определитесь с целями. Если вам 20 и вам нечего терять, у вас все еще есть шансы попробовать мир “настоящей работы” просто чтобы набить руку на реальном кодинге и при этом не потерять веры во все святое. И то, как повезет. Я, когда приехал в РФ, устроился на возможно худшее возможное место со средним возрастом “за 40” и сотрудниками которые, по собственному же признанию, “звезд с неба не хватают”. Я работал в зааутсоршеном отделе крупного международного концерна, где народу было по сути пофиг практически на все, зарплата была скромной, но и нагрузка у большинства людей колебалась где-то вокруг нуля. Многие люди просто поддерживали различные легаси продукты (например, основной продукт использовал DCOM что было само по себе забавно), в то время как мне “повезло” и я попал на новый продукт, который мы втроем писали на C#.

Зарабатывал я минимум. Зато ездил час туда час назад на метро, и как следствие адово болел (в метро цепляешь все что можно), т.к., сюрприз, моя имунная система была настроена на Англию и таких вещей как “ангина”, “гайморит” и так далее я не видел и не знал. При этом в Англии другие эпидимиологические проблемы, например засилье MRSA в госпиталях. Но я не хочу уходить в сторону обсуждения “социализированной” медицины т.к. там все плохо. Так или иначе, начало у меня было не из лучших…

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

  • Свободное знание английского языка

  • Очень хорошие коммуникационные навыки (в универе, до ухода из comp sci на психологию, я был типичным закомплексованным задротом)

  • Неплохое знание математики (родители матфизики были изначально, если что)

  • Паспорта нескольких стран

Все это как-то амортизируется, да? Да не то что бы. Вы не представляете, сколько ИТ контор в России мне открыто говорили “да у нас тут все на английском шпарят”… ага, ага, верю (поймите: HR существует для того чтобы вам лгать). Пардон, в последней компании где я работал, где Н-сто человек, даже руководство (директора, лиды проектов) по факту знают английский настолько плохо что мне тяжело смотреть когда они выступают на всяких сборищах. Собственно, поэтому отдел евангелизма там состоит из иностранцев, и я был там единственный русский (ну, с русскими корнями). Вообще это немного парадоксально/клинично, что люди могут выучить сколько угодно ЯП но когда дело касается реальных языков, тут все динамят.

Заметьте что в списке выше напрочь отсутствуют навыки программрования как преимущество. Людям по барабану на твои coding skills. И вообще, все что ты делаешь, каким бы высоким полетом оно не являлось, никак не влияет на твою зарплату. Соотственно, стимула делать что-то хорошо, развиваться, покрывать код тестами, и так далее нет вообще, т.к. любой здравомыслящий человек делает cost-benefit analysis на основе реальных нужд: могу ли я купить дом, машину, есть ли у меня деньги на роды ребенка (у меня в свое время не хватило, серьезно!). Еще раз: то насколько ты хорошо программируешь никак не влияет на кол-во денег на личном кошельке. А обсуждать что-то отличное от личного кошелька (например собственное эго, согретое красиво решенной задачей) я считаю кощунством.

Мне мало было просто писать хороший код, я хотел писать код быстрее. И тут я, как самый инициативный, взял и запилил под студию кастом тул для того чтобы в студии брать XML файл и использовать XSLT чтобы приобразовывать его в C# код. Я успешно воткнул эту штуку в проект, и она позволила очень быстро через XML нагенерить в файле .Designer.cs стопятьсот однотипных панелек. Это было классно и осталось в проекте даже после того как я ушел из компании. Коллеги правда пытались это саботировать путем изменения нагенеренных структур (надо было бы еще флажок readonly у файла ставить, что ли), но это не сработало и все вроде как поняли что да, придется установить кастом тул зато какая радость когда все так быстро создается.

Вот еще один пример, который раскрылся только после того как я уже уволился: была такая задача физические формулы в код переводить. То есть, есть просто формула которая считает физический показатель, нужно ее реализовать в C#, казалось бы в чем проблема. На каждую формулу программист, который превращал формулу в код, брал один день. Один スカ день!!! А я подумал, а почему бы не автоматизировать этот процесс — взять MathML формулы, распарсить ее и превратить в C#? Так на свет появился MathSharp который, будь я еще в компании, свел бы эту задачу практически к нулю и, главное, обеспечил бы более правильный результат, т.к. автоматическая конверсия по определению эффективнее чем ручной перевод. To err is human.

Что происходит когда вы слишком быстро решаете задачу за которую вам платят? Может вы думаете, что решив 2× задач, вы как бы получите 2× денег? А вот нифига. Так эта экономика не работает. Реальная производительность разработчиков разнится в десятки (а то и сотни раз), но их доход отличается обычно на погрешность. Причем с социальной точки зрения, “модель Боинга”, когда у вас практически плоская иерархия и очень маленькая разница в доходе, работает лучше потому что люди не психуют что кто-то получает больше. Но чем больше таких структур вводится, чем дальше мы от меритократии — идеи о том, что каждому полагается по способностям, по таланту и вкладу в проект. Это вам эта идея кажется здравой, а вот в той же леволиберальной долине есть движение против меритократии. Против. Меритократии. В 21 веке. Ладно, не буду снова уходить в политику.

Автоматизация — это действительно классная штука. И уже потом, когда я на 2½ года остался у разбитого корыта, я только ей и занимался. Из полезного я запилил X2C, тулу которая из Excel умеет генерить код, и даже целые приложения. Опять же, это очередная манифестация моей веры в то, что автоматизация сократит количество телодвижений и поможет удалить из нашей работы максимум рутины. А также удалить из нашей индустрии максимум людей т.к., простите, количество планктона который делает хз что в крупных конторах просто бешеный. Да я и сам бывал в положении когда у тебя нагрузка от силы 1 час в день. Это просто безумные реалии большого энтерпрайза где никто не куда не торопится, а на то что лично у вас, в вашей жизни, есть 100500 экономических целей всем как бы плевать.

Вообще разработка собственного продукта — это интересный опыт. При том что сделать сайтик и начать продавать с деньгами капающими на онлайн-счет можно практически моментально и беззатратно. Главное иметь идею, хоть какую-то, и даже если она не выстрелит, все равно интересно. Мне иногда приходят имейлы типа “у вас купили на $150”, я думаю “что это?” а оказывается кто-то еще берет, хотя я своими продуктами уже не занимаюсь за исключением саппорта.

Главное в разработке собственного продукта это то, что ты внезапно никому ничего не должен. Сам сделал, сам денежку получил. Это очень вытрезвляет после того как ты сидишь на чужих деньгах, проедаешь 90% зарплаты и не видишь никаких перспектив. Кстати, насчет перспектив! Примерно через год после того как я начала работать, высшему руководству пришла в голову гениальная идея сделать меня “процессным инжинером”, т.е. человеком который занимается не собственно разработкой а формализацией процесса разработки.

И вот тут-то я понял что процесс не нужен. Что процесс разработки — это не решение, это диагноз болезни под названием “посредственность”. Особенно это было заметно когда я потом пошел работать в компанию без процессов где все просто делалось, без лишних митигов, церемоний и прочих CMMI. Это как пелену с глаз сняли. Теперь для меня наличие процесса — это диагноз, это значит что людям которые работают в компании нельзя позволить автономно делать какую-то фичу без лишних церемоний. А это многое говорит о компании. Мне кажется если уж и работать с людьми, то работать с теми кто сам умеет планировать и реализовывать. Хотя конечно лучше работать без людей.

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

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

Продолжение следует…

Written by Dmitri

18 ноября 2018 at 13:50

Опубликовано в Career

Tagged with

Что я думаю про карьеру в ИТ

24 комментария

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

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

Уровень моей тошноты по отношению к ИТ для карьеры (а не как ИТ = инфраструктуры для решения задач) рос с годом от года и наверное никогда не достигнет своего пика. Я все еще проклинаю себя за то что, как дебил, пошел после колледжа на Computer Science хотя надо было идти на чистую математику, т.к. после математики, все эти технические дисциплины вроде “программирования” — это какая-то детская тривиальщина, которую даже упомянать как-то стыдно. Для меня программрование — это не какая-то вещь в себе, это практический навык, такой же как знание английского языка.

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

Во-первых, я сторонник индивидуализма. Личность — хорошо; общество, большинство — уныло и посредственно, и чаще всего ведет за собой тиранию и насаждение особого мнения с которым ты прям должен быть согласен. Любой большой энтерпрайз с программистами это по определению такое же уныние и посредственность, а все “звезды” очень быстро уходят в свободное плавание т.к. понимают какой это тлен делать добавленную стоимость владельцам того офшора (а у нас все ИТ = офшоры) в котором они работают. Вы можете прийти в большую успешную компанию и, например, обнаружить там целый отдел людей которые полностью некомпетентны для выполнения тех задач на которые их наняли… и это нормально! Вопрос в том, надо ли вам взаимодействовать с этими людьми?

Во-вторых, нищета. Относительная конечно нищета. Да, у вас будет квартира, машина, участок с домиком в садоводстве и редкие полеты на какие-то теплые острова (главное чтобы не в крым). Но на этом, пожалуй, все и закончится. В финансовом понимании, лучшее что вы можете сделать по карьере в ИТ это переехать в Долину, получить при этом где-то в диапазоне 100-200 и при этом отдавать 50%. Если ваша цель “делать соточку” (100 в месяц), то даже в Долине это сделать достаточно сложно. Плюс, я для вас открою секрет, калифорния это засилье Американского либерализма, там всякие Goolag, “феминизм”, “дайверсити”, “мультикультурализм” и другие слова, за произнесение которых в слух нужно высылать первым же рейсом в Венесуэлу. Мое отношение ко всему этому вы и так уже знаете.

Нищета кстати не только на уровне личного кошелька. Да, личный кошелек превыше всего и я, даже когда начинал работать в ИТ, очень удивлялся что со мной никто не делился прибылью (хаха, наивность!) от продаж и все такое. Но нищета существует не только на уровне зарплат (зато у нас бесплатные печеньки на каждом этаже!), но и на уровне оборудования. Когда ты приходишь в большую контору а тебе дают комп с одним экраном и 4гб оперативки, и без SSD, вот тут-то ты понимаешь, что обороты компании никак не связаны с условиями работы и что все вообще плевали насколько эффективно ты работаешь. Это отрезвляет. Это не плохо или хорошо, и я не собираюсь ныть, но когда твой домашний комп в 10 раз дороже, чем рабочий, это о чем-то все же говорит.

А я, прикиньте, фанат железа! Мне подавай FPGA, Xeon Phi, CUDA всякую, и побольше, побольше! И я сейчас уже знаю как все это использовать. Поэтому когда я говорю про 10тыс ядер или десятки тесл люди удивляются, а я считаю, что это “ничего особенного”. Шесть мониторов (ну или хоть три!) на столе это тоже тривиальность, это просто фигня, ты к этому привыкаешь и всё, и компании это стоило бы копейки поставить и люди бы привыкли (не спорьте, привыкли бы, это как электровелосипед, все сначала сомневаются а потом фигеют с того насколько это круто). Мне например стремно было работать в компании, где сотрудники сами за свои деньги покупали SSD или даже отдельные компы (true story, bro!) чтобы делать свою работу. Это бред. И при этом как бы крокодил ловится, кокос растет, все довольны тем что есть, главное зарплату в конце месяца.

Конечно, мое основное несогласие с организованным трудом это время. У меня помимо работы есть 100500 разных вещей, и я не могу делать их на работе. Я хочу есть, спать, читать книги, вступать в интимные связи и т.д. когда я этого хочу, а не в строго определенных промежутках. А еще я пью вино, могу сходить в кино с утра, подирижировать стройкой или улететь на Канары. Для меня офис это нонсенс времен 90х. Но я, как вы понимаете, ратую не только за удаленку, т.к. это все равно подразумевает работу с кем-то еще. You need to go deeper.

И вот тут самый гвоздь программы. Я не вижу будущего в работе с людьми. Я считаю, что у нас есть отдельные, конкретные, выдающиеся личности которые хороши сами по себе. Я знаю что один конкретно взятый человек может, независимо от других, генерить нескромные суммы денег, а приносит он пользу обществу или нет — это вообще неважно. Individuals over societies, все такое. Спасение утопающего есть дело рук самого утопающего. У нас полон ми возможностей где любой талантливый программист может “дожать” до соточки или больше, при этом не создавая “стартап” (само по себе грязное слово).

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

Не поймите меня неправильно — ИТ это прекрасно! Есть очень много действительно интересных и инновационных технологий, а если шагнуть чуть в край, в сторону электроники например, то интересного и того больше. Но работая в ИТ, вы почти наверняка не столкнетесь ни с чем подобным. Поэтому если вы любите деньги, технологии и прогресс, я советую искать другие пути.

Written by Dmitri

15 ноября 2018 at 14:28

Опубликовано в Career

Dynamic container proof of concept

3 комментария

Итак, я обещал запилить proof of concept идеи касательно динамически изменяемых программ, так что давайте начнем. Для начала нужно сделать контейнер с набором типов и механизмом регистрации:

public class DynamicContainer
{
  private Dictionary registry
    = new Dictionary();
  public void Register()
    where TReturned : TRequested
  {
    // todo
  }
}

Пока все достаточно банально, и мы даже не разбили контейнер на “билдер” (классический GoF паттерн) и сам контейнер, как это делает например Autofac. Но в какой-то момент нам придется таки обойти весь граф зависимостей (давайте представим что мы делаем только property injection) и записать куда-то эти результаты.

Это все очень легко делается. Просто добавляем очередной dictionary который держит список зависимостей для каждого типа. Кстати сюда же можно добавить ассоциативный контейнер в обратную сторону — специально для тех кому лень искать в нугетах bidirectional directionary:

private readonly Dictionary<Type, HashSet> dependencies
  = new Dictionary<Type, HashSet>();
private readonly Dictionary<Type, HashSet> affected
  = new Dictionary<Type, HashSet>();

Теперь, в момент регистрации любого компонента, эти структуры нужно заполнять. Давайте представим что у нас property injection реализован с помошью атрибута [Service]: тогда мы просто берем и для каждого типа находим все проперти с этим атрибутом, и добавляем все что надо в оба словаря:

public DynamicContainer Register(Type requested, Type returned)
{
  var props = returned.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic)
    .Where(p => CustomAttributeExtensions.GetCustomAttribute((MemberInfo) p) != null);
  foreach (var p in props)
  {
    dependencies.Set(returned, p.PropertyType);
    affected.Set(p.PropertyType, returned);
  }
  registry.Set(requested, returned);
  return this;
}

Здесь и далее, Set() — это upsert операция.

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

private object Resolve(Type type)
{
  var actualType = registry[type];
  var instance = Activator.CreateInstance(actualType);
  if (dependencies.ContainsKey(actualType))
  {
    foreach (var p in actualType.GetProperties(BindingFlags.Instance|BindingFlags.NonPublic)
      .Where(p => p.GetCustomAttribute() != null))
    {
      p.SetValue(instance, Resolve(p.PropertyType));
    }
  }
  return instance;
}

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

public T Resolve()
{
  return (T) Resolve(typeof(T));
}

Теперь сценарий: у нас есть машина которая использует некий сервис…

public class Car
{
  [Service]
  private IAlarmService AlarmService { get; set; }
  public void TriggerAlarm()
  {
    Console.WriteLine("Triggering alarm⋮");
    AlarmService.Trigger();
  }
}

Сам по себе сервис имеет метод Alarm() который просто пишет в консоль:

public class AlarmService : IAlarmService
{
  public void Trigger()
  {
    Console.WriteLine("Alarm has been sent to HQ");
  }
}

Так вот, все это счастье можно спокойно использовать вот так:

var container = new DynamicContainer();
container
  .Register()
  .Register();
var car = container.Resolve();
car.TriggerAlarm(); // Alarm has been sent to HQ

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

var text = File.ReadAllText(@"..\..\AlarmService.cs");
text = text.Replace("has been sent", "has NOT been sent");
var ipc = new InProcessCompiler();
var newServiceType = ipc.Compile(text);
container.Register(newServiceType.GetInterfaces()[0],
  newServiceType);

Тут происходит следующее:

  • Мы вычитываем сорцы сервиса который хотим менять. Заметьте что это подразумевает что у нас one class per file.

  • Берем и меняем исходник. На этом этапе можно также сохранить эти сорцы в тот файл откуда взяли.

  • Создаем компилятор (это отдельный класс который просто использует компиляторный API чтобы что-то собрать) и компилируем сорцы.

  • На выходе у нас — System.Type. Просто берем и регистрируем его заного в контейнере.

Вот собственно и всё — реализация обновилась. Можно пересоздать объект Car и тут же воспользоваться новым сервисом:

car = container.Resolve();
car.TriggerAlarm(); // Alarm has NOT been sent to HQ

Такой вот proof of concept. Думаю вы поняли, что если держать реестр всех созданных контейнером объектов (как WeakReference-ы конечно же), то можно прямо в методе Register() пройтись по выданным объектам и обновить их сервисы, без какого либо пересоздания. ■

Written by Dmitri

25 июля 2018 at 20:19

Опубликовано в .NET, Technology

Development 2.0

7 комментариев

Ох вау, новый блогпост, а вы-то думали что Нестерук suka мертв. Ну, еще нет, хоть я на пенсии и пишу это на острове пенсионеров (Мадейра). Какой-то адский бабулькоград.

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

Итак, о чем мы? Да о том, что скорость SSD-образных технологий постепенно приближается к скорости RAM — настолько, что те модели Optane которые есть на рынке сейчас — это М.2 драйвы для кэшей для тех у кого еще нет SSD и те кто хочет малой кровью получить прирост к перформансу.

Конечно Intel — это, извините, лживая и не особо заботящаяся о своих клиентах компания. Это я как пользователь всего их стэка говорю, им глубоко пофиг что их компилятор накрывается на тривиальных примерах с “Ошибка 3”, а про то что прирост скорости процов в последнии несколько лет чуть ли не нулевой (ну, процентов 15) вообще говорить не стоит, как и о продолбанном Broadwell.

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

Что за идею я вам хочу толкнуть? Да все ту же идею что программы должны быть всегда запущенны, и что разделение программы на этап компиляции и этап запуска — это бред. Еще со времен Java 2, простихосподи, у нас была возможность скомпилировать программу прямо из программы и динамически ее подгрузить. Вот насчет отгрузки все сложнее (легко в C++, очень сложно в .NET) можно долго писать, но возможность такая существует. Итак, что бы хотелось иметь?

  • Программист запускает программу как “чистый лист”, то есть по сути запускает лишь работающий, пустой IoC контейнер без регистраций (и SMS).

  • Программист редактирует программу “по живому”, в процессе запуска. Контейнер дает ему возможность добавить новый класс/интерфейс или поменять существующий. Это кстати — не совсем тривиальные задачи, но в базовом сценарии, когда все зависимости заинжекшены — вполне реально.

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

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

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

Вот это, мои дорогие, то как я вижу Development 2.0 — новая парадигма, в которой ничего не нужно пересобирать и перезапускать. Нужен просто такой IoC контейнер, который настроен на вечную персистентность системы и умеет худо бедно отгружать типы (или делать грамотный перезапуск). Технология динамического прототипирования, про которую я неоднократно говорил — это proof of concept того, про что я тут пишу.

А что, собственно, происходит дальше? Неужто мы редактируем прямо продакшн? Ну это уже от вас зависит — если вы захотите запилить “параллельную реальность” для проверки идей и тестирования, то это реально! И будет работать намного быстрее т.к. все уже загружено в процесс и никакой рекомпиляции “всего и вся” делать не нужно! А уже наработанные технологии code coverage дадут возможность трекать изменения и ранить тесты только на то, что реально поменялось.

Чтобы не быть голословным, я пошалуй напишу proof of concept на это дело. Какие-то наработки у меня уже есть с давнего dotNext, сейчас самое время сделать апдейт…

Written by Dmitri

5 июня 2018 at 19:42

Опубликовано в Programming

Tagged with

Отзыв о конференции DotNext Piter 2018

8 комментариев

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

Первое что скажу — 12 спонсоров в этот раз, это круто, вроде в 1й присест был JetBrains один и то бесплатно, а тут 12. Правда спонсоры это в основном сервисные компании, которые платят копейки (копейки в моем понимании это <$1kk/год) — EPAM, DataArt (черт, я там работал целых аж 3 месяца), и прочие подобные конторы. Из продуктовых там были JetBrains, Fast Reports, хз не помню кто еще. Главным спонсором был Альфабанк, для меня фраза “ритейловый банк” синоним “раковая опухоль”, да не будем о плохом, товарищи. Короче я понял что я unemployable :)

Так вот, посетил я не все доклады, а только некоторые, так что вот мои отзывы:

Apps, algorithms and abstractions: decoding our digital world, Dylan Beattie: давайте начнем с того что SkillsMatter это какбы контора которая, как и я, зарабатывает деньги. Что они там делают — ну, тренинги делают. А сам по себе доклад был 100% популистский, что хорошо, т.к. конфа должна начинаться и заканчиваться чем-то легким. Поэтому было вообще ОК, Дилан рассказал про то сколько всего сложного происходит в тот момент когда ты получаешь на мобильнике картинку котика и пишешь LOL. Отдельный ему респект за русскоязычный юмор (щи да каша пища наша!), очень хорошо подготовился. Почему правда англичанин одевается как техасский ковбой история умалчивает, наверное это часть его рок-имиджа — это ведь он (и Вагиф Абилов, кстати!) играли рок на закрытии первого дня. Годно.

Fastware, Andrei Alexandrescu, The D Language Foundation — эээ, D какбы мертв, а Алексадреску обычно делает доклады на С++ конференциях вроде ACCU, C++Now и прочие, т.к. он легенда С++ мира который ушел в D. Который не взлетел — он хоть и делал там что-то на D в фейсбуке, но в отличии от Rust нехватило момента и язык не смог преодолеть силу тяготелния. Доклад Александреску показался мне немного несобранным и лишенным консистентности — он конечно потрудился чтобы перевести свои примеры в C#, но примеров было мало и они были клинично-прецезионными. Скорость — это не про те языки где нельзя напрямую писать ASM или манипулировать SIMDом, хотя что-то на C# у вас определенно получится. В целом, доклад не особо понравился.

Lightweight microservice collaboration using HTTP, Christian Horsdal — типичный консалтерский доклад высокого уровня. Я еще должен подчеркнуть тут, что microservices are not a thing: коммуникация через веб-интерфейсы это хорошо, но уровень дробления должно быть адекватно, и резать все на “микро” это очень тупо и никому нафиг не нужно. Поэтому просмотрел доклад, не почерпнув ни одной особой мысли. Да, в микросервисах появляются задачи вроде “как описать весь API”, “что нужно делать при поломке”, но эти задачи не отличаются от аналогов с работос с очередями вроде MSMQ, RabbitMQ и всем этим остальным адом. CQRS/ES — это круто и нужно. Микросервисы — скорее все же нет.

Взаимодействие микросервисов по HTTP/2, Евгений Жиров — вот этот доклад мне понравился, т.к. это была реальная case study о том как использовать HTTP/2. Докладчик объяснил зачем им это было надо, на какие грабли они наткнулись и про “а как же .NET Core”. Совершенно годный доклад, и хоть его основной вывод “нужно подождать”, мне понравилось.

Building real world production-ready web APIs with .NET Core, Alex Thissen — еще один доклад по микросервисам который тоже меня не впечатлил. Было чуть больше конкретики, у докладчика был реальный проект, но опять же весь рассказ как-то скомкался воедино, у него не было какой-то общей структуры верхнего уровня, и в результате я не могу сказать чтобы я из него что-то важное. Опять же, microservices aren’t a thing поэтому горевать по ним никто не будет.

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

Вот как-то так. В Москву я на DotNext не поеду — терпеть не могу этот город, и даже когда был евангелистом испытывал от него тошноту. И вообще, в этом году у меня было желание съездить на Build, но всем из РФ закрыли визы, а лететь одному — ну, в принципе реально, но как-то совсем одиноко. Как-нибудь в другой раз, когда санкции снимут. Хотя я почти уверен что их уже вообще не снимут. Ну еще несколько лет точно.

Да, похвастаюсь, у меня вышла книжка. Такие дела.

Written by Dmitri

24 апреля 2018 at 22:06

Опубликовано в Events

Tagged with ,