Control freak

управление версиями, задачами, проблемами и людьми

Конференция «Российские Интернет Технологии 2010» – планы

Метки: . 29 марта 2010г.

Любите ли вы строить планы заранее, как это обожаю делать я? Если да, то вот вам запись из моего календаря: с 12 по 14 апреля я буду на РИТе, а в один из дней – выступлю с докладом о смене web-платформы «на лету». Увидимся?

Выкладка релизов (часть третья) – момент деплоймента

Метки: , . 29 марта 2010г.

Мы хорошо подготовились к релизу, определили, каким способом будем проводить деплоймент, собрались с духом – выкладываемся? Стойте, стойте, я хочу на дорожку дать ещё пару советов.
Подробнее

Обратная связь с заказчиком, или работа за прикрытыми воротами

Метки: , . 26 марта 2010г.

Как известно, заводы компании Toyota работают без складов – настолько хорошо использование концепции «Точно в срок» позволяет управлять поставками деталей для сборки. Но что удалось лидеру рынка по отношению к своим поставщикам, зависимым и не имеющим других (сопоставимых по объёму) рынков сбыта своей продукции, вряд ли удастся скромному тимлиду отдела разработки по отношению к заказчикам/менеджерам, создающим непрерывный, временами сумбурный, переменчивый поток входящих задач. Если бы удалось прикрыть ворота на въезде, пропуская внутрь ровно столько заказов, сколько можно выполнить за единицу времени, планирование и организация работ упростились бы значительно. Мечты, мечты… Но – мечты ли?
Подробнее

Выкладка релизов (часть вторая) – способы деплоймента

Метки: , , . 23 марта 2010г.

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

Выкладка релизов (часть первая) – подготовка

Метки: , . 21 марта 2010г.

Как ни приятно сосредотачиваться на организации правильных процессов в разработке, зарплату и премию нам дают всё же за результат. А что является результатом труда разработчика, как не появление новой функциональности на боевых серверах? Что ж, поговорим о том, как сделать процесс деплоймента наиболее эффективным, безопасным и быстрым.

Предположим, что у нас уже есть готовый к выкладке пакет, аккуратно собранный, протестированный, ожидающий превращения в релиз. Не пора ли ёлочке загореться?
Подробнее

Пакеты задач в системе контроля версий

Метки: , , , . 18 марта 2010г.

Использовать пакеты для объединения входящих задач в единую предназначенную для управления сущность – удобно. Но если бы вся выгода от внедрения пакетов заключалась только в их организационной составляющей, сомневаюсь, могла бы я с такой уверенностью советовать их кому бы то ни было.

Достоинство пакетов в том, что они легко и непринуждённо превращаются в знакомые всем ветви системы контроля версий.
Подробнее

Как избавиться от пустых директорий в cvs

Метки: . 13 марта 2010г.

Дрогнула ли у вас рука при указании имени нового каталога или заказчик пришёл с пожеланием передвинуть страницы из одной папки в другую, неизбежно встанет вопрос – как удалить ставшую ненужной директорию. Смотрим в спецификацию, и получаем честный ответ – никак: «You don’t remove the directory itself; there is no way to do that».

Но как быть, если пустые директории, появляющиеся в рабочей папке после каждого checkout’а, раздражают?

Решение находится легко – позволить CVS хранить в репозитории информацию о пустой папке так, чтобы вы у себя в рабочей папке этого не видели.

Всё, что для этого нужно, использовать ключ –P при выполнении команд update и checkout.

Просто? Примитивно! Но кто, вчитываясь в полный список команд и ключей CVS, с первого раза обратит внимание на такую мелочь?

Не релизом единым жив человек

Метки: , , , . 8 марта 2010г.

В каком релизе и когда выйдет этот функционал? Сколько времени нужно на тестирование релиза и когда оно закончится? Сколько релизов выйдет за квартал? Такие привычные вопросы, такие естественные – и такие временами раздражающие.

Мне понадобилось несколько месяцев работы на конвейере, чтобы понять, что именно не устраивает в использовании релиза как консолидированной сущности для разработки, тестирования и выкладки функционала:

  • Релиз появляется тогда, когда принято решение о необходимости выкладки того или иного набора задач на боевые сервера. Обновление боевой среды – процесс строго последовательный, и выложить седьмой релиз до пятого нельзя. Сохранение жёстко заданной последовательности не кажется проблемой при малом количестве релизов, медленной разработке и аккуратном планировании на несколько месяцев вперёд. Но как быть, если завтра к вам придут с задачей, которая должна появится на боевых уже послезавтра? Изменять заранее декларированную последовательность релизов? Нарушать нумерацию? Выпускать хотфиксы, являющиеся, по сути, мелкими релизами? Да, иногда можно и так – но нельзя ли лучше?
  • Релиз многими воспринимается как нечто неделимое и неизменяемое. Не успели добавить заказ в девятый релиз? Увы, вам придётся подождать десятого. Нашли при тестировании баг? Выпускаем новый билд и тестируем его заново. О, как это негибко! И совершенно неприемлемо в условиях постоянной смены приоритетов и требований. Если я хочу уверенно жонглировать входящими задачами, выкидывая наверх то самую нужную сейчас, то наиболее готовую, то наименее опасную, я не могу позволить себе ни длительного планирования, ни отказов заказчику на том только основании, что текущий большой релиз уже давно в тестировании.

Решение нашлось простое: оставить за релизом только одну функцию – деплоймент, а разработку и тесно связанное с ней тестирование передать новой сущности – «пакету задач». При этом релизы остаются строго последовательными, а пакеты распараллеливаются на произвольное количество потоков.
Подробнее

Внутренняя документация – один пишем, два в уме

Метки: , . 5 марта 2010г.

Никто никогда не требовал от меня написания какой бы то ни было документации, но что мне отсутствие указаний! Если хочу, если чувствую, что это полезно и правильно, – буду писать сама и своих ребят заставлю.

Откуда у меня такая убеждённость в необходимости внутреннего документирования? Думаю, как-то повлияла необходимость разбираться в чужом объёмном коде, быстро и без возможности пообщаться с авторами, в большой и запутанной системе, и снова быстро, быстро, быстро… Я начала записывать что-то сначала для себя, локально, затем перебралась на удобный wiki-движок. Ну да не в инструментах дело.

За несколько лет я немного поняла, что, как и для кого надо писать. Готова поделиться.
Подробнее

Оценка входящих задач

Метки: , . 3 марта 2010г.

Одна, вторая, десятая, сотая – задачи всё появляются и появляются, словно грибы после дождя. И каждая должна быть оценена на входе, до того, как ей найдётся место на рабочем конвейере.
Подробнее

Работа на конвейере или сны, которых не видел Форд

Метки: , , . 1 марта 2010г.

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

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