The Rules

Превед \o/

Данный блог — частная лавочка. Орган пропаганды одного, конкретно взятого человека. Меня.

Это не дискуссионный клуб.

Здесь вам не демократия.

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

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

Помните: всё, что вы скажете, я использую против вас.

Приятного чтения, зайки.

Рубрика: Без рубрики | Метки: ,

Кстати, да, я ведь ищу работу

Я, вроде как, разработчик информационных систем 80-го уровня, нет? Ну, по крайней мере, делаю вид, что это правда, если не сижу целыми днями дома, а где-нибудь в уютном офисе. И чё-то мне уже дома сидеть надоело. Хочу теперь найти хорошую работу по профилю, скажем, до 10 августа (чтобы был какой-то крайний срок).

View Alexey Evdokimov's profile on LinkedIn

Мой Круг — Алексей Евдокимов

Резюме на hh.ru — не нашёл, как там эмбед-карточку сделать.

Хорошую — значит интересную. Интересную — значит, никакого быдлоынторпрайза и прочих всяких биллингов. В Москву/Питер/другие города России переезжать категорически НЕ собираюсь, но вариант с удалёнкой и редкими командировками рассматриваю. А вот что касается релокейта в другие страны — тут я совсем не против.

У вас есть что мне предложить? Пишите / звоните мне в скайпе — workales, в гости зовите.

Рубрика: Без рубрики | Оставить комментарий

8 стрёмных букетов, или Давай сыграем в загадочное псто

Превед \o/

Давай сыграем в игру?

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

Напиши в каментах своё мнение (некоторое время они будут скрыты, так что не стесняйся предполагать любой бред), а где-нибудь через месяц, ну или когда мне будет не лениво, я расскажу, почему, зачем, and why so serious.

Итак, поехали.

24 июня

24 июня

4 июля

4 июля

10 июля

10 июля

17 июля

17 июля

13 августа

13 августа

3 сентября

3 сентября

16 сентября

16 сентября

14 октября

14 октября

А теперь — тебе слово. Мне очень любопытно узнать, что ты думаешь.

Рубрика: Суть | Метки: , | Оставить комментарий

Про Епам. The Grand Finale

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

Про бенч

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

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

В моём случае, например, второй путь — научиться чему-либо — оказался заказан, потому что по 80% курсов для Java специальностей я и сам вполне могу преподавать не хуже, чем минские ребята, а оставшиеся 20% лежат абсолютно вне моей области интересов (ну не хочу я заниматься андроидом, портлетами, и прочей undead нечистью).

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

Вообще, учитывая опыт Большого Проекта Для Зелёного Банка, к тому времени у меня уже вполне сложилось намерение уйти из конторы, потому что — на хрен такие проекты. Но первые полгода после развода я особо не рыпался — не стоит принимать решения подобного рода сгоряча, в расстроенном состоянии духа (ночами я иногда выл на луну. буквально), — а тут на новый год я съездил в Европу, чуток развеялся, и только после этого начал приводить мысли в порядок, и потихоньку собираться в кучу. И тот факт, что бывшая жена по-прежнему сидела в соседней комнате и регулярно мозолила мне глаза — это, сами понимаете, очень сильно меня раздражало (потом она уехала в Москву, но это было уже потом).

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

Так что я бы точно ушёл, но в один прекрасный день меня поймал на кухне Андрей Гребнев.

Про Андрея Гребнева

— Кто это вообще такой?

«Будущая звезда Ижевского и Удмуртского IT-бизнеса» (C) Вылегжанин о своём протеже и единственном (после того, как Купцов уехал в Москву) в офисе ПМе.

Личность примечательная. К.т.н. — чуть ли не единственный во всём офисе, кто имеет учёную степень. Характер жёсткий, скорее типично протестантский, чем нордический. Крайне честолюбив и амбициозен, скрытен, хитёр, себе на уме. Яростный поборник корпоративных ценностей, и цербер процессов. Мыслит нумерованными и маркированными списками (так же пишет у себя в бложике — единственный из всех, кого я знаю). Не стесняется в открытую использовать людей в своих интересах, впрочем, интересы конторы ставит выше любых других.

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

Что же касается технологического аспекта его деятельности, то некоторое время назад он гордо именовался Sun Campus Ambassador в удге, и возможности ынторпрайзной жабы действительно знает несколько лучше, чем кто-либо другой. Вот только, к сожалению, искренне верит, что при хорошем владении молотком любая проблема — это гвоздь.

Так вот, в один прекрасный день ко мне неожиданно подруливает Андрей Гребнев, и со своим фирменным британским акцентом такой говорит:
— Есть тут один небольшой проект на жабе. Простенький, на полгодика. Не желаешь его полидить?

Про внутренний хайринг

Тут надо рассказать о второй основной функции РМов. И если про первую я рассуждал с точки зрения рядового члена пула, то о другой надо рассуждать с точки зрения компании.

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

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

Такой вот бездушный bodyshop™.

Но к описываемому моменту ситуация с доступностью тел для ещё одного проекта на жабе сложилась довольно специфическая.

Про ситуацию

Кроме эпических проектов для Зелёных Банков, в Епаме одновременно ведётся ещё целая куча разной степени эпичности для всяких других категорий заказчиков, и, хотя народу в масштабе всей конторы очень много, всё равно периодически возникает острая нехватка свободных разработчиков какой-либо специализации, потому что их всех подчистую на эти проекты разбирают. То дотнетовцев, то джавистов, то ещё кого-нибудь.

И, прямо по закону подлости, обычно в это же самое время сваливается какой-нибудь очередной новый крупный заказчик, долговременное партнёрство с которым рискует стать стратегическим для всего бизнеса в целом, а народа-то свободного и нет. И с рынка привлечь кого-то очень сложно — он сейчас на подъёме, разработчики на вес золота.

Примерно так и вышло — контора (Другой Банк Чего-то Там) решилась заказать стратегическую разработку в Епаме, а свободного народу, кроме меня, и вон тех трёх ребят, в начале прошлого года не нашлось. Причём, раз пресейлом этого проекта занимался не кто иной, как Гребнев, он и выступил ПМом на старте, а не отвечающий за остальные проекты Другого Банка (включая Другой Банк Что-то Там) московский ПМ Лёша.

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

Команда А

The right man in the wrong place can make all the difference in the world. Помните, чем это закончилось? А нас таких было аж четверо.

Первый

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

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

Вот один такой, назовём его «Мыколай», пришёл в контору одновременно со мной, и за почти два года так ни в одном проекте, кроме учебных, так и не отметился. Развлекался троллингом в корпоративном скайпе (в отличие от вашего непокорного, толстым и неумным), смотрел видеозаписи курсов (без участия в практике абсолютно бесполезное занятие), и как я подозреваю, на кого-то фрилансил (что есть свинство даже и не по корпоративным правилам).

В общем и целом он далеко не дурак. Но по человеческим качествам чувак весьма… специфический.

Второй

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

К его несчастью, он успел поработать на проекте для Зелёного Банка, и, к моему огромному сожалению, не вовремя попался под горячую руку — мою в том числе, и потому поимел печальные рекомендации. Я уже рассказывал, что однажды устраивал разбор полётов, и как раз его код и попал в категорию эпической индусятины, которую я на протяжении двух часов прилюдно препарировал.

Что делает ему большую честь, все мои замечания Саша учёл, полностью исправился, и на начальном этапе проекта для Другого Банка Чего-то Там выступил в качестве основной движущей силы. Но после участия в проекте Зелёного Банка он, чувак более чем адекватный и чертовски работоспособный, рекомендации получил реально разгромные.

И ещё ему сильно не хватало практических знаний стека EE, потому что на жабу он переучивался с дотнета.

Третий

Что касается третьего (пусть будет «Вадик»), то с ним вышла ещё более неприятная история.

Как я тоже уже говорил, процесс карьерного роста в Епаме во многом зависит от выслуги лет, и начальные тайтлы назначаются вовсе не за реальные достижения, а по совокупности довольно субъективных оценок. Соответственно, «Вадик», которому около сороковника, довольно быстро получил тайтл D2, даже не смотря на то, что за те полтора года, которые он провёл в конторе, так ни разу не поучаствовал в промышленной разработке по основной специализации, Java.

Это так забавно… Ижевск — город очень маленький. Специалисты ходят кругами по одним и тем же конторам, и «Вадик» был одним из тех несчастных, кто после моего ухода из Ижсвязьинвеста (и до продажи конторы Пчелайну) не смог осилить запуск той версии биллинга, которую я для них написал. Соответственно, весь его предыдущий бэкграунд, разработчика 1С, прирос только ковырянием в Оракловских недрах старого ижсвязьинвестовского биллинга. Соответственно, в Епаме его и использовали как SQL-скриптописателя.

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

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

And the last but not least

Что же касается меня, то я — я просто терпеть не могу руководить рабочими группами.

Я прямо пишу об этом в своём резюме, и подчёркиваю на интервью.

Я открыто говорил об этом несколько раз Андрею, когда он заводил разговоры о том, что неплохо бы мне проапгрейдить тайтл до D4, — потому что я вполне подхожу по всем основным «техническим» параметрам, а soft skills можно прокачать.

Не спорю, подхожу, и прокачать смогу, наверное. Но — не хочу, причём категорически. И не буду. Мне этого ещё в удге хватило с избытком. Я был полностью уверен в этом и до проекта для Чего-то Там Другого Банка, а уж теперь и подавно.

Но Андрей Гребнев умеет добиваться своего. И меня он таки уговорил.

Хотя, может, и не он. Если честно, то я не знаю, на кой чёрт я согласился.

Может быть, мне захотелось уйти из конторы непобеждённым, может, проснулись остатки присущего мне когда-то авантюризма. Тем более, что по уверениям Андрея, проект обещал занять полгода максимум, и, если судить по первоначальному черновику ТЗ, составленному по итогам работы над пресейлом, он действительно таковым выглядел.

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

Про остальных

К счастью, что касается остальной команды, то с ними нам как раз повезло в том плане, что они оказались людьми, которым все мои особенности либо понятны, либо не критичны. С Ириной Н., лидом тестирования, мы постоянно зависали на кухне, московский ПМ Лёша оказался душевнейшим чуваком с крайне позитивным восприятием мира, аналитик Юля из Твери — вообще своя в доску крича…

И то, что мы сработаемся, стало понятно как-то сразу. (Мне в самом деле было очень приятно со всеми вами работать, ребята. Надеюсь, я вас не слишком бесил.)

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

Про поставленную задачу

Задача была поставлена, на первый взгляд, довольно несложная. У Другого Банка Чего-то Там туева хуча филиалов по всей стране, а основная для бизнеса операция, подлежащая автоматизации, включает в себя сбор большого количества анкетных данных клиентов. Такая здоровенная простыня, примерно сотни на полторы различных параметров.

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

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

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

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

Ну что ж. Говно вопрос, сделаем. 85% — это интерфейс, а на остальное у меня есть заготовка. Помните, чем я занимался в «Астарусе»? У меня осталась рафинированная выжимка исходников тамошней системы, в которой и тебе готовый синхронизатор, и управление справочниками, и ещё кучка всякого интересного, но не нужного. Каждый опытный программист держит такую библиотеку домашних заготовок — использовать её вполне безопасно, потому что за время проекта весь изначальный «затравочный» код каждый раз переписывается полностью. Но писать надо уже не с нуля.

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

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

Во-вторых, мы все очень, очень сильно ошиблись с масштабом роста хотелок заказчика. Буквально через неделю после начала согласования требований новые задачи повалили как снегопад, и ТЗ начало неконтролируемо пухнуть. Конечная версия получилась толще раза в три, а вот что касается сроков разработки… катастрофы не вышло, конечно, но к ноябрю мы не успели и половины.

Во-третьих, Гребнев попытался забить гвоздь известным ему молотком. Нельзя было делать эту систему на Java EE — её надо было делать на InfoPath Server или SharePoint Forms Services, которые решают как раз такую задачу, а не велосипедить собственную самобытную хрень на JSF. К сожалению, ни на пресейле, ни на старте разработки никто этого не понимал.

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

Про скорость света, или Почему JSF — говно

Как я уже говорил, после проекта для Зелёного Банка я изучил вторую половину технологий на букву J. Осталась третья, в которую мне категорически не хотелось даже соваться, потому что UI и веб-разработка на жабе — это один сплошной непрекращающийся факап и фэйспалм.

Локальный UI на SE — говно, потому что в языке нет нативных событий, а что касается веб-UI… я не знаю, какой безумный индус это всё проектировал.

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

Вы играли когда-нибудь в многопользовательские онлайновые игры?

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

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

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

Ну так вот, почему JSF говно. Ровно потому, что в нём любой тык на флажок в браузере ведёт к запросу на сервер, где обрабатывается кодом на жабе, который выстраивает по новой дерево элементов всего документа, выплёвывает кусок отличающегося HTMLя обратно в браузер, который там перерисовывается в форме.

А теперь представьте себе, что сервер в Москве, клиент во Владивостоке, а чекбоксов в форме несколько десятков…

А теперь представьте, что заказчик желает, чтобы приложение работало в IE7, в котором перерисовка элемента в зависимости от его положения на странице занимает чуть ли не логарифмическое время от начала документа к концу (при этом ещё и память течёт)…

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

И как вы думаете, что же было выбрано для проекта?

JSF библиотека PrimeFaces!

На то, чтобы отговорить заказчика от IE7, ушло полтора месяца.

Хьюстон, мы не умеем его правильно готовить!

Нет, Гребнев мне изначально сказал, что я де могу выбрать что угодно для веб-интерфейса, но, простите, что?

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

(И уж тем более, мне, как Java специалисту, было бы странно предлагать делать проект на чём-то другом. На PHP, например.)

Если бы я в тот момент знал, что реальные знания по JSF у них равны приблизительно нулю, я бы заставил их в быстром темпе изучить Velocity, потому что JSF, мало того, что невменяем идеологически, требует ещё и немалого опыта для правильного употребления, и знания всяких тонких нюансов, а при использовании «в лоб» приложение просто адски тормозит.

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

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

И что же получилось? Получилось, что когда приложение только-только вышло за стадию прототипа, оно начало просто адски, феерически тормозить. Какие-нибудь паршивые два десятка пользователей уже напрочь вешали сервер…

Впрочем, были проблемы и похуже.

Про «Вадика»

В самом начале, ещё перед официальным стартом разработки, чтобы определить, кто чем будет заниматься, я выдал ребятам по нескольку тестовых задач. На UI, на БД, и общего плана на SE — для того, чтобы поднимать дополнительные сервера, и делать всякие штуки типа первоначального заполнения базы, нужен был конфигуратор сервера. Я решил, что оптимально будет реализовать его как отдельное приложение на SE, а не вкорячивать сбоку всякие одноразовые сервисы в основное серверное приложение (не дай бог их потом вызовет кто-нибудь на работающей системе, и всё к чёрту обрушит).

С UI лучше всего справился Саша П., с базой — «Мыколай», а «Вадик»… А «Вадик» все три завалил вчистую. Правда, при этом он сделал одну подкупившую меня вещь — подошёл с тетрадкой, и попросил рассказать, как это всё делается правильно.

Ну ОК. Я рассказал, показал, объяснил. «Вадик» сделал большие глаза, и долго благодарил за науку. Мне бы тут сделать определённые выводы, но мне некогда было их делать, потому что надо было разрабатывать ТЗ, и заниматься прочей бумажной работой.

Так что по остаточному принципу именно он и получил разработку конфигуратора.

А ещё он зачем-то попросил меня «рассказать об архитектуре БД». В смысле, не поленился распечатать схему (затравочную на тот момент) на листе А3, и попросил объяснить, зачем тут всё, и почему так, а не иначе. Я тоже не придал особенного значения, и объяснил на пальцах. У остальных ребят проблем с пониманием модели почему-то не возникло.

Прошла неделя.

Процесс я вёл по отработанной ранее на сверке для Зелёного Банка схеме — с ежедневными утренними митингами, короткими конкретными задачами, и ежевечерними подходами к каждому участнику. Этакий недоаджайл без фанатизма. В принципе, достаточно эффективная схема.

И вот прихожу я как-то к «Вадику» вечером, посмотреть на что он там наклепал по конфигуратору (а клепал он что-то ну очень медленно и крайне некачественно), а он сидит с выключенным монитором, и втыкает в схему БД. Прямо медитирует, глазами её ест.

— «Вадик», — говорю, — зачем ты схему БД гипнотизируешь? «Мыколай» занимается БД, а у тебя задача сейчас другая. Или ты её уже сделал? Почему не залил в репу тогда?
— Нет, не сделал.
— В чём затруднения? Чем тебе помочь?
— Расскажи мне про архитектуру БД. Я её не понимаю, — и глазками хлоп-хлоп.

Так. Что-то не сходится в доме Облонских… Впрочем, время ещё есть. Объясняю ещё раз, уже подробно. Часа полтора объясняю, все уже разошлись, рабочий день закончился. «Вадик» всё законспектировал в тетрадку. Под конец я заставил его включить монитор, и пройтись по его текущей задаче — и точно так же законспектировать мои замечания.

Прошла ещё пара недель. Все уже пашут, как негры на плантации, и коммитят по нескольку раз в день, у меня дымится мозг от скайповых разговоров про ТЗ, приложение даже начинает запускаться и как-то выглядеть, даже начальный план тестирования начинает вырисовываться, а долгожданного коммита конфигуратора от «Вадика» всё нету и нету. Я каждый день сижу у него по полтора часа, и разбираю почти каждую строчку кода (впрочем, добавляется их в день максимум штук по десять, и каждая по-своему ужасна), он тщательно конспектирует мои замечания в тетрадочке. Я начинаю потихоньку закипать.

Наконец, «Мыколай» в грубой форме (а в другой он и не умеет) доводит до моего сведения, что «Вадик» постоянно достаёт его кучей странных и непонятных вопросов по структуре БД…

— «Вадик», что за хуйня с тобой, вообще, происходит? — наконец, не выдерживаю я.
— … — молчит, смотрит в пол.
— Блядь, «Вадик»! Тебе до сих пор непонятна твоя задача?
— Понятна…
— На хуй ты тогда лезешь в чужую, и всё время отвлекаешь коллегу? Почему ты не можешь выдать мне решение?
— Ты знаешь, Лёша, мне кажется, что мы тебе на проекте не нужны. Ты крутой, ты и сам всё без нас прекрасно сделаешь, а мы тебе будем только мешать. А я не хочу писать конфигурааааатор, я хочу изучать архитектууууууру, — заскулил по-собачьи «Вадик».

Ебать мой хуй…

Я сосчитал про себя до десяти, и затем подробно перечислил «Вадику» служебные обязанности D2, а также о том, какие конкретно ожидания у меня связаны с их добросовестным исполнением им, как моим подчинённым в виду его участия на проекте, где я выступаю в качестве лида разработки. Голос у меня звенел, и пару раз сорвался, конечно, но я старался не заорать.

«Вадик» моей пламенной речью наконец, проникся, и, наконец, выложил всё наболевшее начистоту. Во-первых, на жабе он никогда ничего не писал. Весь его программистский опыт — это много лет ковыряния в 1С, и потом работа с Ораклом. В Епам он попал на волне массового набора, и смог на входном собеседовании пустить пыль в глаза Гребневу, а затем ему повезло не попадать на проекты, где пришлось бы писать что-то на жабе. Во-вторых, на проект ему в реальности насрать с колокольни, и всё что, ему вообще от жизни надо — это приходить на работу, сидеть 8 часов, ковыряться в чём-нибудь простеньком (SQL-скрипты, например, писать), и получать за это зарплату. В-третьих, D2 он получил, пользуясь своими soft skills, и природным обаянием, которое на меня, почему-то, не действует, чему он изрядно удивлён.

Блять, мне на проект попался Java D2, который не знает, чем интерфейс отличается от класса… Который хочет получать зарплату за 8 часов сидения на работе… Который врёт РМу, чтобы получить повышение, и вообще всем остальным… ЕБАТЬ ЖЕ Ж МОЙ ХУЙ ТРИТЫСЯЧЕПЁЗДЫМ ПРОЕБОМ!

Я тотчас же вызвонил Лёшу, и выложил ему всё, что думал по этому поводу. Гнать «Вадика» с проекта ссаными тряпками, и по возможности — нахуй из конторы.

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

А немедленной замены «Вадику» не нашлось. Я сунулся было к Диме — он был его РМ, но «Вадик» уже успел ему к тому времени пожаловаться на злобного меня, и разговор получился довольно крупным, и не в мою пользу, — зачем я давлю и унижаю ценного специалиста, о котором у всех только положительные отзывы? да я сам козёл, раз не смог его заинтересовать! да я вообще дерьмовый лид, и все собаки должны быть повешаны на меня! «Вадик» остаётся на проекте, и точка!

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

Наконец, пришлось писать письмо Вылегжанину (поставив в копию Лёшу), и только тогда дело получило хоть какой-то ход. Правда, для этого Лёше пришлось использовать уже тяжёлую артиллерию в виде московского начальства, и только так «Вадик» покинул, наконец, проект. For the goodness. Сожрав у меня и Лёши кучу времени, нервов, и обрушив проектный план, потому что выгнать нам его разрешили только через месяц, за который он так и не доделал несчастный конфигуратор (в итоге его дописал я).

Впрочем, контору он не покинул. Его оставили на поруки с намерением доучить до настоящего Java D2. Учить пришлось, действительно, с самых азов.

Замену ему нашли, но не сильно лучше.

Шило на мыло

Опять же, единственным, кто нам мог выделить человека в Ижевске, был Гребнев. У него по прежнему ни шатко ни валко шёл пресейл, над которым трудились остававшиеся бенчующиеся ребята, и отдавать кого-то из них он абсолютно не желал. При этом формально я мог проводить интервью с любым из них. Блин. Да наплевать мне на политику… Хрен с ним, ну поссорюсь я с Гребневым, один чёрт после такого эпизода я по окончанию проекта точно сваливаю из конторы.

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

Единственным, кто честно сказал, что ему глубоко фиолетово, на каком проекте работать, был ммм… как бы его назвать… ну пусть будет «Царёв». Ну так вот, он сказал, что Гребнев будет против, но ему реально насрать, потому что у меня вроде как система более прикольная.

Я выдал ему задание на транспортный слой междусерверного синхронизатора (нужно было обеспечить гарантированную доставку) — и он выдал на удивление продуманное решение.

Я бы даже сказал, немного перестраховочное. Слегка переинженеренное. Чертовски высокоабстрактное. С пугающим вниманием к мелким деталям, но в общем и целом — недоделанное.

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

Если я — клинический тормоз, и выдаю код в неделю по чайной ложке, то «Царёв» принципиально водит задним ходом, ориентируясь исключительно по зеркалу.

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

Через несколько месяцев мучений, когда на проекте был уже другой лид, более молодой и горячий, быстрее меня задолбавшийся тормошить и разбираться в хитросплетениях построений «Царёва», мы задали ему тот же самый вопрос — что за хуйня с тобой происходит?

— Мне интересно сидеть на попе ровно и пилить один и тот же проект десять лет. Оптимизировать его, оптимизировать его вусмерть, — улыбаясь, ответил «Царёв», — И можно, я уйду с проекта, а то вы для меня слишком быстрые.

Лицо с чугунной задницей. Но с чувством юмора. Редкий случай. Саша Б. его в конце концов отпустил.

Про кризис на проекте

Вся эта ерунда с «Вадиком» стоила мне огромных потерь психической энергии. Моё дело писать код, а не скандалить со всякими придурками. Я вообще на такое не подписывался…

К середине лета у меня было уже как-то работающее приложение, и огромный дополнительный скоуп к ТЗ, который надо было раскидать, и из-за которого напрочь рушились все планы, тем более что общий темп разработки мог выдержать только Саша П., а остальные, включая меня, выдавали результат крайне медленно. Плюс ко всему, Ирина провела нагрузочное тестирование, по итогам которого последовал неутешительный вывод — мы реально приготовили приложение очень неправильно. Такие нагрузки на сервер ненормальны. Нам однозначно нужен кто-то, кто смог бы нас научить.

Вдобавок ко всему, «Мыколай», пользуясь тем, что в Епаме довольно демократическое отношение к рабочему времени, и сидит он в другой комнате, начал довольно заметное время отсутствовать. Пока он выдавал требуемый результат, я смотрел на это сквозь пальцы, но после того как он просрочил несколько заданий, и я застукал его за откровенным леваком, притащенным неизвестно откуда, он начал давать некоторого джазу. Не особенно приятно, когда тебя постоянно пытаются троллить твоими ошибками — не ошибается только тот, кто ничего не делает, и естественно, в моём коде баги тоже встречаются. До того, как я порекомендовал его на D2, он вёл себя намного лучше. Видимо, зря.

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

И тут ещё Гребнев, спрашивая, как у нас там дела, случайно проболтался, что тот календарный план по тому ТЗ, которое вышло из пресейла — он рассчитал на всех D3. Когда я попросил его повторить это ещё раз для истории, он по обыкновению растворился в воздухе.

Если взять D3 и добавить к нему D1, в итоге не получится два D2. Будет два D1, потому что караван всегда идёт со скоростью самого медленного верблюда. Соответственно, все сроки изначально надо было умножать на три. Вот же ж дерьмо… а я ещё удивлялся, почему оно всё такое быстрое.

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

Нужно было срочно спасать проект от фиаско, любыми средствами.

И да придет мессия

Лёша поднял всех на уши, и мессию таки нашёл. Мессией оказался Саша Б., тот самый чувак, который изначально участвовал в пресейле, который реально очень хорошо знает JSF, и который уже несколько раз давал нам крайне дельные советы.

Я не знаю, при помощи какой дипломатии он вырвал его из лап Гребнева. Сам Саша Б. потом рассказывал, что по факту всё это время он торчал на бенче и зверски скучал, но уйти к нам до вмешательства Лёши у него не вышло бы.

Ну так вот, Саша Б. — молодой, горячий, прекрасно знающий своё дело программист. Пришёл на проект, и буквально за неделю вытянул производительность с того света. Заодно научил нас всех, как правильно пишутся веб-приложения на основе JSF. М-да, и близко не так, как Саша П., на которого я взвалил задачу по UI, себе это представлял. Он быстро привёл всё в порядок, и наконец-то можно было добавлять новые фичи, не боясь всё окончательно обрушить.

А учитывая скорость обоих Саш — можно было уже переверстать план с учётом новых фич таким образом, чтобы отодвинуть дедлайн, обосновав его увеличением скоупа, и не соврать заказчику.

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

Не вижу в этом никаких проблем, даже наоборот, я просто счастлив заниматься только тем, что я умею лучше всего — код писать. Так что от лидерства я с огромным облегчением отказался, а новым лидом стал Саша Б. Вот про него нельзя сказать, что он был этому особенно рад, но организовать работу по новому плану у него получилось явно лучше, чем у меня по старому. Опять же, нельзя забывать, что теперь мои руки на все 100% оказались заняты в разработке, а дорвавшись до программирования, я ещё вполне способен дать жару.

Архитектурные задачи мы первое время решали совместно, пока он не научился находить правильный баланс между своим радикальным «всё на хрен переписать!» и моим консервативным «если хоть как-то работает — не трогай», и в целом без особенных конфликтов. Хотя, признаюсь, мне иной раз было трудновато успевать за его ходом мысли.

Терпеть трололо и медлительность «Мыколая» Саша Б. особенно долго не стал, и в итоге смог от него избавиться (впрочем, тот сам с радостью покинул контору), а на его место пришёл другой, уже совершенно нормальный D1.

Короче, наконец-то, после смены почти всей команды, пошла нормальная разработка. Через полгода после старта проекта, но пошла как надо…

Итого

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

Я мог бы ещё понаписать всякое, но мне уже надоело. Надо поскорее выкинуть из головы, и забыть весь этот кошмар.

 

FIN.

Рубрика: Болтовня | Метки: , , , | Комментарии (4)

Про Епам. Часть 3. Процессы, глава 2. Часть 4. Люди, глава 2

Да уж.

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

Что я хочу сказать по данному поводу? Я хочу сказать:
— Спасибо вам большое, дорогие мои читатели! Я очень вам признателен! За прошедшую неделю только благодаря вам я выучил много новых способов «убедительно» «доказать» человеку, что он мудак. Не уверен, правда, что они мне когда-либо пригодятся — обзывать людей мудаками за высказанное ими мнение о других людях не в моих правилах. Но всё равно спасибо! Я так люблю вас, зайки! Только вы не забывайте в следующий раз сразу же сказать, что «всем известно, что Евдокимов ест детей и читает Гитлера на ночь, поэтому всё, что он говорит — ложь и бред».

Ну да ладно. В прошлый раз я пообещал рассказать о других персонажах из Ижевского офиса.

Вообще, по отношению к людям я обычно довольно холоден и безразличен. Как я уже говорил, по умолчанию для меня все — идиоты, пока не докажут обратное, и по умолчанию же каждый считается достойным изучения (в моих терминах — прикольным), пока, опять же, либо не докажет свою безблагодатность (95% контингента, обычные нормальные люди), либо не перейдёт в ранг людей, равных мне (оставшиеся 5% ёбнутых на голову фриков, с которыми я дружу, или которых я люблю).

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

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

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

Про ресурсных менеджеров

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

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

Так вот, основная разница состоит в том, что в иерархической организации любой руководитель отдела подбирает работников себе и сам, и далее полностью за них отвечает всё время, пока они ему подчиняются, а в плоской структуре на основе ресурсного пула — сотрудники подбираются в контору, и подчиняются менеджеру проекта (ПМу) на время их занятости в конкретном проекте, но только по их проектным активностям, а весь остальной надзор за участниками пула осуществляет другой человек — т.н. ресурсный менеджер, или, для краткости, РМ.

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

И если в типичном отделе у ведущего специалиста общее число подчинённых редко когда переваливает за полтора десятка (причём, ещё начиная человек с десяти они уже обычно начинают делиться на рабочие группы или сектора с замзачальника отдела во главе), то размер ресурсного пула редко когда перешагивает эту границу сверху вниз, и никаких заместителей при этом у РМа нет.

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

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

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

В реальной действительности ведь всё всегда очень сильно упирается в конкретных людей. И они отнюдь не ангелы.

Когда я только пришёл в Епам, РМствовал там большей частью сам Вылегжанин, равноудалённый от всех, кроме весьма узкого круга самых первых сотрудников офиса и, не побоюсь их так назвать, друзей, один из которых, Руслан Грабар, тоже заведовал маленьким пулом дотнетчиков. И если Грабар реально мог заниматься профессиональным развитием своих ребят как программистов, потому что он сам программист со стажем, то в какую сторону ОВ смог бы профессионально развивать, скажем, меня — вопрос остаётся открытым.

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

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

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

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

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

Взяли нескольких D4, и механически повысили до РМов.

По какому вообще принципу происходит карьерный рост в конторах типа Епама?

Про процесс карьерного роста

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

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

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

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

То есть, это были вполне адекватные ребята, показавшие за несколько своих последних проектов неплохие результаты, при этом играя строго по установленным по правилам. И вот их выхватывают из производства, галопом читают им тренинг по soft skills, и назначают РМами.

Типа, на вот тебе табун таких же, как ты, — давай, рули.

Про ресурсных менеджеров (contd.)

Гм.

Вот он я — типичный, сферический в вакууме сеньор.

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

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

Но что будет, если выдать мне 20 программистов рангом от D1 до D3, которые не объединены никаким общим проектом, и поставить задачу «следить за ними в самом широком смысле, наставлять, развивать их карьеру, и повышать среди них сеньорити»?

Я пошлю вас в задницу, и уволюсь в то же день.

Ещё не хватало, людьми управлять… Какая гадость… Да мне это вообще неинтересно, я, блин, программист, а не хренов менеджер. У меня эти ваши долбаные soft skills откровенно никакие, и я не хочу их развивать, потому что мне тупо неинтересно валандаться среди людей… И уж что вообще никак не сообразуется с моими личностными потребностями, — так это воспитывать из кого-либо сеньоров.

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

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

И вот взяли пятерых D4, приподняли над теми проектными грядками, где они сидели (но до конца ни одного из них оттуда не выдернули, то есть, новые обязанности свалились на них в нагрузку к текущим проектным), и сказали, что теперь они РМы, и вот эти вот ёжики (по паре десятков штук на каждого) теперь будут жить с ними…

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

Так оно и вышло.

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

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

Второй из чуваков, которые меня тогда собеседовали, Дима (привет, Дима!) тоже через некоторое время стал РМом. Наверное, он единственный, кто действительно этого искренне хотел. К сожалению, Диму я вынужден огорчить: про тебя у меня есть несколько свидетельств твоих бывших ребят (в основном, ушедших в итоге из конторы), что ты их зажимаешь. Помнится, мне ты несколько раз весьма доходчиво объяснял, что нельзя быть настолько предвзятым и упёртым. Я-то понял, спасибо, но почему ты себя ведёшь как Мистер Нет? Ребят надо продвигать и поддерживать, а не доказывать им, что они ещё не готовы.

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

Про остальных программистских РМов я мало чего могу сказать — как джавер, с дотнетчиками и плюсерами я не особенно пересекался, но исходя из кухонных разговоров, могу сделать вывод, что практически никто из них не относился к своим наставническим обязанностям как более чем пустой формальности. А уж что касается умения оказать психологическую поддержку… то тут я вообще могу только трёхэтажно выразить своё неодобрение политике конторы по воспитанию руководителей из числа программистов. Категорически не те люди на такой должности.

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

Пожалуй, только тестировщики полностью довольны своим РМом.

Остальные большие люди

На сотню с лишним разработчиков приходится не так уж и много народу не из delivery unit (разработчики официально доставляют, ага). Есть офис-менеджер-делопроизводитель, из которой невозможно без дополнительного пинка через РМа (или даже двух пинков) выбить в срок ни одной справки, потому что «ой, у меня так много работы, я сегодня не успею, всё завтра сделаю».

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

Отдел эйчаров — про текущий состав которого я ничего написать не могу по причине, указанной в несколькими страницами выше. Впрочем, я же могу написать про бывшего эйчара, Сашу Шабанова. Человек он в узких кругах широко и заслуженно известный. И, пожалуй, нет никого, кто лучше бы понимал и персонал, и руководство, и действительно мог бы направлять людей в верное русло, как с точки зрения компании, так и, кажется, их самих. К сожалению, он вскорости после моего прихода ушёл. Жаль, он просто идеальный эйчар в моём понимании.

И, наконец, есть ещё «будущий великий кормчий ижевского офиса Андрей Гребнев» — на которого, единственного из всех, я на самом деле несколько злюсь. О причине этого я расскажу в следующей, заключительной серии.

Маленькие люди

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

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

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

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

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

Прекрасные люди.

Только я, придурок, всё нёс какую-то хуйню про «сделать мир лучше» и портил им психологический климат.

 

Окончание следует.

Рубрика: Болтовня | Метки: , , | Комментарии (5)

Про Епам. Часть 4. Люди, глава 1

О, вот она, самая интересная тема. Для многих она чревата невыносимой болью в заднице, поэтому для начала внимательно прочитайте (минимум два раза) нижеследующий

Disclaimer

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

Интересно.

Интересно в том смысле, насколько же мировосприятие у людей пассивное, насколько оборонительное, и настолько же неконструктивное. Меня это всегда поражало. Стоит только обратить внимание людей на их недостатки, особенно сразу группы, объединённой какой-то формальной связью, особенно публично, как среди них находится такой, кто, потеряв всякую адекватность, моментально оскорбится до глубины души, и с пеной у рта будет вступаться за «несправедливо обиженную» толпу.

Это очень смешно.

Запомните: У меня не было, нет, и никогда не будет цели кого-то обидеть.

Ещё раз: У меня не было, нет, и никогда не будет цели кого-то обидеть.

Я критикую, всегда аргументированно, и настолько объективно, насколько могу. Да, я беру на себя смелость критиковать, хотя сам отнюдь не идеален, а мой стандарт для людей, достойных уважения, почему-то задран очень высоко. Но учтите, что мой стандарт для себя самого — он задран ещё выше, и я осознаю, что ему в данный момент не соответствую. Так задумано. Это стандарт на вырост, к которому мне предстоит стремиться всю жизнь, потому что он взрослеет и ужесточается вместе со мной.

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

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

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

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

Если бы меня самого не критиковали, я бы был унылым говном. Я такой же точно человек, как и все, следовательно, без помощи других людей я точно так же не могу видеть все свои косяки самостоятельно, значит, и не могу преодолеть их. Без других людей я не могу стать лучше. И только, исключительно! благодаря постоянной критике окружающих меня всю жизнь людей я — Алексей Евдокимов, а не хуй собачий. Критика — это моё оружие для уничтожения моих недостатков и мой инструмент для улучшения моего меня.

Итак, запомните: Постоянно находиться в защитной позиции, и огрызаться на аргументированную критику — это позиция глубоко незрелого, пассивного, слабого, и самовлюблённого человека.

А на обиженных — и вовсе воду возят.

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

И ещё. Если вам до сих пор кажется, что я лью на кого-то грязь — идите в жопу, и там сдохните. Нам с вами не по пути.

Про человеческий ресурс

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

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

Вообще, если в конторе начальство называет работающих в компании людей ресурсом — почему бы ему сразу не называть его свининой?

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

И единственный эффективный способ управлять людьми — это сделать их своими союзниками. Добиться того, чтобы их цели и интересы совпадали с целями и интересами бизнеса, и твоими, как руководителя. Речь не идёт о интересах по жизни вообще (мы же о работе говорим), а конкретно в данном рабочем окружении.

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

К сожалению, в Епаме с пониманием этих фактов на макроуровне полнейшая жопа. Там к людям в масштабах всей компании принято относиться как к свинине.

Простой факт. Однажды в Ижевский офис приехало высокое начальство (различные директора по СНГ, всякие там Торосяны и Овсяники с Агафоновыми; не помню уж по какому поводу, за мою бытность они раза четыре приезжали), и они шастали по офису, ведя разговоры вслух. Остановились в коридоре, и несколько ребят невольно подслушали такой диалог (он им хорошо запомнился, они его потом пересказывали практически одинаковыми словами):
— Так что, у нас всё же компания, в которой мы платим высокую зарплату? Стремимся к комфорту сотрудников? Или что-то другое?
— Нет, у нас публичная компания, главными в которой являются интересы инвесторов. Мы должны максимизировать прибыль для них. А сотрудники у нас ресурс.

Я не знаю, кто задал вопрос, и кто ответил. Кто-то из директоров по СНГ.

Ну, про высокое руководство всё понятно. Они определяют общую политику на всю контору.

А на местах тон задают директора филиалов. И Ижевский — самый унылый из всех, о которых я могу судить. Я сам ездил в Самару и Москву; со слов бывших коллег, которым доверяю, могу ещё рассуждать о Сергиевом Посаде и Твери, — и везде атмосфера в офисе намного светлее и уютнее, чем здесь. Даже в Тухлятти.

Чтобы понять, почему так, стоит порассуждать о личности директора ижевского филиала, Олега Витальевича Вылегжанина.

Про Вылегжанина

(Update: ОВ сослался на это псто из своего фейсбука, так что сюда сейчас набегут хомячки. Привет, хомячки. Welcome. Каменты модерируются, можете писать что хотите, несовпадающие с моим мнением я потру и никому не покажу. Шутка.)

Личность на местном уровне более чем известная, конечно. Заслуженный мастер самопиара 80-го уровня, самопровозглашённый варяг, и любитель total metal (что это за хрень такая, известно, пожалуй, только ему самому, впрочем, у него достаточно всяких самобытных заморочек).

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

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

Заочно — в этих ваших интернетах — знакомы мы очень давно. Ещё в 2001 году, когда я только-только начинал карьеру веб-программиста в Виртуальном Ижевске, у тамошнего директора возникла идея собрать тусовку местных разработчиков, как в офлайне, так и в онлайне. Идея была воспринята на ура, и офлайновое сообщество очень быстро собралось.

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

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

Мне ужасно жаль, что у меня не сохранилось ни базы, ни исходников «форума веб-мастеров», сейчас было бы прикольно почитать те разговоры. Но увы. Впрочем, после того, как первый форум бесславно дал дуба, тусовка™ уже успела достаточно сложиться, чтобы перейти (правда, уже без инсайдов и закрытости) на второй, третий, и так далее — она и поныне живёт на Ижайти, который даже не форум, а блог.

Но вернёмся в далёкое прошлое. Когда я возглавил отдел веб-разработки ММЦ, ЦВТшные архаровцы под управлением Олега Витальевича оставались моей главной головной болью на все годы. Стоило только выложить анонс любого проекта на очередном тусовочном форуме, как моментально налетали «феи» с «гоблинами», и смешивали его с говном. Впрочем, страдали не только мои анонсы. Война велась в формате ЦВТ vs world, и world, как правило, её проигрывал, как только Вылегжанин давал залп из своего главного калибра. То есть, ввязывался в срач лично.

А демагог из него просто образцовый.

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

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

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

Так что мы впервые поздоровались, и единственный раз, когда беседовали в офлайне дольше трёх минут, — это только на оффере.

Про Вылегжанина ходит множество всяких историй. Многие достаточно анекдотичны, а довольно немалое количество народа описывает его как человека по меньшей мере странного, а то и вовсе неадекватного. Как минимум, с манией величия в тяжёлой форме. Я могу добавить ещё пару анекдотов к портрету.

У Вылегжанина в кабинете стоит на подставочке катана — я понятия не имею, насколько она бутафорская, но стоит. Когда одна из девочек-тестировщиц после учебного центра пришла на оффер, Вылегжанин зачем-то взял её в руки и начал перед носом у девочки ею размахивать. Зачем, почему он это сделал? Да чёрт его знает. Я вот тоже люблю устраивать спонтанные перфомансы, только у меня катаны нет. А что, прикольно девочку постращать, чтобы знала место.

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

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

Но почему, спросите вы, раз директор такой весёлый, филиал у него такой, по моим словам, унылый?

Дело в стиле руководства. Как бизнесмена-антрепренёра, я Вылегжанина вполне даже понимаю, и все его выверты на тему пиара его конторы посредством пиара самого себя тоже вполне оправданны, так как повышают узнаваемость. Он — это ходячий брэнд ЦВТ. Эта мишура типа «total metal», все эти хардроковые принты на майке, напускная альфа-самцовость, и прочие эскапады — да ради бога.

Но вся эта хрень совершенно не вписывается в рамки Епама.

Если ЦВТ это секс, драгс, рок-н-ролл, то Епам — это Большая Скучная Контора, в которой Полиси. И Вылегжанин, наёмный менеджер, следует этой самой ебучей «полиси» по букве, а не по духу.

То есть, он нацепил на себя маску Большого Босса. За руку не здоровается, ведь если Большой Босс, проходя по коридору, будет здороваться с каждым за руку, у него рука отвалится, потому что в коридорах Большой Компании шастает слишком много народу, да и не упомнишь, с кем здоровался-то. Поэтому, здороваться надо Начальственным Кивком. Однако, для конторы, в которой официально принято обращение «на ты», начальственный кивок — это нонсенс.

Также Большие Боссы не заглядывают в столовую, они Кушают в своём кабинете (а секретарь приносит им еду на подносике), дабы не оскорблять себя видом чавкающих нямку низших чинов.

Сейчас вы спросите, что за хрень я несу. Нет, ребята, не хрень. Я очень хорошо знаю, что несу.

Давайте я объясню для вас.

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

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

Так что, казалось бы, хрень, ан нет.

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

Поэтому Вылегжанину никто не верит. Когда он на очередном собрании начинает исполнять свою boss music, а исполняет он её чрезвычайно долго и нудно (потому как демагог, и вовремя останавливаться не умеет), только новички слушают его раскрыв рот, и то — первый раз. Остальные либо зевают, либо с трудом сдерживают ржач.

Я как-то предлагал составить bullshit bingo Vylegzhanin edition, состоящую из «большая компания», «стабильная зарплата», «СиДиПи», «шведские матрёшки», «Андрей Гребнев наш будущий великий кормчий», и прочей год из году повторяющейся риторики, но народ забраковал идею в виду её унылой безблагодатности.

И с этой безблагодатности как раз и начинается общая атмосфера филиала, которая скорее давит, чем стимулирует.

Но это всё внешнее, скажете вы, и будете абсолютно правы. Это всё внешнее, и внешне директор Ижевского филиала Епама — ходульный персонаж, карикатура на Большого Босса, который размахивает катаной перед девочкой-джуниором на оффере и с умным видом распоряжается, куда в комнате отдыха лучше поставить теннисный стол (мы сами поставим как нам удобно, спасибо за заботу, Олег Витальевич; кстати, почему вы решили, что тренажёр-степпер — это опасное спортивное оборудование, и в офисе его не должно быть?).

Да, вот ещё (и совсем некстати), не могу не добавить забавный штрих к портрету Вылегжанина. Так получилось, что мы с ним с разницей в семь лет закончили один и тот же, самый \m/ \m/ в нашем маленьком городке лицей, и оба одинаково любим этим обстоятельством прихвастнуть (впрочем, любой тридцатошник любит им прихвастнуть, илита же, не то что вы, люмпены). Могу заявить — Вылегжанин такой фрукт не потому, что он закончил «элитную» школу. Большинство наших куда больше похожи на меня (мы ёбнутые на голову распиздяи), а он — он один такой, особенный, на понтах. Да и, честно говоря, проучился он там недостаточно, чтобы по-настоящему впитать дух Школы, в отличие от вашего покорного. Да мы таких, кто пришёл на последние два года, настоящими тридцатошниками-то и не считаем вовсе, хе-хе-хе. Типа, я сейчас так глупо съязвил. Извините. Надо же какашкой кинуть-то, и грязью облить.

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

А в следующей серии я продолжу рассказ о людях.

Рубрика: Болтовня | Метки: , , , , | Комментарии (21)

Про Епам. Часть 2. Проекты, глава 2. Часть 3. Процессы, глава 1

Nun so, продолжим.

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

Пиши SELECT, блядь! Пиши, сука, SELECT!!

Это не я матом ругаюсь. Это дословная цитата из координатора/ПМа со стороны Епама.

В тот момент, когда первоначальную команду лидов клюнул в жопу жареный петух, и стало понятно, что демократия до добра не доведёт, было решено взять кого-нибудь в качестве проектного пиночета. Особо выбирать не пришлось — среди всего персонала, имевшего и опыт успешной поставки продуктов для Зелёного Банка, и достаточный уровень seniority, буквально полтора человека могли справиться с этой ролью, и один из них (к моему вящему несчастью) как раз обретался в Ижевском офисе.

Правда, одно но — Купцов дотнетчик, и с технологическими «особенностями» платформы Java EE, и уж тем более в её кривущей ИБМовской реализации, вообще знаком не был. Дотнет таки намного проще, логичнее, и предсказуемее в использовании. Так что первое время он довольно-таки тяжело врубался в саму суть проблем, с которыми нам приходилось героически бороться, а когда до него дошло, то опять, же процитирую, «ой, блядь, какое же говно эта ваша сраная Java и ёбаный IBM, это пиздееец» было, наверное, самым мягким, что я от него услышал. (Вообще, из всего персонала он единственный, кто не стесняется разговаривать матом в два-три этажа, и посылать коллег на хуй открытым текстом. По контрасту с остальными overly вежливыми ребятами это даже как-то радует.)

Ну так вот, предыдущий опыт общения с заказчиками из Зелёного Банка действительно закалил Купцова достаточно, чтобы он смог и привести внутриепамовские процессы на проекте до относительно вменяемого состояния, и при этом состыковать их с общей невменяемостью той стороны так, чтобы разработка действительно стала доходить до стадии сдачи и внедрения. Тут я, безусловно, снимаю шляпу. Но вот методы при этом он задействовал совершенно пиночетские. Я с разными начальниками работал, в том числе и с форменными самодурами, но Купцов — самое откровенное и беспардонное хамло, с кем мне когда-либо приходилось за 15 лет сталкиваться.

Цитата, вынесенная в заголовок, — это одна из его любимых присказок, приобретённая как раз на предыдущем проекте для Зелёного Банка, где ПМом был ещё более хамистый чувак с той стороны, и, к сожалению, общий стиль управления он перенял именно от него же. То есть, вместо того, чтобы мотивировать людей решать проблемы самостоятельно, он предпочитает набрасываться, навалившись со всей своей безудержной силищей и авторитетом, и разруливать траблы в режиме ручного управления с грацией и изяществом носорога в посудной лавке. Такой вот кровь-кишки-распидорасило менеджер, который может прийти, сесть за спиной, и с матерными прибаутками вырезать на хрен результат твоего же труда за пару месяцев из проекта твоими же руками. И попробуй возрази.

Купцов не распутывает узлы. Он их рубит. В большинстве случаев этот подход достаточно эффективен, но вот конкретно в отношении меня — не прокатывает. Меня нельзя заставить. Со мной можно только договориться, и аргументация должна быть не в духе «этот твой подход — говно, надо делать вот так, как я сказал», а по-нормальному объяснить. И вот ещё: если я сделал говно — я ведь знаю, что сделал говно, но не просто так, из вредности, а потому что были объективные причины, и сделать по-нормальному с теми начальными условиями не получалось. Лучше иметь половинчатое и кривое решение, но работающее, чем вообще никакого, правда ведь?

В конце концов у нас с Купцовым дело дошло до открытого конфликта, и я с проекта ушёл. Но не раньше, чем потушил ещё один пожар.

Тушение проектных пожаров по-пионерски

Никому не нужно объяснять, что такое российская «большая тройка» телекомов?

У каждого из них, слава богу, достаточно развитые и already matured биллинги, чтобы с ними можно было автоматически взаимодействовать по надёжному и гарантированному протоколу, если, конечно, у тебя есть соответствующий по уровню биллинг. Одной из важных составляющих частей этого протокола взаимодействия является пакетная сверка. То есть, раз в сутки, либо раз в ~00 000 штук происходит проверка подтверждённости сразу большой пачки платежей, проведённых клиентами биллинга в пользу оператора. В случае МТСа, например, это где-то 180 страниц XMLных спецификаций.

К несчастью, на тот момент, когда на проекте вспомнили про необходимость сверки с операторами большой тройки, внутренности подсистем, которые должны были выступать в качестве биллинга со стороны Зелёного Банка, были ещё совершенно сырые, и ихние интерфейсы постоянно менялись — иногда, по три раза в неделю. Следовало подождать, как потом выяснилось, ещё по меньшей мере полгода, пока там всё относительно устаканилось, и только потом пытаться связывать их с внешним миром.

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

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

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

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

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

А ещё я породил внутрипроектный мем — когда выяснилось, что для пакетной сверки необходимо сохранять промежуточные данные на своей стороне, и ни один из механизмов хранения данных, ранее реализованный остальными командами, не удовлетворяет по скорости вставки записей, мне пришлось навелосипедить ещё один коммонс, который я назвал бесхитростно — FastDAO. Ну ещё бы. Убойное сочетание рефлексии и голого JDBC — а всё остальное оказалось too slow. Сразу же появилась шуточка про «сначала FastDAO, а потом FasterDAO, и в далёком будущем FastestDAO» — но она так и осталась шуткой.

Слона мы действительно смогли осилить за два месяца, и аджайл нас не подвёл. Заодно я поднатаскал Антона в качестве лида, и после моего ухода смог не только полностью меня заменить, но и взять на себя вообще все инфраструктурные подсистемы.

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

Вот только бараны были выкрашены в чёрный.

О том, как уйти с проекта

Вообще, в Епаме уйти с проекта не особенно сложно. Нужно подойти к ПМу, и попросить. Но это в теории.

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

Уйти с Зелёного Банка у меня получилось только со скандалом.

Но тут ещё надо рассказать о тех обстоятельствах, на фоне которых оно всё дошло до конфликта. Опять будет мелодрама (и я даже не прощу меня извинить).

Летом 2012 года мы с женой поехали в традиционный отпуск на море, а когда вернулись, она в первый же вечер заявила мне, что а) у нашего брака нет перспектив, это её б) окончательное решение, которое не подлежит обсуждению, и в) я могу выметаться. Или могу оставаться в качестве соседа (если мне не хочется возвращаться к предкам; в квартире была свободная комната), но мужем ни в каком из смыслов не буду. Зачем и почему — спросите её сами, я до сих пор не могу этого понять. И вряд ли когда-нибудь смогу.

В одночасье предыдущие четыре с лишним года жизни были для меня перечёркнуты, а все планы на оставшуюся жизнь пошли коту под хвост. Чего ради я менял одну гадкую работу на другую ещё гаже? Для чего зарабатывал все эти деньги? Зачем делал два ремонта и пережил четыре переезда? Только потому что любил Катю, и хотел прожить с нею до самого конца. Завести и воспитать детей, построить дом, вырастить сад… Но Катя вдруг передумала, а никого упрямее Кати я не знаю. Ни одна лама не сравнится, не то что овца.

Простите. До сих пор не могу в себя прийти. Худшего предательства я и представить себе не мог, а вот поди ж ты…

А уж в каком я состоянии был сразу же после такой замечательной новости — мне даже вспоминать не хочется. Месяцев пять не спал ночами, и только поэтому не скатился в депрессию (её лечат как раз депривацией сна), но нервы были совсем в тряпку.

И тут, где-то всего лишь через неделю, ко мне подваливает такой Купцов, тычет в лицо распечаткой какого-то электронного письма с совершенно неизвестного адреса из Зелёного Банка, и говорит, что надо срочно переделать UI моей подсистемы так, как вот тут вот написано. На вопрос, а кто собственно такой этот чувак, и почему задача ставится в виде письма, и в курсе ли аналитик, Купцов отвечает, что это всё не моё дело, и потом-потом.

Интересненько.

Простите, но я в таком режиме не работаю. Половина пунктов из списка не может быть реализована без правки моего основного ТЗ (и, соответственно, существенного переписывания подсистемы), другая половина вообще описывает workflow по ручному управлению шлюзами. Если вспомнить, то UI по первоначальной задумке — это отладочный инструмент, он не был предназначен ни для ручного управления процессами опроса шлюзов на постоянной основе, ни, тем более, для мониторинга их активности. И, главное, кто и когда будет согласовывать новый scope с аналитикой?

Все свои вопросы и соображения я сформулировал письмом к Купцову, но он на него даже не ответил, так что я потихоньку занялся всякими текущими мелочёвками. Например, второй раз грохнул транк по просьбе архитектурного комитета, и пересобрал его из веток (раз уж я однажды это уже делал, второй раз поручили тоже мне; помни, сыне, что согрешимши однажды…), помогал ребятам из других команд с оптимизацией производительности то там, то сям. (Потом, осенью даже съездили с Олегом в Самару специально для этой цели.)

Нет задачи — нет и работы. Но Купцов думал иначе, и через пару месяцев ворвался уже с громами и молниями:
— Какого, блять, хуя, Евдокимов, ты ничего не сделал?
— Прости, сделал что?
— Список из письма, ёб твою мать!!
— Купцов. Иди на хуй. Я тебе уже объяснил, по-моему, что задача не поставлена.
— Блядь, ты щас сам у меня на хуй пойдёшь! Ну-ка, без пизды, запили мне тут всё ко вторнику по списку, и не ебёт. Ночами сиди, если надо. Аналитики потом сделают ТЗ. Этот чувак — начальник эксплуатации, понял, блядь? Не будет этого функционала — он весь проект выебет, и его закроют на хуй. Во вторник поставка.

Ладно хоть морду не набил.

Нет, если всё настолько серьёзно… ОК, я любое дерьмо могу без ТЗ запилить до вторника, я же профессионал, не хуй собачий. Один чёрт, ночами и так спать не могу, так хоть чем-нибудь полезным займусь. Правда, возникает вопрос — а что я, собственно, на проекте делаю? Да и в Епаме вообще?

Естественно, ко вторнику 90% пунктов из злополучного списка хоть и было готово, но качество реализации всего этого… Мне стыдно за весь свой написанный код, и это нормально, но конкретно за тот написанный код мне стыдно втройне. Оставшиеся 10% реализовать было невозможно в принципе — моя подсистема была попросту не предназначена для реализации подобных фантазий.

Само собой, остальные команды ко вторнику не успели, и поставка случилась только через месяц. Но и за этот месяц аналитики (которым наконец-то была поставлена задача согласовать изменения с эксплуатацонщиками заказчика) не смогли до конца утрясти изменения в ТЗ, UI из отладочного так и не стал до конца основным, но с Купцовым мы уже окончательно пересрались.

И только потому что мы с ним окончательно пересрались, когда я попросился с проекта, он меня, пусть и со скрипом, отпустил.

Хотя и отомстил напоследок.

Процессы

Как может отомстить ПМ? Насрать в карму.Поставить низкие оценки на performance review, или, по-епамовскому, ассесменте.

Ассесмент

Всего в Епаме каждый год только две контрольные точки, когда сотруднику могут повысить. Либо зарплату, либо тайтл (ну, с тайтлом зарплата тоже обычно растёт). Зимой (главное событие) и летом (повышают только за особые заслуги).

Понизить вот — не могут, это принципиальный момент. Кстати, поэтому в Епаме крайне сложно сменить основной skillset, потому что если, к примеру, тебя заебал оракловый быдлоынторпрайз, и хочется пописать чего-то полегче на платформе от Микрософта, и на жабе ты D3, а дотнете — не факт, что и D2, то понизить тебе тайтл и зарплату нельзя. Следовательно, фиг тебе, а не смена платформы. Сиди и пиши SELECT! Извините, ещё долго икаться будет.

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

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

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

А в старой ещё подсчитывалась сумма баллов, и были какие-то формальные критерии, типа соответствует чувак своему тайтлу по сумме показателей, либо нет.

Ну так вот. В самый первый ассесмент почти у любого сеньора традиционно –5 баллов, или около того, по каждой группе критериев. Типа, начинающий сеньор, косячит ещё на руководящей должности по неопытности. Неважно, даже если чувак пришёл извне сразу на D3, и до того много лет был ведущим, в Епаме свои порядки. В последующих ассесментах оценка уже будет выше, ну а когда сумма по бонусным баллам начинает зашкаливать, значит, созрел для тимлида.

Ну вот так у меня оно и шло первые два ассесмента (кроме группы «работа в команде», там выходило –8, впрочем, я не зря в резюме честно указываю, что в команде мне работать не стоит), а потом меня как раз оценил Купцов.

И он мне выставил по этому показателю –26,5, а в сумме вообще по всем –101 балл.

Полагаю, это антирекорд всех времён и народов.

Понятно, что никакой прибавки к зарплате я в тот зимний ассесмент не получил.

Система дебильная, предвзятая, и абсолютно несправедливая. В следующий ассесмент, с другим ПМом, я набрал +25, хоть и завалил лидерство. Но это другая история, про неё позже.

 

На сегодня всё.

Рубрика: Болтовня | Метки: , , , | Комментарии (12)

Про Епам. Часть 2. Проекты. Глава 1

— Госсподи, что ж я тут делаю?! — злобно пробормотал я, с тоской глядя в окно на епамовской кухне. Дело было в начале июня 2011 года, я проработал там ещё меньше двух недель.

Проект для Большого Зелёного Банка

Представьте себе большой интеграционный проект. Представили? А теперь представьте себе действительно БОЛЬШОЙ интеграционный проект.

Допустите, что в пике над ним со стороны Епама работало около пяти десятков разработчиков, разбросанных по шести офисам (Москва, Самара, Тухлятти, Ижевск, Минск, и даже один отдельно взятый гений из Питера), целый табун тестировщиков (их, по-моему, вообще никто не считал), адская зондеркоманда из десятка аналитиков, — и это были ещё не все занятые на БОЛЬШОМ проекте люди, потому что со стороны заказчика над ним корпела целая толпа внедренцев, а ещё помимо Епама им пришлось привлечь двух других субподрядчиков, предоставивших стенды для нагрузок, и дополнительный табун тестировщиков.

Представили? А теперь помножьте эти сотню-полторы человек на три с лишним года. Или на четыре — проект всё ещё продолжается, хотя сколько уже раз его хотели прикрыть… По очень грубым подсчётам (на кухне, с коллегами-программистами — такими же великими финансовыми аналитиками, как я, так что даже по критерию Ферми оценка грубая) стоимость проекта никак не может быть меньше порядка 0000000000 рублей.

Таким вот он был, мой первый проект в Епаме.

Когда Паша рассказывал о нём на собеседовании, всех этих подробностей он не упомянул. Просто сказал, что проект очень большой и серьёзный, что в нём участвует почти все российские офисы, и что дело движется очень резво. И ещё он сказал, что велик шанс того, что вся эта махина точно пойдёт в пром — потому что предыдущий проект, из которого вырос этот, уже внедрён, и успешно используется в бизнесе Большого Зелёного Банка. Думаю, если бы он этого не сказал, я бы ещё подумал, стоит ли мне ввязываться…

Прикол в том, что за все прошлые годы карьеры по настоящему масштабных проектов у меня не было ни разу — всё какая-то мелочёвка, которую в принципе можно осилить в одни руки (некоторые — пусть тяжело, но если поднапрячься, то всё-таки реально). У мелочёвки и срок эксплуатации так себе — год-два, и сгинула в небытие. А тут такой шанс поучаствовать в чём-то монументальном, разрабатываемом на века. Глупо было бы его упустить, верно? Я уже неоднократно говорил, что моя сверхцель и, in layman’s words, «смысл жизни» — изменить мир.

Так что, когда я в конце предыдущего поста так жёстко надавил на тему бабла — это было не совсем искренне. Такие проекты, как этот, среднестатистическому программисту выпадают раз в жизни, и фактор причастности к something really awesome любые денежные соображения задвигает на второй план.

Ну так вот.

Под впечатлением от масштабов задачи я пробыл первые две недели. А потом стало ясно, что вся эта эпическая monstrosity собрана из говна и палок, и держится на соплях.

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

Боль платформы

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

Кто-то особо умный из тамошнего ИТ однажды решил, что промышленные решения от Оракла — говно, а ИБМ в 100500 раз круче и ебовее, поэтому ВЕСЬ софт должен работать на платформе этого вендора, и никак иначе. Причём, заплатив несколько лет назад бешеные деньги за DB2, WebSphere AS и MQ, и Tivoli, обновлять до более-менее свежих версий банк, как любой другой типичный ынторпрайз, естественно, никогда и ни за что не будет, покуда они не устареют лет на 15…

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

Радости добавила и официальная документация, которая пестрит ошибками, и совершенно невменяемая техподдержка — это я по итогам двухмесячной переписки по обнаруженному мною баге в драйвере JDBC могу заявить обоснованно, — и фирменные средства разработки под WebSphere на основе Eclipse какой-то совершенно дремучей версии (они ещё издевательски называются Rational Application Developer).

Вот, казалось бы, такая фигня, как IDE. Код, по идее, можно писать и в «Блокноте», верно? А что, если у тебя дерево исходников разбито на сотню хитро зависящих друг от друга проектов, в каждом из которых десятки и сотни классов? В таком случае, если у тебя воркспейс загружается минут двадцать, а компилится и деплоится ещё примерно по стольку же, то за день написать и отладить больше десятка строк кода просто нереально.

И то, если IDE не решит вылететь при сохранении, или намертво повесить всю машину при отладке. Но нет, купить IntelliJ IDEA посвежее у проекта денег нет (несколько человек не выдержали, и купили себе персональные лицензии  — хотя по политике конторы этого делать нельзя), поэтому каждый разработчик должен терпеть адовые тормоза клипсы каждый свой рабочий день с самого начала и до самого конца (кроме тех, кто купил себе идею)…

Причём, лицензий RAD на всех разработчиков не хватало, поэтому часть на свой страх и риск использовали MyEclipse, и потом с интеграцией ихних проектов было много радости — как говорится, добро пожаловать в .jar hell!

А ещё, за первые полгода я сам, лично, нашёл четыре неизвестных интернетам и ихней техподдержке идиотских бага в 64-битной J9 (в отличие от 32-битной, 64-битная жаба у ИБМа своя собственная, не унаследованная от Оракловской), и ещё два, помимо того, эпического, в DB2, — и во всех случаях для исправления ситуации пришлось лепить уродские костыли, в том числе, и архитектурные. Потому что ждать выпуска фикса (около полугода) было некогда. И не один я оказался такой находчивый.

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

Ах да, архитектура. Во-вторых.

Охренетектура

Во-вторых, как выяснилось, у проекта НЕТ АРХИТЕКТОРА. Вот так вот. На полтора десятка лидов и десяток аналитиков не нашлось человека, который в точности бы себе представлял, как (и во что) это всё должно в итоге проинтегрироваться и заработать. И вообще, что именно мы разрабатываем, потому что общего технического задания — тоже нет, только эскизный проект, и приблизительная схема, которую каждый лид рисует по-своему, располагая свою подсистему в центре. У меня таких рисунков через пару месяцев накопилась целая пачка — я даже хотел было сохранить на память, но не смог отказать себе в удовольствии изорвать их на мелкие клочки.

Нет, вы можете себе это представить? Я в осадок выпал, когда узнал.

А ещё сильнее я выпал в осадок, когда заказчик объявил, что процесс разработки должен быть выстроен… барабанная дробь… по аджайлу.

Как?! Как может быть выстроен «по аджайлу» проект на 50 разработчиков, которые размазаны по шести локациям и трём часовым поясам? Как можно разрабатывать «по аджайлу» 20 слабо, но хитро между собою связанных подсистем, для которых не определены даже приблизительные протоколы согласования внешних API (потому что архитектора нету)?

Но заказчик учитался модных книжек, и, представьте себе, сподобился выцепить всех 15 лидов в Москву, затем чтобы небезызвестный евангелист и проповедник Асхат Уразбаев провёл нам персональный тренинг. Где-то к шестому часу тренинга абсолютно всем уже было понятно, что всё, что мы сейчас выслушали, к нам неприменимо.

Вообще, чувак, который руководил поначалу проектом со стороны заказчика — типичный архитектурный астронавт.

Как вы уже поняли, довольно быстро я оказался среди лидов разработки — мне поручили одну из инфраструктурных подсистем, файловое хранилище для обмена с внешними и внутренними источниками данных. Задачу ставил непосредственно этот самый чувак, и как он её ставил… О, это было нечто. Ничего более… одухотворяющего?.. чёрт, не знаю, какими ещё словами это ощущение можно описать, я никогда раньше от заказчика не слышал. Он произвёл впечатление маршала. Впечатление крайне умного командира, который мыслит категориями уровня как минимум фронтов и групп дивизий, не меньше. Обычно, выше полковника никто не поднимается, а большинство заказчиков и вовсе лейтенанты едва-едва.

Извините, увлёкся аналогиями. Просто, задача была поставлена очень уж глобально, размыто, сложно, неконкретно, and the kitchen sink.

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

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

Из-за кривизны платформы не вышло сделать хранилище в блобах. Набросанный на коленке прототип со свистом упихивал гигабайты файла в Оракл, Постгре, и даже, представьте себе, SQLite, — но попытка натравить его на DB2 и засунуть в базу несколько раз подряд хоть что-то, превышающее полмегабайта, в итоге приводила к резкой деградации и последующему неизбежному краху сервера. (В следующем мажорном релизе DB2 этот баг исправили, но на тот момент речи о переходе на более свежую версию СУБД не шло.) Так что в базу попали только метаданные, а сами файлы пришлось хранить в файловой системе, со всеми вытекающими радостями.

Парочка других багов от ИБМ не позволили сделать reliable стриминг файлов по сети с вменяемой скоростью — ни одна из предназначенных для этого библиотек на 64-битной версии J9 стабильно не заработала, при том, что на 32-битной никаких проблем с большей частью из них не возникло. Пришлось велосипедить собственный протокол с контрольными суммами на каждые 64 килобайта, и прочим требуемым блэкджеком. Вообще, сетевая часть 64-битной J9 вся сломана, мы как-то поймали ситуацию, когда в конец большого ответа веб-сервиса (блин, SOAP, базовый же протокол!) пишется бинарный мусор откуда-то из кучи. Вот как так, IBM?

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

Архитектор на проекте появился меньше года назад, уже после того, как он ушёл в тестовый пром.

И я опять отвлёкся.

Аджайл

В общем, аджайл же в полный рост! Полный аджайл!

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

И первые полгода разработка неслась во весь опор. Это было реально круто. Каждый лид был при деле, каждый лид был чем-то занят, каждый лид со своей командой клепал что-то своё, без малейшей оглядки на соседние подсистемы, в том стиле и с теми принципами, с которые ему больше всего нравились.

Дерево исходников росло не по дням, а по часам, там и сям возникали новые подкаталоги с новыми проектами, некоторые команды стали постепенно выделять свои наработки в commons (какая документация? помилуйте, надо код херачить!), другие начали их использовать у себя (хм, тут вроде подходит. а, заюзаю, значит. а вот тут допишу, как умею).

Каждая из команд докладывалась только непосредственно своему аналитику, и изредка тому самому астронавту, который где-то там витал у себя в Москве… Первый промежуточный релиз с поставкой в Банк был назначен на конец осени.

Помните анекдот? Который «А теперь со всей этой поебенью мы попробуем взлететь».

Ничего не взлетело.

И как оно могло взлететь, если ни одно API нигде не описано, каждая из подсистем использует свою собственную БД, в которой половина таблиц дублируется, да даже, простите, общей системы сборки у проекта нет?

Как все эти, в отдельности по аджайлу (сиречь, с breaking changes every week, или даже чаще — как только астронавту взбредёт в его светлую голову очередная гениальная идея) разработанные куски могли собраться в нечто целое?

Да никак.

Это был первый крупный факап, который чуть было не похоронил проект. Хуже всего, что факап был очевиден и неизбежен (всё же, ребята не дураки), но никто и пальцем не пошевелил, чтобы его избежать. Я, конечно, пару раз громко повозмущался на митингах, но всем было слишком некогда.

И только после того, как в коллективную жопу клюнул жареный петух, на проекте появился координатор со стороны Епама (про него потом рассказ будет), архитектурный комитет (добровольца потянуть в одиночку не нашлось, но хоть так), вменяемая система ведения тикетов (джира, вместо епамовского самописного ПМСа — о нём потом), билд-инженер, да и аналитикам вставили шомпол, так что они родили-таки все нужные основополагающие документы, и договорились наконец о том, как проектировать взаимодействие между подсистемами.

И в системе контроля версий впервые появился настоящий trunk. Невезучий, бедняга. Я сам, своими руками, дважды потом делал ему replace… Почему я? Ну, просто я был посвободнее всех остальных лидов. Вообще, конечно, делать транку replace — это совершенно ненормально. Но дрова рубят — щепки летят, а за полгода неконтролируемой разработки без общего плана дров наломали невероятное количество.

И ещё — по итогам факапа астронавт тихонечко слился с первых ролей. Как выяснилось, это был его первый собственный проект такого масштаба…

И вот тут следующая серьёзная тема.

Отсутствие квалификации

Епам позиционирует себя как компанию суперпрофессионалов. Казалось бы, правильно, ведь если аутсорсер будет позиционировать себя как-то иначе, кто вообще к нему пойдёт?

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

Конкретно на этом — вообще ни один из лидов ранее не имел дел с проектами хотя бы на порядок меньшей сложности и объёма, а половина разработчиков меньшего ранга только-только закончила «учёбу», и это был их первый настоящий промышленный проект…

И сразу такое.

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

И вот с этими ребятами было больше всего проблем, потому что мало уметь писать код — и мало уметь писать код правильно — надо ещё уметь писать его так, чтобы потом его можно было прочитать. И в случае таких проектов, как этот, это самое главное и важное умение.

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

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

См. эпиграф.

«Говнокод», «быдлокод» — это всё неконструктивно, ругательства, но, глядя иной раз на шедевры в тех самых «коммонсах», мне хотелось немедленно выброситься в окно. От ужаса у меня волосы шевелились. На жопе.

И хуже всего, что все слабые попытки по введению code review, которые изредка предпринимал то один, то другой истерически отсмеявшийся над очередным перлом лид, разбивались о железобетонную нехватку времени. Однажды я всё же не выдержал, и провёл двухчасовой публичный разбор особенно показательного примера среди ижевских участников — и некоторым оно даже оказалось полезно, но это был единичный случай.

Отсутствие программистской культуры для программистской компании — это катастрофа.

Вот не надо тут путать! Культура кода — это не включенные у всех разработчиков приблуды типа checkstyle и findbugs, которые тормозят долбаный RAD ещё больше. Культура кода — это культура уважения труда коллег. А её отсутствие — это катастрофа.

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

Сага о мёртвом инсталляторе

Одной из фич, которую мне нужно было реализовать в своей подсистеме — это возможность работы её приложений на нескольких узлах. По причине эпической кривизны платформы сделать нормальную кластеризацию в EE-style оказалось невозможным, поэтому каждый из серверов приложений работал в автономном режиме, крутя на себе некоторый набор подсистем, или их частей, а общая оркестрация осуществлялась на уровне конфигурации каждого экземпляра приложения отдельно.

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

Получается типичная такая топология «звезда». В центре архив, вокруг него кольцо шедулеров, и снаружи шлюзы.

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

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

Вот им мне и пришлось заняться.

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

В составе WebSphere AS есть довольно мощные средства развёртывания приложений, в том числе и удалённого, которые даже скриптуются на jython’е (какой-то невероятно древней версии, но это всё равно лучше, чем ничего). Всё что нужно было сделать — сконфигурировать топологию, и вызвать их в правильном порядке, чтобы нуждные приложения попали на нужные узлы, и были запущены так, чтобы удовлетворить run-time зависимости друг друга.

Казалось бы, просто всё. Но был совершенно забыт вопрос о том, как приложения должны узнавать после запуска о том, к какому экземпляру на каком узле обратиться. На машине разработчиков всё происходит через localhost, а на реальном стенде?

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

Вот как вы думаете, сколько креативных и не похожих друг на друга способов можно придумать, чтобы вызвать какой-то внешний EJB? Казалось бы… лукапим по JNDI, и дело в шляпе, вон даже отдельный коммонс есть для получения всех адресов откуда-то из центральной базы (со смешным называнием CACLib, или просто ЦАЦ)… Ага. Девятнадцать уникальных способов.

В Епаме очень креативные ребята работают, с богатой фантазией.

Сам ЦАЦ мне тоже пришлось тихой сапой переписать, потому что для хранения топологии в виде, пригодном для заполнения инсталятором, базу никто изначально не проектировал. В общем, понеслась душа в рай. И заполнялку базу переделывать пришлось, и житоновские скрипты, и форматы всех служебных XMLин, всё на свете. Раз уж взялся. В конце концов, родился реестр приложений — Applications.xml. Сам тот инсталлер после моего ухода с проекта в итоге убили, потому что он слишком много знал и умел, а реестр — реестр остался.

Знал и умел инсталлер действительно многое, для него даже можно было плагины на жабе писать. Для тех приложений, которым текстовых макрозамен в SQL, пропертях, окружении, и XMLях было мало, инсталлер мог на лету попросить их самостоятельно сгенерировать нужные им странные вещи.

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

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

Причём, я их даже все понял. Кроме одной подсистемы.

Питерский сумрачный гений

Банковские системы, как правило, взаимодействуют с другими ИС более-менее унифицированно. Всё крутится вокруг сущности «платёж», у которой есть обязательные поля «плательщик», «получатель», и «сумма»; платежи можно «принимать», «подтверждать», и «отменять». И все биллинги мира говорят на одном предметном языке, достаточно только настроить транслятор из одного диалекта в другой.

Но что делать, если биллинга нет?

Такое тоже бывает. У некоторых ТСЖ, например, до сих пор нету программного биллинга, и платёжки обрабатываются вручную оператором в, скажем, 1С-е. И как нам с ними взаимодействовать в таком случае? Как такой платёж провести?

Очень просто. Надо написать эмулятор биллинга. На входе ему будет подаваться файл с вбитыми с платёжек данными, и он будет их подтверждать. На выходе — файл со списком принятых платежей. Далеко не rocket science.

Но весь прикол в том, что Большому Зелёному Банку надо эмулировать сразу целую кучу биллингов, и у каждого ТСЖ бухгалтерия какая-то своя. Свои форматы выгрузки, свои наборы полей плательщика, свои правила обработки. У некоторых есть остаток на счёте, а у некоторых, к примеру, долг. Ну и так далее. Нетривиальная задача получается, если копнуть.

И поручили её в рамках проекта крайне нетривиальному человеку из Питера. Он, наверное, один в Епаме был такой, кто смог бы её осилить в одну харю. И он её осилил.

Этот чудик написал свою собственную СУБД с собственным диалектом SQL.

Всё честь по чести, парсер языка на основе AST, слой хранения бинарных данных, слой пакетной потоковой загрузки, движок запросов… OH SHI~ wait, what the fu~?!

Это всего лишь абстрактная фабрика абстрактных фабрик абстрактных фабрик. Фигня, просто всё…

Он несколько раз пытался уйти с проекта, но каждая эта попытка оканчивалась ничем, потому что у ребят, которым предполагалось отдать подсистему эмулятора биллингов, случался взрыв мозга. Или сердечный приступ. У меня неделю глаз дёргался, а Олег до сих пор как-то странно смеётся.

В итоге, уйти с проекта питерский гений смог, только уволившись из конторы.

 

Ох. Что-то много получается. Давайте, я завтра допишу. Или послезавтра.

Рубрика: Болтовня | Метки: , ,

Епам-пам-пам, Епам-пам-пам, Епам-пам-пара-бара-бам-пам-пам. Часть 1

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

Как я туда попал

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

Дело было так…

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

Работа просто потрясающе интеллектуальная, в отличном бабском коллективе. Госслужба со всеми её вывихами, гарантированная копеечная зарплата, и замечательный соцпакет… Просто идеальное место, чтобы через год-полтора уйти в декрет, на самом-то деле. Но нет. Уходить в декрет Катя категорически не пожелала. Вместо этого она захотела сначала обзавестись собственным жильём (хотя жить нам было где, правда, там надо было делать капитальный ремонт), начать Собственную Карьеру, чтобы зарабатывать собственные деньги (хотя моего заработка нам хватало даже и на некоторые излишества, включая отпуск на море). Я был против, но упрямей Кати зверя нет.

А тут надо учесть, что в Епаме тогда работал эйчаром некто Саша Шабанов — собственно, он с самого начала там был, — они с Катериной друзья детства, в одном подъезде всю жизнь прожили. Ну, он ей и предложил пойти в Епамовский in-office учебный центр, выучиться на тестировщика. Сама она никогда бы туда и не сунулась — духу не хватало, но с Сашиной подачи (а он как никто другой умеет наврать про карьерные перспективы, чем и известен в узких кругах) всё же пошла. Я был против, но упрямей Кати зверя нет.

Брали в УЦ в тот момент, по-моему, вообще всех желающих — перед филиалом стоял масштабный план по набору персонала, — и оффер по итогам обучения делали тоже всем, не особо взирая на реальные успехи. Так что и Кате его тоже сделали, и она согласилась. Я был против, но упрямей Кати зверя нет.

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

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

И вот на этой-то волне Саша и позвал меня «на экскурсию». Якобы так, чтобы чисто поговорить, и ничего конкретного, и Катя была якобы не в курсе. Странно. Но я от подобных экскурсий никогда не отказываюсь — мне всегда любопытно посмотреть, чем коллеги живут. Правда, о Епаме я на тот момент знал с Катиных слов уже достаточно, чтобы понимать: мне совершенно нечего ловить в этом унылом месте.

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

Поэтому мы мило побеседовали примерно с часик о моих прошлых достижениях, я рассказал немного подробностей об ижсвязьинвестовском биллинге, и Паша сразу так оживился. Рассказал мне о новом проекте, который они начали для Большого Зелёного Банка, и насущной необходимости иметь в команде крутых перцев навроде меня, с таким вот опытом. А Диме я не особенно понравился (это было взаимно, Дима) — потому что своё мнение высказываю слишком уж категорично, и отношусь ко многому предвзято.

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

Это выяснилось через пару недель. Тут надо сказать, что авантюра в «Астарусе» как раз за это время медным тазом и накрылась, так что проблема а куда б пойтить? встала передо мной в полный рост. И оффер от Епама оказался как нельзя более — для них — вовремя.

Дело оставалось за малым — поговорить с Вылегжаниным. Главу, посвящённую исключительно данному персонажу, я ещё напишу (умел бы рисовать сатирические комиксы — нарисовал бы сатирический комикс), а сейчас расскажу лишь только то, что относится конкретно к офферу.

Хм, оффер… Епам — контора скрытная. Нет, после того, как у них прошло IPO, вся финансовая отчётность стала доступна кому угодно, но вот внутренняя денежная политика была и остаётся делом исключительно тёмным и, знаете, с гниловатым таким душком. В частности, в Епаме не принято публично озвучивать вилку зарплат для кандидатов, обходясь расплывчатым «по итогам собеседования», а в Великой Внутренней Полиси, типа Обязательной для Соблюдения Всеми Сотрудниками, чёрным по белому запрещено обсуждать их с коллегами, родными, и кем бы то ни было вообще, кроме своего ресурсного менеджера, а иначе будет ататат вплоть до увольнения, потому что Великая Коммерческая Тайна.

Хуйня, товарищи. С юридической точки зрения это ничтожно: в Постановлении Правительства РФ от 1991г. №35 (с изменениями от 2002г.) прямо сказано, что коммерческой тайной не могут быть сведения о «численности, составе работающих, их заработной плате и условиях труда». Впрочем, в Епаме и помимо этого полно корпоративного дебилизма (не будем забегать вперёд, о нём речь пойдёт дальше).

Вообще, я принципиально не отвечаю на предложения, в которых не указана вилка, даже вне зависимости от юридических заморочек, — если контора не готова обсуждать первым делом моё вознаграждение, что тогда вообще с чего начинать разговор?

К счастью, сотрудники срать хотели на эти идиотские правила, и сколько получает обладатель какого тайтла (джуниор/мидл/сеньор/лид/толстый лид) я, конечно же, знал. Если бы не знал — Епам сразу пошёл бы в жопу со своим оффером, а так я понимал, какую сумму могу выторговать.

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

Оставалось только выяснить, на какой тайтл меня оценили. Ну, тут Саша скрывать не стал, оценили меня на D3+ — сеньора с перспективой вырасти до лида, несмотря на то, что в моём резюме русским языком и по сей день сказано «терпеть не могу руководящие должности, не люблю взаимодействовать с людьми».

Короче, сумма. Как ИП, в «Астарусе» я работал по договору за 40000 в месяц, с вычетом всех налогов по концу года это получалось примерно 34500 на руки, или около того (не помню уже за давностью). Явно стоило продать себя подороже, ведь как мы помним, мне нужно было катастрофически много бабла. Ну я и назвал 45000 на руки. Вылегжанин и ухом не повёл, просто сказал «Окей, будет 45. На руки».

Я потом случайно выяснил, что назвал в точности потолок, который Епам готов был предложить на пришедшего извне D3+ J2EE, и заодно, что для D4, но не J2EE, нормой были вообще 40, в то же самое время. То есть, я не продешевил. Просто в сравнении с рынком зарплаты в Епаме не самые высокие.

Вот так я там и оказался.

Хотя, первый раз вслух вырвалось «ой, блять, что ж я тут делаю!?» у меня уже через неделю, но это уже другая история. Одна из следующих.

Рубрика: Болтовня | Метки: , , | Комментарии (7)

Фантастическая карьера с переходом в горизонтальную, годы 1999—2011

Превед \o/

Я тут пообещал нескольким человекам рассказать, почему я ни с того ни с сего, вдруг, неожиданно, с утробным рычанием и бросаясь во все стороны хуями, слинял из Епама — местечка очень тёплого и небейлежачного, и вообще, мечты для многих, — да ещё и в никуда. Причин такому странному, и глупому на первый взгляд, решению, на самом деле, очень много, и потому в ответ на очередной недоумённый вопрос я каждый раз объяснял его несколько иначе, чем предыдущему спрашивающему. Это действительно очень долгая история. Но мне теперь некуда спешить, поэтому я поступлю по обыкновению бесчеловечно, и расскажу её вам во всех подробностях.

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

Вот фотка для затравки:

Я с самого детства, лет с шести, мечтал быть программистом, и всю сознательную жизнь очень целенаправленно шёл к достижению своей цели. Именно поэтому я выбрал маткласс «тридцатки», а не химико-биологический, хотя по моим оценкам мне скорее была прямая дорога именно туда, да и предки настойчиво хотели, чтобы я сделал карьеру врача, — но я велел им заткнуться и уважать мой выбор, — а сам предпринял определённые усилия, чтобы попасть в олимпиадную команду класса, хотя это было очень тяжело. Самый \m/ лицей нашего городка, всё же. (В итоге в олимпиадах по физике и математике я высоких мест никогда не занимал, а по информатике — и вовсе ни разу не прошёл отборочного тура, но зато свой мозг проапгрейдил в нужном направлении.)

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

Забавно, но этот коварный план сработал. Впрочем, по порядку.

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

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

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

Учитывая, что к четвёртому курсу в веб-разработке я не смыслил ровным счётом ничего, предложение пойти поработать в микроскопическую конторку под названием «Виртуальный Ижевск», которое мне по знакомству подкинула моя матушка (директор — её однокашник), я принял сразу же. Предыдущий разработчик оттуда почему-то свалил в очень быстром темпе, и мне пришлось браться сразу за всё. Поначалу дров наломано было немало, но я всегда умел быстро учиться, и уже через 5 месяцев я был готов валить из этого гадюшника ещё быстрее, чем предыдущий разработчик, имея в запасе более чем приличное умение писать сайты на пыхе и администрировать никсовые хостинги. Я там фактически жил на работе, и вкалывал, как негр, по 14–16 часов в сутки за жалкие 700 рублей в месяц чёрным налом. Ввиду специфической личности директора это был кромешный пиздец и незабываемый жизненный опыт, а уж проекты, которые я там клепал… мда. Как-нибудь в другой раз о них.

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

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

Потихоньку я начал чувствовать себя всемогущим, и закручинился — потому что как только начинаешь чувствовать себя всемогущим, так сразу деградируешь. Да и калибр конторы не позволял развернуться во всю мощь. Если тот же ЦВТ бешеными темпами рос количественно (и, само собой, качественно), то ММЦ больше 15 человек никак не мог набрать, потому что больше народу не влазило в университетское штатное расписание, из которых только четверо (включая меня) могли работать в моём отделе.

Вдобавок, мне начало надоедать достаточно однообразное серверное программирование — я за эти годы собрал собственный фреймворк, достаточно развитый и богатый, чтобы клепать информационные системы, не приходя в сознание, и меня начала интересовать другая сторона вопроса — а именно, UX. Но штудиями в области user experience у нас занимался мультимедийный отдел, и все эти свои диски они делали дёшево, а значит, сердито и топорно.

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

И вот тут, под новый 2007 год, начинается самая интересная часть моей карьеры — горизонтальная. После удги/ММЦ/МИТТЕКа (как ни назови — всё это один хрен) я за четыре с половиной года поменял три очень разных конторы в одинаковом качестве приглашённой звезды. То есть, специалиста, которого нанимают для того, чтобы он пришёл как спаситель, и вытянул безнадёжную/трудную/тяжёлую задачу, или решил проблему, которую никто из имеющегося персонала не представляет как решать.

К общей выгоде: контора получает результат, а я приобретаю уникальный опыт, и с каждым новым переходом почему-то весомую прибавку к зарплате. Удерживать меня в такой модели дольше, чем длится проект, бесполезно, потому что без головоломки мне будет скучно, а выдающиеся по сложности проекты случаются нечасто. Гастроли такие получаются. Одно но, жизнь — она вносит свои коррективы, и подбрасывает всякие интересные факторы. Впрочем, о них тоже по порядку.

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

А я, такой наглый-наглый, пришёл и сказал — я сделаю вам очешуенный GUI, потому что я крут. Ну и жабу немного знаю. Пускай образца 1999 года, но у вас-то что? Версия 1.4? Так невелика разница. Заодно переведём систему на жабу 1.5 и хотя бы восьмой Оракл. И будем продавать другим провайдерам.

Ок, дерзай, сказали мне, и я дерзнул. Через полтора года я знал половину технологического стека J2EE практически как свои пять пальцев, реализовал веб-версию Ribbon UI из Office 2007 раньше, чем это сделал сам Microsoft, и даже, представьте себе, написал поверх Оракла документно-ориентированный storage platform, который умел делать всякие адские штуки, типа наследуемых и вычисляемых полей у сохранённых объектов (брали меня только как UX специалиста, а кода на PL/SQL в итоге вышло едва ли не больше, чем на JS), но перетащить биллинг, в который до меня было вложено несколько десятков человеко-лет, на новую платформу, не сумел.

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

Жизнь. Складывается из сотен мелочей.

В жизни всё перемешано. Личное, общее; профессиональное, и не имеющее к нему никакого отношения. Придётся мне сейчас развести мелодрамы, но из песни слова не выкинуть, и потому приготовьтесь.

К началу кризиса 2008 года в моей жизни появилась женщина. Большая любовь, такая страшная, что я и не мог помыслить даже, что я могу вот так самозабвенно полюбить. Ничего такого особенного в Кате нет, даже наоборот, она вечная троечница, еле-еле ползущая между «обстоятельств», но сколько я ни пытался противиться своим чувствам, ничего не получилось. В какой-то момент мне пришлось смириться, что я — Алексей Евдокимов, между прочим, не хрен собачий, — принадлежу и служу ей. И что мои личные желания имеют самый низкий приоритет, и вся моя жизнь теперь должна быть направлена на то, чтобы быть с нею вместе. (К несчастью, она такой переоценки ценностей не делала, и всю жизнь живёт исключительно для себя любимой, но не будем забегать так далеко вперёд.)

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

Вообще, о зарплате я всегда думал в последнюю очередь. Если посмотреть на график моего дохода в удге (вот статистика за 2005–2006 годы, забавная, правда?), то он похож на пилу. Разброс от 3000 до 30000 рублей в месяц (пару раз и такое сваливалось) на руки в течение одного года — и меня это устраивало, представьте себе. Собственно, для меня всегда было верно, что fun >> money. Есть клёвая задача — круто, работаю, а если за это ещё и платят, так вообще зашибись. Деньги я тратить не умею, и потому не трачу. Будущая жена же не умела тратить, и потому тратила всё, что было.

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

Но к счастью, во время работы над аццским биллингом, я не потерял связи с местным сообществом веб-разработчиков, и мой авторитет за полтора года ещё не успел рассеяться. Поэтому мне относительно быстро удалось найти себе следующие подмостки — в качестве Специалиста, Который Может Вытянуть Безумный Проект. Я просидел без работы буквально десять дней (мы как раз переезжали в это время), и едва-едва успел сходить на два или три других интервью в большие местные конторы (и мне крайне не понравилось, как ихние директора обтекаемо формулировали условия), как меня уже взяли в Бон Анцу.

Квартиру мы снимали на Сабурова (Автозавод), а контора находилась на Нагорной (Татарбазар). Но ради любимой женщины я был готов на три часа комьюта через весь город каждый день.

А Проект был реально Безумный. Или безмозглый… не уверен, но это было настоящее чёрт знает что. Геоинформационный сервис на основе гуглокарт + социальная сеть для датских байкеров. Писать предполагалось на Зенде, в манере, чем-то напоминающем жабские портлеты, только в сотню раз колхознее, с самопальными шаблонизатором и ORMом, которые писали ещё две команды где-то за границей. Да, кстати, вот теперь уже начался аутсорс в полный рост, и даже конторка, в которой, кроме технического директора, ещё полтора программиста, могла работать на заграничного дядю-буржуина.

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

К счастью, у конторы был и ещё один заказчик, тоже откуда-то из Бенилюкса, но уже бывший наш. Довольно вменяемый дядька, с проектом, который развивал как своё личное хобби. SatBeams.com, спутниковый ГИС с очень сложной внутренней структурой данных и крайне интересной их визуализацией. Техдир занимался им сам, но мои mad skillz по PHP, БД и UX пришлись впору, и он быстренько из конторы свалил, и я опять стал формально ведущим разработчиком.

Задача была перевести сайт с наколенной поделки, сляпанной какими-то предшественниками-венграми, на Джумлу. Почему-то заказчик, видимо, нажёгшийся на поддержке полностью кастомного продукта, так пожелал, и никак не переубеждался. Ну ок, Джумла так Джумла, я же, помнится, всемогущ… Правда, от самой Джумлы там осталась только админка спутниковой базы, на самом деле реализованная как расширение, а сайт практически полностью работал в обход этой тормозной пакости. В общем и целом вышло неплохо, особенно, после того, как я с нуля перепроектировал БД, и переписал интеграцию с гуглокартами (Гугль, кстати, клал на сторонних разработчиков большой, вкусный, и красивый болт, и АПИ гуглопродуктов — говно полное). Остальным GUI занимался второй программист, и справились мы в четыре руки примерно за полгода. Хороший был проект к моменту сдачи.

А всего в Бон Анце я проторчал буквально на две недели больше двух лет. На дворе бушевал кризис, бурно развивались мои отношения с будущей женой — а к моменту свадьбы они и вовсе вышли на первый план, и я даже толком не помню, что там и как я делал на работе. Со съёмной квартиры мы съехали, надо было делать ремонт в следующем нашем временном пристанище, потом сама свадьба и всё такое, во что деньги улетают, как в чёрную дыру.

Когда разработка СатБимсов закончилась, на поддержке остался второй программист, а я занялся какой-то мелочёвкой. Сдул пыль со своего удгушного фреймворка, переписал подходящие по смыслу куски из ижсвязинвестовского биллинга с жабы на пых, собрал из них ещё чуть более мощную CMS, и стал на ней потихоньку поклёпывать всякие сайтики и информсистемки, не приходя в сознание. Неважно, ведь моя зарплата росла и, с утиханием кризиса, постепенно белела.

А потом в конторе завёлся вредитель — новый «техдир», дядька под 60, редкостный, надо сказать, мудак. Но он принёс интересный проект — настольную ИС для татарского комитета по делам несовершеннолетних. Адреналин первых лет совместной жизни постепенно выветрился, и я снова смог направлять часть своих сил и времени на саморазвитие как специалиста. Решил писать новый проект на .NET — единственной платформе, которая до того момента никак не попадала в моё поле зрения.

Переносить документно-ориентированную storage platform (ага, ту самую, ижсвязьинвестовскую) с оракловского PL/SQL на C# и SQLite было забавно. И если бы не сраный Минченко, я бы даже смог завершить Bon Anza Inspector, но он наобещал заказчику невероятные возможности за нереальные сроки, совершенно наплевав на те, которые согласовывал со мной, и где-то на середине пути начал буквально каждые два часа теребить меня с «ну чё, готово уже? как не готово?! надо же, чтобы вчера было готово! ну Лёшенька, сделай что-нибудь, меня же выебут!». И прекрасно, что выебут, нефиг было обещать заказчику сделать в два раза быстрее, чем посчитал разработчик.

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

Честно говоря, решение далось мне довольно тяжело. Не смотря на то, что мотаться на Татарбазар мне уже совсем надоело, и Минченко конкретно достал, остальной коллектив в Бон Анце был прекрасный, и директор, в общем, начала склоняться на мою сторону. Мой уход разрушил бы направление веб-разработки в конторе, к которой я уже успел привязаться (так оно в итоге и вышло), а Рома по своим человеческим качествам мне всегда был не особо приятен (в конце концов, через полгода это сыграло свою негативную роль). Так что выбор был из двух зол.

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

Суть (и вообще, смысл) проекта объяснить сложновато. Я до сих плохо представляю себе мотивы венчурного капиталиста из Татарстана, который пожелал сделать этакий SaaS/PaaS/коробочный аналог MS SharePoint + Exchange + Lync + Dynamics, но только с серверной частью на J2EE, и с «толстым» клиентом на жабе же. Сначала он называл его NewOutlook, а потом и вовсе OfficeSuite. Плюс ко всему, он был ещё и маководом, из-за чего пришлось Mac в контору покупать — свинговые компоненты для толстого клиента вели себя под MacOS временами непредсказуемо. Очень, очень странный и дурной проект, короче. Но жутко интересный.

Всего им занималось не меньше трёх команд — кроме нас, ещё ребята сидели в Казани и где-то в Белоруссии, причём основной считалась наша: нам надо было разрабатывать общую архитектуру и серверной части, и клиента, механизм синхронизации данных между ними, а также реализовать модуль управления финансами. Остальные должны были заниматься Unified Communications и всем проч. что там нафантазировал инвестор.

Меня Рома взял в команду для реализации синхронизатора — как обычно, никто не знал, как вообще подступиться к этой задаче. Клиент, как мы помним, «толстый», может и должен работать вообще без серверной части любую продолжительность времени, и при этом должен мочь подключаться к серверу по расписанию или пользовательскому запросу, и обновлять объекты и там и сям. Я тоже не знал, но глаза боятся, а руки делают. В результате мне пришлось полностью перелопатить «клиентскую и серверную архитектуру», за которые отвечала ижевская команда, и по сути взять технологическую сторону разработки полностью в свои руки. К счастью, проектировать хост-плагинные системы я умею ещё с удгушных времён, хитрые ORMы после ижсвязьинвестовского монстра меня не пугают, а недостающим J-технологиям я научился достаточно быстро.

Через семь месяцев, моменту промежуточной сдачи проекта, из всех трёх команд что-то, достойное показа, было готово только у нашей. Рамиль (до сих пор дружим) написал вполне работоспособный модуль управления бюджетом, мой синхронизатор всё в лучшем виде синхронизировал, а серверная и клиентская части приложения были готовы для подключения остальных плагинов. У остальных команд — конь не валялся, и венчурный капиталист, кажется, понял, что замахнулся он на дурацкую, безумную задачу.

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

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

В следующих сериях вас ждёт всё самое интересное. Stay tuned.

Рубрика: Болтовня | Метки: , , , | Комментарии (2)