четверг, 2 февраля 2012 г.

SCA - результаты использования

Прошло некоторое время, и уже можно сделать некоторые выводы относительно использования SCA.

В начале проекта было не совсем понятно что это такое, и зачем оно нам нужно... да и нужно ли вообще. Но по прошествии некоторого времени стало ясно, что: а) совершенно точно это нужно и б)
потратив немного времени вначале мы добиваемся 3 важных целей:
1. Ограждаем себя и других от элементарных (иногда и не очень) граблей.
2. Во время код ревью тратим больше времени на понимание "что здесь происходит" и меньше на "как это написано"
3. Автоматическое поддерживаем дисциплину и порядок на проекте. Хмм... есть более "народная" версия этой цели, но об этом чуть позже:)

Как это было:

Tycho - первые впечатления

Tycho - maven плагин для сборки плагинов, update site и других запчастей для Eclipse.
В принципе, это очень полезная вещь (для PDE разработчиков). Но есть несколько неприятных моментов, которые мешают полноценной работе:(
Итак, мои впечатления от работы с Tycho:

понедельник, 12 декабря 2011 г.

Sonar + Maven3 + multimodule project

Недавно на проекте возникла таинственная ошибка: при выполнении sonar:sonar сборка валилась с ошибкой, которая якобы вызвана невозможностью обработать некий класс (имя класса не имеет значение). Весь стектрейс заканчивался вот такой строчкой:
cause at: org.sonar.api.resources.DuplicatedSourceException: ИМЯ_КЛАССА


Загадочная эта ошибка по нескольким причинам:
1. Проект полностью собирается, и со всеми классами все нормально
2. Эта ошибка воспроизводится только на Linux (та же сборка на Windows машине происходит нормально)
3. Тем, как она разрешилась :)


Гугление вывело на вот этот тикет. Там идет довольно длинное обсуждение похожей проблемы, и все заканчивается вот такой фразой:
After some investigation, I found out that the problem was the maven-javadoc-plugin version 2.6. After updating to 2.7 every is working fine now!

"Но у нас в проекте не собираются JavaDoc-и" была первая мысль. "А что, если попробовать добавить?". Добавил... и sonar:sonar сразу заработал:)

суббота, 26 ноября 2011 г.

Цифры

Некоторые выводы:

Цифры/сроки

От 20% до 50% времени уходит на активности "около работы". Т.е. если эстимейт предполагает на 1 мес. разработки, то все может затянутся на 2 календарных месяца.


Зависимость кол-во оверхедов от длинны проекта не линейная. Если проект маленький - оверхеды маленькие. Скорее всего потому, что к проекту относятся как к чему то временному и не существенному.
Если проект средний (12-18 ес), то оверхед просто громадный. Объем работ не сильно большой, а подготовка/бюрократия уже "не детская" (тяжеловесные подходы к организации процессов).
Если проекты большие, то оверхеды начинают теряться в общей массе (по появляются др. моменты, связанны с "затяжными прыжками").


Напряженная работа начинает напрягать где то к концу 2-3 недели. Появляется дискомфорт и чувство усталости. Ритм 2 недели "по полной", потом неделя "на расслабоне" дает неплохие результаты.

Овертаймы начинают чувствоваться к начал след. недели. 5 дней + овертаймы + еще пару дней - еще можно работать. Далее начинается спад продуктивности, внимательности и т.д. Как можно работать 5-7 недель без выходных - для меня загадка...


Общение с заказчиком


Отсутствие обратной связи от заказчика, начинает напрягать уже к концу 2-го релиза. ~1 недели молчания после поставки достаточно, чтобы команда немного напряглась. К 2-3 релизу это перерастает в легкую форму пофигизма.

В среднем, задержка полноценного фидбека может достигать 1 релиз. Делаем уже 5-й, а получаем окончательную информацию только по 3-му. Календарное время - примерно 1-2 мес.

Наверное стоит держать контекст фичь еще, как минимум 1 мес. после релиза. А лучше 2-3.

Акцент заказчика может оказаться самым неожиданным для вас. 70% вопросов задаются по "очевидным" для вас моментам. 25% по мутным и недостаточно документированным фичам, и 5% вопросов обращаются к по настоящему проблемным местам, которые не были известны вам.


коммиты/поток изменений


Самый большой барьер - начало.
Начало проекта. Необходимо приложить все мыслимые усилия, чтобы в начале проекта работа началась. Первые 10-20 коммитов очень важны. Нужно лить что угоно (струкру директорий, скелет проекта, шаиблоны и документу) - не важно, важно чтобы лед тронулся. Когда люди начинают работать с СВН и ВИКИ, то начинают появляться вопросы, начинаются шевеления и команда начинает движение вперед.
Начало релиза. В начале релиза наблюдается провал. Не такой громадный, как на старте проекта, но все же... Старое сделали, новое еще не начали. Что делать? Когда и с чего начинать? Главные и второстепенные цели этого релиза. Надо приложить максимум усилий, чтобы ответить на эти вопросы (и донести ответы до команды). Без этой информации наблюдается штиль. Возможно, лучшим вариантом было бы начать отвечать на эти вопросы уже в конце прошлого релиза (умным языком "начинать планировать следующий релиз, в конце ткущего"), но в реальной жизни небольших команд не всегда это получается. Релизы обычно довольно напряженные, основной фокус - поставка, а вопросы анализа и планирования как то теряются.


Максимум активности - середина и конец релиза. Середина - все на крейсерской скорости. Конец - все "в теме", и происходит куча небольших исправлений (допиливаний). Начало релиза - не совсем понятно с чего начинать и иногда требуется доработка дизайна.

суббота, 5 ноября 2011 г.

Русский в консоли

Печально, но до сих пор приходится ковыряться с проблемами локализации в Linux.
В Ubuntu (10.10, 11.04 и 11.10) в виртуальных консольках (tty1-6) не отображается русские буквы. Самый простой способ исправить:
sudo apt-get install console-cyrillic
dpkg-reconfigure console-setup
dpkg-reconfigure console-cyrillic
sudo nano /etc/rc.local

В конец, перед выходом, добавляем setupcon:
setupcon
exit 0

SUN/Oracle JDK + Ubuntu 11.10

В последней версии Ubuntu пакеты 'sun-java6' убрали из всех репозиториев. Есть 2 способа пофиксать эту проблемму (если OpenJDK по каким то причинам не подходит):

Manual

В ручную скачать установщик, установить его и зарегистрировать все что надо (см: здесь).
Способ чуть сложнее, но в результате получаем самую свежую версию (и более ясное понимание что и где лежит).

PPA repository

sudo add-apt-repository ppa:ferramroberto/java
sudo apt-get update
sudo apt-get install sun-java6-jdk sun-java6-plugin
sudo update-alternatives --config java

Способ заметно проще и быстрее, но последняя доступная версия 1.6.0_26.

суббота, 15 октября 2011 г.

"Интересный" проект

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

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