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

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

Обучение математике для quant finance

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

Есть такая хорошая фраза — quit while you’re ahead. Уйти из игры до того, как ты стал немощный и уже не можещь даже номинально отрабатывать те деньги, которые тебе платят. Меня эта фраза всегда и драйвила, потому что я прекрасно понимал, что ничто не вечно. Собственно поэтому я всегда искал себе последнюю сферу деятельности, то есть что-то что может раз и навсегда закрыть хотя бы финансовый вопрос.

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

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

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

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

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

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

Ключевым с точки зрения финмата является не только знание того что такое стандартное отклонение (я кстати, как и Талеб, не фанат всего этого) или то или иное распределение, а оценка. Оценка, то что называется estimation, позволяет нам оценивать параметры распределения случайной переменной на основе некоторых тестов. Зачем это надо? На самом деле все просто: в финмате очень много времени посвящено анализу процесса цены и подгонки его под тот или иной процесс. Естественно, что идеально оно ложится не всегда, но нужно же хоть как-то понять, какая модель лучше всего подходит к тому или иному активу. Это называется calibration.

С базовыми знаниями статистики уже можно начать разбираться в анализе временных данных. Опять же, есть хорошая книга (Analysis of Financial Time Series, Tsay) которая с примерами на R расскажет вам про такие вещи как стационарность, GARCH, и все вот это. Параллельно с этим я бы советовал взять почитать какую-нибудь книгу по истории статистического арбитража, т.к. там очень хорошо рассказывается про то, с каких стратегий люди начинали арбитражить. Естественно, что мир сейчас намного сложнее, но все равно, это очень интересное чтиво.

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

Есть хорошая книжка Brownian Motion Calculus (Wiersema), которая немного открыла мои глаза на всю эту кухню. Например, я раньше не мог думать в терминах «матожидание матожидания» (E[E[X]]) потому что мой мозг не был настроен на подобные вещи. Эта книжка оказалась хорошей переходной литературой от «бытовой» статистики до чего-то применимого.

Если говорить про процессы цены, то для этого есть целый отдельный раздел математики под названием Стохастика (stochastic calculus). К сожалению, порог входа в эту область достаточно высок, и подразумевает что вы знаете как классический анализ (а это минимум год вашей жизни) так и теорию меры — один из, вероятно, самых неприятных предметов в математике который существует. Но к сожалению, все книги, в т.ч. и основная книга которая у нас используется (Stochastic Differential Equations, Ocksendal) используют measure-theoretic язык чтобы донести свои идеи. К этому привыкаешь, но привыкаешь очень медленно. Кстати, анализ и теория меры приводят к серьезной «профдеформации» в голове со всякими там эпсилон-окрестностями и другим шумом. Плюс, конечно же, все это подразумевает что вы знаете дифф.ур.-ы на нормальном уровне, но с этим не должно быть каких-то серьезных проблем.

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

Да, пока не забыл, для всей этой кухни есть, конечно, свои языки программирования. Если говорить чисто про анализ, то тут используется все что душе угодно: R, Python, MATLAB, новые языки вроде Julia (SPSS не вариант, сорян). Когда у вас небольшие объемы данных, все нормально. Вот когда вы уже начинаете строить свою собственную инфру (RAID-ы всякие) для данных и анализа, тогда вам возможно придется перейти на что-то потяжелее. Основной язык финансовой инженерии — С++. Так что плюсы, которые используются на стороне исполнения, знать нужно. Они используются на классическом железе, но также С или С++ (зависит от ситуации) используются на аппаратных ускорителях. Так что С++ нужно знать и понимать без вариантов. У Mark Joshi есть книжка которая индикативна тому что реально пишут… for better or for worse.

Раз уж мы заговорили про программирование, у вас конечно должны быть навыки численных методов. Например, как интерполировать улыбку волатильности чтобы найти искривление, которое рынок почему-то не учел? Ну, надо использовать метод координатного спуска (кажется это Levenberg-Marquardt по-буржуйски), а это численная процедура. Тот же подсчет функций плотности по нормальному распределению делается численными методами (Abramowitz-Stegun, до сих пор где-то книжка лежит) которые тоже нужно знать и понимать. Еще было бы вообще здорово разжиться интуицией касательно того, когда нужно делать single/double floating point а когда вообще fixed-point (!). По секрету скажу, что у меня, особенно когда нет чего-то мерзко-итеративного, вычисления все single-point; сейчас single/double на CPU работают более-менее одинаково, а вот на GPU… это другая история.

Все что я описал выше займет годы изучения. Нет никаких коротких путей, и не нужно забывать, что помимо всего того что я перечислил выше (а также то, что я забыл), еще нужно разбираться в финансовой стороне дел (даже банальный money/risk management), плюс нужно кодить все это. Поскольку большинству людей это нафиг не надо, проще на 2-недельные курсы в местный форекс сходить и слить все, имеем то, что имеем. Интересно, что даже в профессиональных трейдерских сообществах (например смартлаб) мало кто знает эту кухню, ведь большинство людей занимаются тем что мы именуем systematic trading. Настоящих квантов мало, и в основном они сидят в банках и фондах, а не у себя дома. ■

Реклама

Written by Dmitri

15 декабря 2018 at 11:44

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

Tagged with ,

Заметка про ботов

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

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

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

Кто-то может пожать плечами и сказать «ну что поделать», но на самом деле, эпидемия безыдейности, как я ее называю, имеет такие адские масштабы что по сути, 99.9(9)% населения существует по факту лишь для того, чтобы поддерживать тот статистический разброс, в котором появляются люди которые пилят интересные проекты.

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

На самом деле нет. Единственный их шанс — это идти делать роботов. Чем собственно я и занимаюсь, ведь я пишу софтверных ботов, которые автономно делают некоторые действия сами по себе, на основе некоторых правил.

Приведу пример бота которого я написал сегодня. Как вы знаете, в РФ можно ввозить беспошлинно до EUR1000 на одного человека. Если вам нужно ввезти товаров на большую сумму, посылки нужно разбить и послать на несколько человек. На стороне отправщика (freight forwarder) есть услуга по консолидации, когда несколько небольших посылок тебе складывают в одну большую коробку. Очень удобно.

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

Этот бот — это конечно очень небольшой, тривиальный бот. Я бы сам мог попробовать покомутировать посылки просто на листке бумаги. Но с посылками все не очень просто: например, есть посылки с зимними вещами (шипованные покрышки, например), которые не имеет смысл откладывать на потом. С другой стороны, есть посылки которые не к спеху, хотя боту следует помнить, что срок бесплатного хранения посылки на складе не бесконечен и ее все равно рано или поздно придется послать.

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

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

В конечном счете, мне захотелось стричь с ботов бабло. Я бота написал, пущай он идет в «эти ваши интернеты» и приносит лавэ, пока я греюсь на солнышке на Канарах. Сначала я хотел сунуться в покер, но к тому времени как я затеял всю эту канитель, в покере уже было over 9000 ботоводов — настолько, что по текущим оценкам, где-то 50% всех учатников покер-румов это боты. Опять же, владельцы покер-румов как-то пытаются с этим бороться, но не особо успешно т.к. по сути дела любое их действие тут же отыгрывается умными ботописателями.

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

Я написал достаточно много всяких ботов, не связанных с алготрейдингом. Например есть боты которые мониторят банковские счета, есть боты которые транслирут медленные сайты так, чтобы я мог комфортно с ними работать (это я про любые тормозные сайты, начиная со всяких форумов Microsoft и заканчивая, простите, YouTrack-ом). Автоматизация некоторых процессов в соцсетях тоже работает «на ура» — например, я хочу дать человеку ссылку на книгу, но ссылки под рукой нет — я пишу название и автора книги, как помню, а бот потом переписывает мой комментарий уже с правильной ссылкой на Amazon. Конечно, все это в основном мелочи, но они делают жизнь чуть более интересной. Вот вам еще пример: как-то я нашел издательство, которое выдавало постранично свои книги в открытый доступ. Естественно, я написал бота который из этих страниц делал полноценные PDFы.

Вообще, с ботами у меня очень много примеров. Касательно инфраструктуры, единственная проблема с теми ботами что работают в интернете — это взаимодействие с браузером. Не все так просто, и запуск вагона разных потоков на вкладки браузера быстро приводит вас к тому, что ничего толком не работает, не хватает памяти, и так далее. Тут у меня подход прост: я агрегирую всех ботов в один сервис, который просто запускает их по очереди. Ведь по сути механизм работы ботов это polling, поэтому нет проблем чтобы этот поллинг для разных сайтов делать в разное время.

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

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

Written by Dmitri

12 декабря 2018 at 18:55

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

Tagged with

Медленный путь в алготрейдинг

31 комментарий

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

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

Так вот, будучи на психологии, я периодически рыскал в рунетах (ностальгия? возможно!) и наткнулся, как вы думаете на что, на Форекс Клуб — один из наших старейших форексолохотронов которые убеждают домохозяек, что за 2 недели изучения технического анализа (лжедисциплина, но об этом позже) можно стать «трейдером на валютном рынке». Я, конечно, в тот момент был дебилом, и повелся на всю эту хрень. Денег я, конечно, туда не вливал, но целиком поверил что «мне везет» и я вообще понимаю что со всей этой кухней происходит.

Время шло, и я постепенно наткнулся на популярный терминал MetaTrader, который многие кухни использовали для якобы проведения сделок (на самом деле нет) с плечом аж до 200:1. Примечательным свойством МТ было то, что там можно было писать торговых роботов, а ушлые поставщики сего терминала даже запустили мировой чемпионат (!) где люди могли соревноваться в написании торговых ботов. Называется это сейчас World Cup Trading Championship и является прекрасной заманухой тех, кто считает, что торговать на голом спотовом инструменте это нормально.

Примечательным свойством MetaTrader является то, что прямо в систему встроен C++образный API для написания ботов, которых можно прямо в системе и тестировать. Под «тестировать» нужно понимать, что тесты он проводит на исторических данных без учета того беспредела с проскальзыванием и полным адом, который устраивают кухни. В общем, до реальной жизни тем бэктестам как до луны, но АПИ богат и напичкан всякими погремушками теханализа так что любой advanced домохозяйке надолго хватит.

В контексте этих ботов (их MT называет adviser-ами) у меня появился первый спортивный интерес. А почему бы не пописать роботов, которые там чем-то торгуют? Ведь это так весело, ты сидишь а софтинка тебе денежки приносит. Прям мечта, и масштабы практически безграничны.

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

Мои заигрывания с FXCM (баланс колебался туда-сюда) продолжились даже когда я переехал в РФ. Терминал стоял у меня прямо на рабочем компе и я периодчески поглядывал, оправдывались ли мои ожидания, базированные, вы угадали, на техническом анализе. Естественно, о том чтобы чуток поизучать математику всего этого не было и речи и, более того, я был убежден что математика программистам вообще не нужна и только отвлекает.

В какой-то момент я наткнулся на такой концепт как «нейронные сети». Систематической литературы по этому феномену тогда не было, были лишь тривиальные кейсы про то как это использовать в OCR плюс очень много воды про то что якобы это применимо в других областях, в т.ч. и в трейдинге. Меня все это как-то сильно цепануло, и я напечатал себе целую огромную папку статей (многие из которых я до конца не понимал т.к. в академии в comp sci все пишут очень плохо и размазано), плюс я начал писать код и даже тестировать торговлю с помощью нейросетей на исторических данных. У меня конечно ничего не работало, но и методологически я, в то время, не смог бы правильно оценить влияние ТС даже если бы все действительно работало как надо.

В общем, вся эта форексовая тема как-то схлопнулась сама собой. Сидя потом без работы, я прочитал в сети достаточно на эту тему чтобы понять, что эта сфера не для меня и что хитрые системы (т.н. «кухни») настроены против игроков и даже их ставки ни на какие «междунородные рынки» в большинстве случаев не выходят. А денег на полноценные ECN-ы у меня не было, да и игра без плеча 100:1 казалось какой-то уж совсем бессмысленной. Все это дело затихло и я не слишком горевал по этому поводу.

После того как я попал в JetBrains, оттуда уволился один из сотрудников из команды Решарпера, причем ушел он не в МС или Одноклассники (да-да, бывает и такое), а пошел делать свой стартап. Он вышел со мной на связь, и мы встретились с ним, а также с его другом и одновременно инвестором — человеком который делал реальные деньги торговлей на бирже. Мой интерес к алготрейдерской теме снова пробудился, и мне было приятно пообсуждать различные механизмы реального заработка на рынках.

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

Изучение высшей математики когда тебе «за 30» — это не шутка. Это реально, но мозг уже забит всяким мусором, и раскочегаривание его занятие весьма мучительное. Поясню, что в Английских универах на comp sci, в отличии от РФ, не дается высшая математика а лишь азы, поэтому начать пришлось буквально с базовых вещей вроде математической статистики и вероятности, линейной алгебры, и прочими весьма банальными дисциплинами. Но было бы слишком легко если бы можно было просто копнуть эти темы на поверхностном уровне и бежать считать реальный рынок. На практике пришлось пройти вводный курс анализа, изучить теорию меры и углубиться в стохастику — тему, которая до того момента была мне вообще неизвестна. Тут, для полноты картины, следует упомянуть, что у меня склонности к математике — я сдал математику в школе в 9 классе, в универе по (рудиментарной) математике у меня был высший балл, да и вообще, у меня родители матфизики так что когда-то там, в далеком прошлом, мне это все очень легко давалось. Это я к тому, что я в очередной раз амортизировал то, что подходит лично мне и не факт что подойдет кому-то еще.

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

Лучше всего на меня в этой истории повлияли проработанные кейсы. Например, удачно выбранная книга по time series analysis иллюстрировала с примерами кода как можно анализировать различные свойства рядов данных. Естественно, ни одна книга не ответит на вопрос «а где альфа?» (то есть прибыль), ее нужно искать самостоятельно. Но по крайней мере это толчок в нужном направлении.

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

  • Оцените свой уровень и подготовьте список литературы

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

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

  • Не бойтесь задавать глупые вопросы и делать расчеты «не как все». Например, если вам не нравится дисперсия и вы хотите считать mean absolute deviation, узнайте плюсы и минусы того и другого

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

К сожалению, уровень усилий нужный для того чтобы понять современную финансовую теорию колоссальный. И это при понимании того, что инфу вы будете черпать из академических источников, а весь финансовый мир — банки, фонды, итд. — они лет на 10 ускакали вперед академии. Обидно? Да, но я как пешка в этом большом и жестоком мире мало могу сделать… ну, с одной стороны мало. С другой, если учесть то что репликация в облаке у нас бесплатна, почему это я как индивид не могу обуздать финансовые рынки?

«Квантовая» (от quantitative finance — количественные финансы) сфера является совокупностью трех направлений: финансов, математики и программирования. Математика является основой, она применяется к финансам и, в конце концов, кто-то должен сесть за компьютер и запрограммировать все это безобразие. К сожалению, в отсутствии альтернатив, этот кто-то — тоже я. Я пробовал искать себе помощников в этом нелегком деле, но оказалось что даже люди с высшим математическим не обучены тем областям которые нужны. А учить их долго и сложно.

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

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

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

Алготрейдинг привлекает меня тем, что я почти никого не кормлю. Да, я подкармливаю биржу и маркетмейкеров, но это не те проценты! Udemy у вас возьмет 50% дохода, PS или же, например, издатель книг — все 80% (ну, я попробовал и self-publishing, только что-то никто не берет). Вообще мне алготрейдинг больше подходит по идеологическим соображениям, т.к. мне крайне не нравится навязанная модель что я обязательно должен кому-то приносить пользу. 😀 Никому я ничего не должен! И в трейдинге весь код который я пишу, я пишу для себя, с моими стандартами качества и косяками, под мою, заранее известную, инфраструктуру.

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

Теперь-то вы, мои дорогие читатели, поняли почему я затеял весь этот эпос у себя в блоге. Суть всего этого в том, чтобы не только идеологически толкнуть вас в направлении финансовой независимости (думаю все образованные люди понимают что это the only way), но также рассказать про финансы и рынки. Так что до скорой встречи! ■

Written by Dmitri

3 декабря 2018 at 10:47

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

Tagged with ,

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

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