Иногда самая невинная фраза может прозвучать угрожающе. «Вам повестка» – в адрес восемнадцатилетнего юнца, или «две полоски» – от заплаканной подружки. У нас в офисе иногда раздаются не менее тревожащие слова, слова, содержащие в себе предложение перенести какую-то задачу на второй этап.
Подробнее
Второй этап
О доверии и контроле
Пару месяцев назад меня спросили, доверяю ли я своим сотрудникам. Я ответила согласием, твёрдо и без малейшей паузы. С тех пор у меня было время подумать – и над вопросом, и над моей на него реакцией.
Подробнее
О планировании, или парадокс лжеца
Проверьте перечисленные ниже утверждения на непротиворечивость:
- Control freak всегда лжёт.
- Control freak предупреждает, что следующее его высказывание – ложно.
- Control freak утверждает, что любит заниматься планированием.
Мне кажется, я могла бы больше ничего не писать, но всё-таки добавлю ещё несколько абзацев.
Подробнее
Слоны против муравьёв: команды с различающейся скоростью работы
Однажды слон и муравей решили вместе построить плотину. Слон взвалил на себя работу посложнее – перетаскивать огромные брёвна. Примерился к бревну, обхватил его покрепче – и понёс, печально покачивая хвостом. Муравей, маленький и непоседливый, выбрал работу себе по плечу: схватил веточку – и бегом, схватил другую – и вприпрыжку, схватил третью – и только его и видели.
Руководя отделом, работающим по конвейерной схеме, я периодически ощущала себя тем муравьём, вынужденным соизмерять свой темп с неторопливостью команд, выпускающих связанные с моей компоненты.
Подробнее
«Рубильник» как инструмент для изменения поведения портала
Когда я рассказывала о планировании действий на случай возникновения проблем при выкладке релиза, я упоминала «рубильник» в качестве одного из способов быстро скрыть неудачный функционал от пользователей. Сегодня мне хочется поговорить об этом инструменте подробнее.
Подробнее
Выкладка релизов (часть третья) – момент деплоймента
Мы хорошо подготовились к релизу, определили, каким способом будем проводить деплоймент, собрались с духом – выкладываемся? Стойте, стойте, я хочу на дорожку дать ещё пару советов.
Подробнее
Выкладка релизов (часть первая) – подготовка
Как ни приятно сосредотачиваться на организации правильных процессов в разработке, зарплату и премию нам дают всё же за результат. А что является результатом труда разработчика, как не появление новой функциональности на боевых серверах? Что ж, поговорим о том, как сделать процесс деплоймента наиболее эффективным, безопасным и быстрым.
Предположим, что у нас уже есть готовый к выкладке пакет, аккуратно собранный, протестированный, ожидающий превращения в релиз. Не пора ли ёлочке загореться?
Подробнее
Пакеты задач в системе контроля версий
Использовать пакеты для объединения входящих задач в единую предназначенную для управления сущность – удобно. Но если бы вся выгода от внедрения пакетов заключалась только в их организационной составляющей, сомневаюсь, могла бы я с такой уверенностью советовать их кому бы то ни было.
Достоинство пакетов в том, что они легко и непринуждённо превращаются в знакомые всем ветви системы контроля версий.
Подробнее
Не релизом единым жив человек
В каком релизе и когда выйдет этот функционал? Сколько времени нужно на тестирование релиза и когда оно закончится? Сколько релизов выйдет за квартал? Такие привычные вопросы, такие естественные – и такие временами раздражающие.
Мне понадобилось несколько месяцев работы на конвейере, чтобы понять, что именно не устраивает в использовании релиза как консолидированной сущности для разработки, тестирования и выкладки функционала:
- Релиз появляется тогда, когда принято решение о необходимости выкладки того или иного набора задач на боевые сервера. Обновление боевой среды – процесс строго последовательный, и выложить седьмой релиз до пятого нельзя. Сохранение жёстко заданной последовательности не кажется проблемой при малом количестве релизов, медленной разработке и аккуратном планировании на несколько месяцев вперёд. Но как быть, если завтра к вам придут с задачей, которая должна появится на боевых уже послезавтра? Изменять заранее декларированную последовательность релизов? Нарушать нумерацию? Выпускать хотфиксы, являющиеся, по сути, мелкими релизами? Да, иногда можно и так – но нельзя ли лучше?
- Релиз многими воспринимается как нечто неделимое и неизменяемое. Не успели добавить заказ в девятый релиз? Увы, вам придётся подождать десятого. Нашли при тестировании баг? Выпускаем новый билд и тестируем его заново. О, как это негибко! И совершенно неприемлемо в условиях постоянной смены приоритетов и требований. Если я хочу уверенно жонглировать входящими задачами, выкидывая наверх то самую нужную сейчас, то наиболее готовую, то наименее опасную, я не могу позволить себе ни длительного планирования, ни отказов заказчику на том только основании, что текущий большой релиз уже давно в тестировании.
Решение нашлось простое: оставить за релизом только одну функцию – деплоймент, а разработку и тесно связанное с ней тестирование передать новой сущности – «пакету задач». При этом релизы остаются строго последовательными, а пакеты распараллеливаются на произвольное количество потоков.
Подробнее
Внутренняя документация – один пишем, два в уме
Никто никогда не требовал от меня написания какой бы то ни было документации, но что мне отсутствие указаний! Если хочу, если чувствую, что это полезно и правильно, – буду писать сама и своих ребят заставлю.
Откуда у меня такая убеждённость в необходимости внутреннего документирования? Думаю, как-то повлияла необходимость разбираться в чужом объёмном коде, быстро и без возможности пообщаться с авторами, в большой и запутанной системе, и снова быстро, быстро, быстро… Я начала записывать что-то сначала для себя, локально, затем перебралась на удобный wiki-движок. Ну да не в инструментах дело.
За несколько лет я немного поняла, что, как и для кого надо писать. Готова поделиться.
Подробнее
Оценка входящих задач
Работа на конвейере или сны, которых не видел Форд
Метафору, имеющую несколько смыслов, использовать опасно – сложно предсказать, в каком контексте она будет воспринята собеседником. Но иногда удержать от соблазна очень сложно. Когда я думаю о своей работе, я вижу конвейер. Иногда это дребезжащая лента транспортёра, иногда – длинный стол с микросхемами, над которыми стоят инженеры в масках. Но всегда – бесконечная деятельность, то чуть замирающая, то набирающая скорость. Деятельность многих людей, синхронно и без перерывов, оглядываясь друг на друга, ведущих рабочий процесс.
Каждый этап работы на конвейере, от оценки задачи на входе до планирования выкладки результатов на боевые сервера, достоин отдельного описания. Сейчас мне хочется перечислить только некоторые базовые принципы успешной организации работы.
Подробнее