Мы работаем на джаве. И с самого начала, с тех пор, как мы начали писать что-то свое, и Джеф, и Боб сказали, что все будет так, как я хочу :)), что никакие базо-данновые решения без меня приниматься не будут. И вообще никакие системные решения. И это было очень-очень здорово, а почему - это поймут и оценят мои "товарищи по должности".
Следующим важным этапом было одномоментное разрешение вопроса с ORM. Я готовилась к обычной битве, вытащила на свет божий свои пять версий моих слайдов по этому вопросу, и тут вдруг Джеф спокойно говорит, что он прекрасно знает, что лучше без Hibernate, и что они готовы работать с моими процедурами.
Самое начало нашей работы было не совсем гладким, потому что наша команда только набиралась, и большой кусок работы делали удаленные кносультанты. Не то, чтобы нельзя было это все делать с ними, но... не стоило усилий - со временной командой. Собственно, это все не так важно, важно то, что нынешний проект - первый, который мы делаем полностью нашими внутренними силами.
Мне было очень важно оправдать доверие. Когда вся команда разработчиков говорит, что они готовы делать "по-моему" - вы представляете. Ни в коем случае нельзя дать повода об этом пожалеть. А это значит, что все "мое" - и структуры данных, и функции, должны быть готовы до того, как все другие начинают работу. И т.к. на самой работе у меня никогда не получается, чтобы было несколько часов, когда никто не дергает, каждый из этих марш-бросков получался либо вечерами, либо в выходные. Но каждый раз было четкое понимание, зачем я это делаю.
Я понимаю, что для разработчиков приложений "работать по-моему" - это отклонение от стандарта. От того, чему их учили :). Поэтому я всегда делаю все, чтобы облегчить им переход на новый способ действий. Например, мне удобнее было бы, чтобы они мне передавали именованные параметры, а им удобнее мне передавать "всю кучу" (на самом деле, json object :)). Ну и хорошо, у меня есть функции, которые эту кучу разберут на кусочки и сгенерируют то, что мне надо на выходе.
Теперь про самую последнюю задачу. Мы дошли до того места, на котором я всегда спотыкаюсь с разработчиками: когда мне нужно возвращать из базы данных встроенное в запись множество (простой пример: данные о человеке, включающие список всех его телефонов). На этом месте я уже, действительно, бывала много раз, и каждый раз выяснялось, что даже когда приложение умеет правильно прочитывать запись или множество записей, которые возвращает процедура, оно не может залезть внутрь этой вложенной записи... причем, как я теперь знаю, это даже не их проблема, а базы данных...
Обычно, после суток тыканья во все стороны разработчики мне говорят: знаешь, Хетти, давай мы все же по-старому тут, видишь, мы искали и пробовали, и не получается. А тут - Алиса нервно объясняет, что она и так, и так пробовала, а Джеф невозмутимо: давай еще поищем! Алиса: сколько времени ты готов на это выделить?! Джеф: еще некоторое время...
Провели за этим делом еще полтора дня. Алиса говорит: ничего не получается, давай возвращай вместо множества json... ну, я еще слегка постояла на ушах, чтобы там все выводилось, как надо, и было такое счастье, когда получилось все, как надо! Потом мы еще несколько раз доотлаживали, уточняли и исправляли ошибочки, но главное - все заработало!
Алиса тут же жадно спросила: а ты можешь вообще все так возвращать? Я задумалась. Вспомнила, как несколько лет назад слушала доклад как раз про это. Сказала: сейчас я много чего сделала вручную. Если это превращать в систему, то мне надо сначала разработать аппарат, который все это будет автоматически делать, на основе каталога базы данных. Я не вижу абсолютно никаких принципиальных трудностей, но это - работа. Ты не сможешь столько ждать. Но я бы очень хотела так сделать:). Давай поговорим с Джефом.
Назначили разговор. Я начала "оправдываться", что-де я понимаю, что никто не хочет все заново переписывать. А Джеф послушал и говорит: то, что сейчас работает, и Алиса может работать дальше. А ты сможешь параллельно автоматизировать все, что надо. А когда закончишь, Алиса перепишет по-новому. Это не страшно, что надо будет переписать. Мы ведь работаем на перспективу.
Когда я, не веря, что счастье так возможно, отрапортовала о наших достижениях на утренней летучке, а Джеф сказал, что мы напишем, по сути, свой ORM, молодежь стала заинтересованно спрашивать, можем ли мы теперь говорить, что мы используем "передовые технологии" (cutting eadge technologies)?
И знаете - это ведь так здорово, что для них это важно.