![]() | Вы читаете журнал Вход Создать аккаунт в ЖЖ Подробности | Исследуйте LJ: Жизнь Развлечения Музыка Культура Новости и политика Технология |
Тема внедрения евангелизма прошла в компании обсуждение. С моей точки зрения, нашему виденью не хватало двух вещей:
Цель
Были занесены в цели “оптимизация текущего процесса разработки”. Также еще более обобщенно и расплывчато: “do the right things”. Конечно все интуитивно понимают что на практике лежит за этими словами, но если оставить подобные формулировки, то у евангелиста есть серьезный риск впасть в грех узкой специализации: формальный метод может стать самоцелью. Описания техник могут казаться deliverables, хотя это не так.
Цель должны быть такая, чтобы она могла заставить сказать евангелисту сказать “стоп! Scrum не работает. Переключаемся на что-то другое.” Цель должны быть осязаемой. И в идеале должны быть возможность в реальном времени оценивать приближенность к цели.
У нас не очень эффективное и качественное производство. Может быть найден простой параметр который, пусть и однобоко, опишет наше качество. Например кривая багов? Улучшение этой кривой и станет целью евангелиста.
Есть мнение ,что “ С самого начала у нас нет базиса для того, чтобы строить формализованную систему оценки, контроля, методик и т.д. ”.
У нас нет, но у индустрии есть. Надо посмотреть.
Проактивность
“Я бы пошел по пути экспериментирования, чтобы для начала «почувствовать», как это работает в нашем коллективе”.
То есть в очередной раз мы просто пробуем. А значит напрягаться особо не надо, ведь это ”эксперимент”. Не получится – не страшно. То есть вкладываем какие-то усилия, инвестиции. Но так как у нас нет цели, мы не знаем – какие инвестиции минимально необходимы, не защищаемся от рисков. Это значит что любая неблагоприятная конъюнктура сделает попытку неудачной.
Конечно мы будем пытаться приспособиться (“какую-то практику нужно убить, потому что толку нет, морока одна») , но еженедельная смена правил сделают методологию фикцией, деморализует команду.
Может не плыть по течению, надеясь что занесет в теплые края, а наметить цель и добраться до нее осознанными шагами?
Будем искать конректику.
Недавно, в нашей компании обсуждалось состояние дел с процессами разработки. Неожиданно выявилось, что многие элементы процесса «провисают», процедуры выполняются не всегда и не всеми. Почему это происходит даже с грамотным project manager'ом и хорошими разработчиками?
Это происходит так как каждый занимается своим делом. Теоретически, это задача менеджера, но что происходит на самом деле? Руководитель проекта- это executive, человек корпоративный. Корпорации оцениваются по цифрам. Не важно спасает ли корпорация мир или это корпорация зла, на самом верху есть цифра «earning per share». Если копать глубже, разбираться с тем как эта цифра формируется, то получатся еще цифры, еще и еще. Но в какой-то момент должно появиться реальное наполнение деятельности компании, которое не всегда удается отразить цифрами.
Процесс и метод не должны подменять конечный результат разработок – продукт. Но «приподнятие» цифр за счет качества процесса является синдромом любого executive. Он тоже прав – нельзя же оправдать задержку релиза тем, что недели ушли, например, на «UnitTest mock» - на нем компания денег не заработает. Но и ясно насколько эти «срезания углов» вредны в долговременной перспективе, особенно в проектах живущих 5 и более лет.
Поэтому нужен баланс между цифрами и чистотой метода. Налицо конфликт интересов, и разрешить его в голове одного человека тяжело. Значит есть необходимость во втором лице – проповеднике чистоты метода, пропагандиста великого. И название для этой позиции уже давно придумано – технический евангелист.
В предыдущем посте я остановился на том, что нам потребовалась стратегия перевода проекта на новую платформу с минимальным ущербом и для краткосрочных интересов компании. Для этого необходимо чтобы выполнялись следующие условия:
В большинстве случаев, в своей практике мы пользуемся agile методами. Но вышеперечисленные условия не очень хорошо вписываются в гибкие методы. Нам нужны гарантии, а они ожидаемы скорее при использовании формальных методов, а самый далекий от гибких методов – это сильно критикуемый waterfall.
Основная критика водопадной модели сосредоточена вокруг изменчивости требований: заказчики не имеют представления о том что им нужно. В нашем случае это не так. Функциональная спецификация продукта полностью задана предыдущей версией, ни о каком feature cut'е и речи не может быть. Весь функционал используется заказчиками, и нам нужен прозрачный для клиентов переход на новую платформу.
С другой стороны, нам нужны минимальные сроки отвлечения команды разработчиков от других заказов. Это достижимо только через тщательное планирование. За счет полной проработки системы на этапе планирования, ранних прототипов и исследований будет решена проблема лишнего кода. Этот оверхед кода и работ по его рефакторингу появляется из-за слишком маленького горизонта планирования в agile методах.
Таким образом наша компания согласилась со следующей последовательностью действий:
Мы попытаемся воспользоваться теоретическими плюсами plan-driven разработок, но, на всякий случай, все будет готово к возврату в agile.
Некоторое время назад, было принято решение об отказе от собственного сервера приложений и переходе на IIS\ASP.NET. Это иронично, что с радостью выбросив собственную платформу, ее PUSH модель событий и перебежав в лагерь REST, мы очень быстро столкнулись с потоком беженцев навстречу. Желание “Web’овцев” через хак, реализовать то что нам давалось так легко, и что мы так легко бросили, навивает на мысли об отсутствии счастья на земле.
Было проведено небольшое исследование реализации PUSH технологии в AJAX приложении на примере интеграции GTalk c GMail. Короткое изложение реализации выглядит так:
Таким образом, клиент должен уметь обрабатывать приход контента по кускам, а веб сервер должен уметь держать соединение, сокет и поток.
Чем же хорош Comet, чем PUSH лучше POLL? Видимо это два пункта:
Первый пункт мне кажется более значимым. Но его важность зависит о характера приложения в котором задействован PUSH. В случае GTalk очевидно, что скорость получения клиентом сообщения очень важна, ведь это Instant Messaging.
Теперь рассмотрим очевидные недостатки, их три:
Больше всего меня беспокоит второй пункт, так как он означает значительное усложнение реализации кластерной версии продукта. Я считаю это критичным.
В завершение, я хочу вспомнить для чего используются события:
Сейчас мы выбрали POLL запросы, а значит уведомление будут приходить клиенту с точностью в 1-10 секунд, а изменившиеся ресурсы будут приходить на сервер целиком. Это не оптимальное, но заведомо более простое и дешевое решение.
Если требования по скорости уведомления клиентов резко возрастут, нам придется снижать время между POLL запросами. Возможно что ресурсы начнут очень часто меняться, и размеры этих ресурсов будут велики. Тогда и клиент и сервер начнут задыхаться из-за потока запросов и данных.
В этом случае мы воспользуемся Comet. Воспользуемся в найденных узких местах. Применение технологии прямо сейчас, я считаю неоправданным.
| Вс | Пн | Вт | Ср | Чт | Пт | Сб |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |