avl (avl) wrote,
avl
avl

Categories:

15. Коммит без проверки - убийца производительности

(В оригинале Commit-and-run is a crime.

Вторая половина дня. Команда дописывает последние фрагменты новой функциональности очередной итерации, и вы буквально слышите, как кипит работа. Однако Джон сегодня слегка спешит. Он уже опаздывает со своей задачей, однако планирует сегодня закончить. Он набирает код, компилирует его, помещает в систему контроля версий и убегает. А еще через несколько минут все рушится. Билд в нерабочем состоянии. У Джона не было времени запустить автоматические тесты перед помещением своего кода, поэтому он поместил его просто так, без проверки. И тем самым подвесил весь проект. Работа, кипевшая еще несколько минут назад, начинает остывать. Каждый понимает, что если он сейчас сделает uplate из системы контроля, то его локальная копия тоже станет нерабочей. Однако без этого он не может опубликовать свои изменения. А поскольку именно сегодня вечером всей команде нужно интегрировать свои наработки для выпуска предстоящей демо-версии, то ситуация весьма неприятная. Джон очень эффективно убил производительность всей команды, потому что интеграция стала невозможной без необходимости отменить все его изменения.

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

И здесь вам, как архитектору, нужно вступать в игру. Если вы постараетесь создать гибкую архитектуру, обучите людей agile-практикам, к примеру, разработке через тестирование, настроите интеграционный сервер, то тем самым вы воспитаете культуру, в которой не будет правильным тратить чье-либо время впустую. Чтобы это стало реальным, вы должны быть уверены, что система, кроме всего прочего, имеет подходящую для автоматизированного тестирования архитектуру. Это изменит поведение разработчиков. Если тесты будут выполняться быстро, то их будут запускать чаще, что хорошо уже само по себе, однако главное – это то, что разработчики не будут оставаться наедине с испорченным кодом. Если тесты зависят от внешних систем, если требуется база данных, то измените их так, чтобы их можно было запускать локально с использованием симуляторов или заглушек, или хотя бы с использованием локальной копии базы данных, и пусть тесты выполняются автоматически. Люди не должны ждать, потому что в противном случае они будут придумывать обходные пути, что часто приводит к описанным выше проблемам.

Инвестируйте время в создание систем, которые будут работать быстро. Это ускоряет весь поток, делая разработку более быстрой. Используйте симуляторы, уменьшайте зависимости, разбивайте систему на маленькие модули – делайте то, что считаете нужным. Главное – обеспечьте, чтобы у людей не было причин даже думать о том, чтобы сделать коммит без проверки.

Автор оригинала - Niclas Nilsson

Перевод мой. Если вы решите использовать его полностью или частично, не забудьте указать ссылку на мой живой журнал!
Tags: 97_things_architect_should_know, Программирование, Развитие
Subscribe

  • Один день на яхте

    Давно, очень давно хотелось оказаться на яхте. И вот наконец удалось реализовать мечту, пока что на 1 день. Главное — что оказалось, что никого из…

  • Подарок на 8 марта :)

    Фирма удивила, подарив 8 марта ВСЕМ сотрудникам смарт-часы от неизвестного производителя с нанесенным своим логотипом :) Да, в Словении 8 марта -…

  • Подводная лодка

    Давно не писал сюда, т.к. несмотря на отвратительный интерфейс, все переходят в фейсбук... Но все же возможность вставлять несколько фото и управлять…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 1 comment