14 марта 2010 г.

The Corporation

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

Итак, действующие лица (я их уже представлял, но для порядка надо привести список еще раз):

Darren Vorster - мой менеджер. Возглавляет проект Catherine, над которым мы работаем.
Dermot Smyth - ирландский парень, спец по JBoss, Maven, Ant, Bamboo и прочей мути.
Ankur Kandikatla - мелкий индус. Над чем работает точно не помню.
Lin Wu - еще более мелкая китаянка. Работает на своим веб-сервисом.
Michael Farkas - архитектор. Специализируется по доменной модели и интерфейсам взаимодействия наших сервисов.
Matthew and Sam - ребята из Гонконга, на чьи плечи легла страшная обязанность провести рефакторинг одной программы с целью заставить ее работать с нашими веб-сервисами.

Начну с начала. Не успел я появиться на рабочем месте как сразу же пришлось делать кучу дел: запрашивать доступы, делать звонки, просить поставить нужные программы, на почту повалили письма (штук 20 в день). Даррен прислал список того, что нужно сделать и установить. Там были, помимо прочего, такие штуки как Cygwin и FreeMind. Мы с ним как-то говорили и он вскользь спросил использовал ли я карты памяти (Mind Map). Узнав, что да, включил FreeMind в список нужных программ. А Cygwin - это чтобы мне как юниксоиду было привычнее жить в Windows. Какая забота :)

Первое что мне поручил Даррен было изучение методологии Scrum. Распечатал 20 страниц текста и засел читать и конспектировать. Много времени это не заняло. Дальше пошло мощнее. Первые дни мы с ним подолгу беседовали, он мне объяснял всю эту финансовую мудрость. Надавал кучу ссылок на википедию, которые нужно было прочитать, дал книгу "Options, Futures and other Derivatives", сказал на что там обратить внимание.

Так как мы работаем по одной из Agile методологий, то каждый день у нас проходит Stand Up Meeting. Сидеть нельзя :) Лин, правда, все равно сидит. Там мы, согласно методологии, рассказываем кто что сделал, кто что планирует сделать и какие есть препятствия (blockers). Первое время мне особо было нечего сказать, но раз уж я в команде, то надо делать то, что надо. Вот и докладывал каждый день что изучил. Ниже примеры того, что я сделал руками. Это, значит, Mind Map по классификации деривативов:

Даррен просил обратить большое внимание на методику оценки стоимости опционов Блэка-Шоулза. Что это такое? Это матан! На английском, разумеется. Вот, одна из страниц. Наконспектировал:

Кто-то еще помнит что такое функция плотности распределения случайной величины? По-английски это будет density function. А еще есть cumulative function. Как это по-русски я не помню. Да и не надо. Разобрался, в общем.

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

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

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

Бился я над ней довольно долго, включил все мыслимые механизмы трассировки. В итоге получил страниц 15 SQL запросов. С вызовами удаленных методом пришлось бороться радикально. Вспомнил, что в январе неслабо накуривался аспектно-ориентированным программированием и понял, что хоть тресни, а тут без него не обойтись. Впаял в программу аспект AspectJ, который журналировал все вызовы всех методов. Короче, заминировал все входы и выходы. Никуда не денется, а попадется то место, которое ищу. Оно и попалось после нескольких часов вкуривания километров журналов.

Итогом этого всего стал документ, в котором я отобразил схему базы данных, вернее, той ее части, которая фигурировала в запросах. Отрезал все лишнее, провел связи, сделал схему на своем меленьком сервере Derby. Потом из этой схемы генерировал доменную модель объектов Hibernate. Таким образом удалось подобраться непосредственно к написанию веб-сервиса.

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

Я с этим вопросом подошел к Лин и допросил. Какого, собственно, ты так сделала? Ответ банален: взяла то, что работало. И про декларативную демаркацию транзакций ничего не знает. Мда. Надо пробивать у Даррена. По этому поводу состоялось несколько разговором втроем: я, Даррен и Дермот. И на Stand Up Meeting я этот вопрос тоже ставил. Вроде, все согласны. Только Даррен сказал сделать это самому, показать всем и будем взвешивать все за и против. Чего там взвешивать? Ну да ладно, сделаю.

И немедленно сделал!

В пятницу закончил делать свой Data Access Object, на который для пущей убедительности был навешен еще и интерцептор для переинициализации источника данных путем простого обращения к JNDI. Это чтобы совсем не думать откуда идут данные, а просто писать что нужно с ними сделать. Просто и быстро.

Несколько раз я уже оставался на работе до 8 вечера. Так получилось и в пятницу. Часов в 6 подошел Даррен со своим обычным "How's it going?" Я ему все показал, рассказал, полчаса потолковали про то как быть. Сказал, что транзакции нам делать придется, он узнал про какой-то такой требуемый функционал. А я что говорил?

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

В Гонконге происходит своя движуха. У нас каждый день на Stand Up Meeting виртуально присутствуют Мэтт и Сэм. Они тоже в нашей команде, хоть и в Гонконге. Та программа, которую я вывернул мясом наружу с помощью AspectJ будет подвержена ими рефакторингу. Поначалу Мэтт просто показывал свой пессимизм по этому поводу. В последнее время, с пониманием ужаса ситуации, он стал даже ругаться матом. Даже осуждать его не хочется, я понимаю, программа страшная.

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

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

Вообще, капитализм оказался как-то мягче, чем можно было подумать. Обстановка на работе довольно расслабленная, но это не отменяет необходимости иногда задерживаться там, хотя никто не заставляет. Даррен хоть и мой фактический начальник, но считать его таковым рука не поднимается. Такой же как все, сидит за таким же столом с таким же компьютером и IP телефоном. Занимается тем, что делает нашу жизнь легче и осмысленнее: планированием, организационными делами, бюджетом... Недавно на презентации выступал перед Macquarie Securities Group. Вроде как начальник, но свой в доску. Почти каждый день подходит интересуется как дела, есть ли неразрешимые проблемы. Если есть - быстро их пытается ликвидировать.

Дресс-код есть, но он не особо заморочный. Если тебе надо работать с клиентами - то костюм. Если нет - Smart Casual. А по пятницам можно и просто в джинсах прийти. На тимбилдинг не нарывался. Там у нас и так уже команда сбивается, каждый день друг другу докладываем кто чем занимается. Про совместные мероприятия не слышал пока что.

Вот, вкратце, то, чем я занимался последние 2 недели и какие впечатления у меня остались. А сейчас начинается медийная часть поста. Собственно, вот вид назад с моего рабочего места:

Ближайший справа - Анкур. Второй затылок слева - Даррена :)

Вот так начинается мой рабочий день:

Станция Stanmore:

Как-то раз не смог устоять и купил вот это:

Гомер прав. Mmm...donuts.

Когда работы не было, и делать было нечего, я поймал таракана. Большой такой, сантиметра 4. И бегает, зараза, быстро. Долго думал что с ним делать. Оставил решение этого вопроса до утра. Утром запечатлел его:

Что? Ничего не видно? А так?

Потом, как водится, убил. Только не скажу как, а то разговаривать со мной перестанете :)

Ну, делать нечего было, можете это понять?

Вроде, на текущий момент новостей больше нет.

27 комментариев:

  1. Съел?

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

    Кстати, про Гомера: с пончиков все начинается, а потом ты пожелтеешь и появится Мардж. :) Не совершай ошибок Симпсона.

    ОтветитьУдалить
  2. Чего ему меня опасаться? Я ведь пока ничего особенного не сделал, просто поставил много вопросов и сделал несколько предложений. Реальный продукт начну выпускать завтра.

    Знаешь, по мне так Мардж - ну просто идеальная жена. Кто ж был бы против? Только для этого пончиков недостаточно :(

    ОтветитьУдалить
  3. Конечно, она же нарисованная и является проекцией дум сценаристов.

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

    ОтветитьУдалить
  4. Нет, ну фотографии таракана - это уже перебор! :) Брр!..

    ОтветитьУдалить
  5. To Nick:

    Да издеваются так же как и везде. На работе скрины, вроде, остались. Надо?

    Bender's back? Where's your Bendërbrau booze?

    To Anastacia:

    Так и знал, что не понравится. А что, кроме него ни почитать ни посмотреть не на что? :(

    ОтветитьУдалить
  6. Отправь, если не секретно.


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

    ОтветитьУдалить
  7. Ого. Вот так меня еще не отмазывали никогда.

    ОтветитьУдалить
  8. Я обрамил тот кусок тэгом СПГС, а мерзкий blogger.com их выкинул. Ну и так понятно.

    ОтветитьУдалить
  9. Кагбе шутливый.

    Жгут товарищи из суверенного лепрозория!

    ОтветитьУдалить
  10. To Nick: Это было шедеврально!
    To VoxUnius: Не обещаю столь же глубокий разбор текста, как у Коли... )
    Фото кабинета - там много народа, это кто? Другая команда? Общаетесь?
    Еще, тетрадка - твой почерк? Конспектируешь на англ.?

    ОтветитьУдалить
  11. Это не кабинет, а просто вид назад. Там одно сплошное пространство. Народ сидит разный, в основном, программисты. Но я знаю только своих, из команды. Не общаемся. Работаем :)

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

    ОтветитьУдалить
  12. Артур, Яна просила приглашение. Первое она потеряла во всем множестве своей почты. iepol@mail.ru

    ОтветитьУдалить
  13. Поражаюсь с тебя, братишка. Пишешь как писатель, все доступно и интересно (хоть и записки с Марса), но таракан, меня тоже не оставил равнодушным :-), страсть к насекомым не дает тебе покоя (чего стоил паук заспиртованный )))). Кстати, закончил новый микс, так что загляни http://ed-rus.promodj.ru/
    Рад за тебя, удачи во всех начинаниях.
    з.ы. Ты всех порвешь, я уверен!

    ОтветитьУдалить
  14. To ED:

    Вот с этого места поподробнее: кого/чего там Артур в юности еще спиртовал. А то он скрытный. :)

    To VoxUnius:
    Для хранения формалин лучше подходит.

    ОтветитьУдалить
  15. To ED:

    Спасибо за мнение. Стараюсь. А микс твой я давным давно скачал, только не признался. Ты где такой качественной колбасы набрал? :) Меня вштырило на несколько дней.

    To Nick:

    Биографом моим стать хочешь? :)
    В 1998 году в/на Украине я поймал паука-крестовика. Хотя, нет, я их штуки 3-4 поймал. Здоровенные такие твари. Одного заспиртовал и привез домой. Вот и вся история. Остальных кого склевали куры, кто по воде сам уплыл. Одного выпустили на воду, но он, оказывается, умел плавать как водомерка. Уплыл куда-то.

    P.S.: Куры все остались живы и здоровы.

    ОтветитьУдалить
  16. Артур, очень мощное начало, я уже не говорю о языке IT, а как же с финансами- неужели и в него так сразу погрузились? Кстати , как насчет различных perks? ( если не секрет)просто интересно какие они бывают там.

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

    Самый главный perk у меня был в самом начале, когда мне накинули 25 долларов в день сверх того, что я просил. А так, вроде, больше ничего. За исключением хорошего рабочего места, нежесткого графика и бесплатных перекусов с напитками. Есть даже пиво. Я не пью, но народу, видимо, нравится.

    ОтветитьУдалить
  18. Артур, если ты не забыл мой личный адрес, отошли туда адрес твоей электропочты.

    ОтветитьУдалить
  19. Ходят слухи, что ты идешь смотреть Формулу?

    ОтветитьУдалить
  20. Иду? Как это? Она ж в Мельбурне.
    Георгий явно преувеличивает.

    ОтветитьУдалить
  21. Да? А мы надеялись увидеть тебя с российским флагом... )

    ОтветитьУдалить
  22. Флаги.

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

    ОтветитьУдалить
  23. Меня это уже не волнует, слава богу. Думать не хочется об эмиграции. Поганый процесс :(

    ОтветитьУдалить