Время — деньги или несколько способов спасти программиста

от автора


Некоторые люди консервативны по своей природе, это всегда мешает принятию чего-то нового. Мне до сих пор непривычно использовать Google Docs вместо Word, хотя, когда речь заходит о совместной работе, преимущества первого неоспоримы. Многие компании (порой даже весьма крупные), занимаясь разработкой программного обеспечения, игнорируют доступные способы повышения производительности труда программистов. Например непрерывную интеграцию (Continuous Integration/CI), которая упрощает процесс разработки и контроль проекта. Готовые решения существуют на рынке давно. К сожалению, до сих пор кто-то продолжает издеваться над сотрудниками, теряя время и деньги. Этот пост — желание поделиться опытом успешного внедрения непрерывной интеграции, и, быть может, попытка достучаться до некоторых менеджеров. Ведь зачастую именно их недальновидность препятствует оптимизации производства.

Проблема


Любой проект начинается с получения технического задания. Далее следует анализ требований, программирование и тестирование. Все завершается выпуском продукта. Следуя этой «классической» схеме, программистам на стадии тестирования и выпуска приходится делать сборку проекта. Обычно этот процесс производится «вручную» и может занимать от нескольких минут до нескольких часов. Бывает, что необходимо сделать несколько версий (конфигураций) одной сборки. Например, если на стадии тестирования выявляется ошибка, то весь цикл приходится повторять снова и снова. Количество рутинных операций возрастает экспоненциально сложности и объему проекта. Программисты весьма ценный ресурс, чтобы растрачивать их силы попусту. Сколько, по-вашему, времени они теряют в неделю, месяц, год?

Существует практика разработки программного обеспечения Continuous Integration. Она позволяет автоматизировать выполнение сборок проекта для скорейшего выявления и решения интеграционных проблем. Смысл состоит в том, что с заданной частотой код, хранящийся в репозитории, подвергается автоматической сборке. Сборки могут происходить в разных конфигурациях. Это позволяет решить ряд проблем: выявить ошибки на ранней стадии (сборка покажет ошибку) и освободить время — ценнейший ресурс программиста.

На данный момент один из самых популярных продуктов решающий эти задачи — TeamCity от компании JetBrains. Вам бесплатно предоставляется двадцать конфигураций, плюс три агента для сборки проекта. Это очень удобно для небольших команд и маленьких компаний. Сервер непрерывной интеграции в сочетании с автоматизированными системами управления версиями (Version Control System/VCS), такими как Git значительно упростят вашу жизнь.

Git и контроль версий

Система управления версиями (VCS) — программное обеспечение для облегчения работы с изменяющейся информацией. Софт регистрирует изменения в одном или нескольких файлах, чтобы в дальнейшем была возможность вернуться к определённым предыдущим версиям этих файлов. Программируемый код доступен в едином репозитории.

Git — это распределенная система контроля версиями. В отличие от централизованных и локальных систем, Git не просто выгружает последние версии файлов, но и полностью копируют репозиторий локально. В случае, когда «умирает» главный сервер, через который шла работа, любой клиентский репозиторий может быть скопирован обратно на сервер, чтобы восстановить базу данных.

Благодаря криптографии, Git легко отслеживает изменения в коде проекта. Ситуация, когда кто-то незаметно внес изменения в код, невозможна. Подобный контроль позволяет в любой момент вернуться к нужной версии сборки. В результате вы каждый раз точно знаете, из каких исходников собирается ваш проект — исключается любой момент случайности.

Git был создан Линусом Торвальдсом. Позже появился столь любимый многими (и нами в том числе) сетевой проект GitHub, который предоставляет Git — хостинг для проектов и инструменты совместной разработки.

Немного о тестировании

Никакая разработка программного обеспечения не обойдется без тестирования. Для облегчения распространения тестовых версий мы используем Test Flight. Возможности сервера позволяют: мониторить статистику, создавать опросы, отслеживать логи, собирать отчеты падений, автоматически оповещать о новой версии приложений. Существенно упрощая регистрацию тестировщиков и их поиск. Ранее был доступен только разработчикам под iOS, но буквально на днях разжился поддержкой Android (на стадии beta-тестирования).

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

— Пользуетесь ли вы системой контроля версий?
— Можете ли вы собрать продукт за один шаг?
— Выполняете ли вы ежедневные билды?

Если ответ – да, то вас можно поздравить!

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

ссылка на оригинал статьи http://habrahabr.ru/post/171263/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *