?

Log in

No account? Create an account

Previous Entry | Next Entry

Большой пост про работу

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

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

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

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

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

Я понимаю, что для разработчиков приложений "работать по-моему" - это отклонение от стандарта. От того, чему их учили :). Поэтому я всегда делаю все, чтобы облегчить им переход на новый способ действий. Например, мне удобнее было бы, чтобы они мне передавали именованные параметры, а им удобнее мне передавать "всю кучу" (на самом деле, json object :)). Ну и хорошо, у меня есть функции, которые эту кучу разберут на кусочки и сгенерируют то, что мне надо на выходе.

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

Обычно, после суток тыканья во все стороны разработчики мне говорят: знаешь, Хетти, давай мы все же по-старому тут, видишь, мы искали и пробовали, и не получается. А тут - Алиса нервно объясняет, что она и так, и так пробовала, а Джеф невозмутимо: давай еще поищем! Алиса: сколько времени ты готов на это выделить?! Джеф: еще некоторое время...

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

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

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

Когда я, не веря, что счастье так возможно, отрапортовала о наших достижениях на утренней летучке, а Джеф сказал, что мы напишем, по сути, свой ORM, молодежь стала заинтересованно спрашивать, можем ли мы теперь говорить, что мы используем "передовые технологии" (cutting eadge technologies)?

И знаете - это ведь так здорово, что для них это важно.

Tags:

Comments

( 12 comments — Leave a comment )
el_philippa
Jul. 21st, 2017 04:39 am (UTC)
Хетти, а вы действительно напишете свой ORM?
hettie_lz
Jul. 21st, 2017 12:55 pm (UTC)
Напишу то, что для джавы будет исполнять роль ORM. Примерно то, что мы со Шри сделали в Энове, но там никто это применять не хотел :))
banga_73
Jul. 21st, 2017 05:18 am (UTC)
Так в итоге решилось на Вашем уровне? Или совместно нашли шажки с двух сторон? А чем для Вас json неудобен?
hettie_lz
Jul. 21st, 2017 12:58 pm (UTC)
Совместными шажками, в чем и прелесть. Причем не по-очереди, а по смыслу :).

SELECT возвращает не json, а set of records, так что надо преобразовать, что не хочется делать вручную. Хочется, чтобы Постгрес сам его форматировал. И это и надо написать.
marinta
Jul. 21st, 2017 05:36 am (UTC)
Хорошо! Детали, конечно, непонятны, но впечатление о развитии процесса разработки есть.
hettie_lz
Jul. 21st, 2017 12:58 pm (UTC)
Это очень радует!
enjoy_reading
Jul. 21st, 2017 01:28 pm (UTC)
Да. Здорово и очень приятно!
Поздравляю!
hettie_lz
Jul. 21st, 2017 01:29 pm (UTC)
Спасибо!
marnews
Jul. 21st, 2017 04:58 pm (UTC)
а что значит, что возвращает множество? в каком виде? это output parameter ?
hettie_lz
Jul. 22nd, 2017 08:08 pm (UTC)
ну да. Как любая процедура, которая возвращает, грубо говоря, результат SELECT.
beldmit
Jul. 22nd, 2017 10:07 am (UTC)
Круто.
Хотя я вот переписывать очень не люблю. В частности, потому, что в каких-то местах что-то забудется, и будет не новое API вместо старого везде, а новое и старое вперемешку в неопределённом соотношении.
hettie_lz
Jul. 22nd, 2017 08:07 pm (UTC)
Так нет, сам API будет переписан. Вариантов "новый - старый" не будет.
( 12 comments — Leave a comment )

Latest Month

November 2017
S M T W T F S
   1234
567891011
12131415161718
19202122232425
2627282930  

Tags

Powered by LiveJournal.com
Designed by Tiffany Chow