Agile-разработка ПО — это не только про разработчиков
Никому не хочется поставлять программное обеспечение, которое содержит множество багов, не работает должным образом и не отвечает требованиям клиентов. Непрерывная интеграция и проверки кода помогают предотвратить это… но у кого есть столько времени? Оно есть у команд, использующих методики Agile и DevOps.
Agile-разработчики ПО стремятся к устойчивым рабочим процессам; совершать подвиги — не в их духе. Устойчивость достигается за счет точной оценки сложности, выбора эффективных стратегий ветвления для управления кодом, автоматического тестирования для обеспечения стабильно высокого качества кода и непрерывного развертывания для получения быстрой обратной связи от пользователей.
Внедрение принципов устойчивой разработки требует дисциплинированности. Увы, часто наши попытки развить это личное качество оказываются безуспешными. Дело в том, что нельзя освоить принципы Agile или DevOps в отрыве от всех. Вокруг этого должна строиться культура всей организации, и порой требуется инициатор перемен, такой как разработчик DevOps. А значит, руководители проекта должны разделять идею о том, что качество важнее области выполненной работы или соблюдения сроков. Убедить их в этом — зачастую самый сложный шаг на пути к Agile.
Но это того стоит! У разработчиков появляется возможность осуществлять разработку ПО устойчиво и нести ответственность за это, не боясь испортить отношения с лицами, ответственными за коммерческий успех проекта. Последние, благодаря такому подходу, выводят на рынок более качественный продукт, что еще сильнее укрепляет хорошие отношения со специалистами. Кроме того, для agile-разработчиков ПО не характерны гонки на выживание (и за это они больше всего благодарны). Если разработка отстает от графика по той причине, что для обеспечения высокого качества потребовалось больше усилий, чем ожидалось изначально, восстановить баланс поможет тройственная ограниченность. Просто скорректируйте объем работ, и никому не придется работать на выходных.
О тройственной ограниченности знают все разработчики ПО. Она представляет собой три ограничения при управлении проектами: объем работ, время и качество. Многим из нас доводилось участвовать в проектах, где объем работ был фиксированным, с графиком творились ужасные вещи, а самой разработке угрожал лавинообразно растущий технический долг. Иногда масла в огонь подливало то, что конечный продукт не соответствовал потребностям рынка. Многим знакомы такие ситуации, когда у вас опускаются руки.
Но, к счастью, есть и хорошие новости.
В agile-разработке ПО возможности изменения объема работы куда шире, поэтому команда может обеспечивать стабильно высокое качество, формировать динамично развивающуюся культуру разработки и поддерживать тесные отношения с коммерческой стороной компании. Неспроста в Atlassian принципы Agile лежат в основе каждой команды разработчиков (и многих других команд).
Принципы agile закладывают надежную техническую основу для продукта и формируют в команде культуру совместной работы. Разработчики в agile-командах сильнее вовлечены в процесс, пишут более качественный код и получают больше удовольствия от работы.
Прочные связи — залог качественного продукта
Важное место в agile занимает командная работа, что неудивительно, поскольку в большинстве случаев ПО сегодня разрабатывают команды. Разработчики выстраивают тесные отношения с руководством по продукту, дизайнерами, специалистами по контролю качества и операторами, потому что для написания устойчивого кода нужно иметь контакт со всеми сторонами проекта. Когда разработчики в Atlassian получили возможность напрямую взаимодействовать с другими подразделениями компании, это привело к значительному росту качества кода и удовлетворенности разработчиков. Код стал лучше, «мусора» (т. е. совмещения обязанностей и (или) конфликтующих потоков работы) стало меньше, а взаимодействие специалистов разного профиля в рамках одной команды стало более эффективным, и это еще не все положительные изменения, которые принес такой подход.
Наставничество тоже играет важную роль. Agile-команды обучают друг друга, делясь знаниями в предметной области, чтобы вся команда была одинаково осведомлена о базе кода. Как вариант, достичь этого можно с помощью проверок кода, которые не только гарантируют его высокое качество, но и позволяют наладить обмен информацией о коде в команде. Как бы ни распределялись знания в Agile-команде, в ней не бывает случаев, когда важные этапы проекта зависят от отдельных разработчиков. В противном случае определенные участники не смогут уйти в отпуск, потому что только они разбираются в конкретном участке кода. Ни один разработчик не хочет быть заложником подобной ситуации.
Кроме того, Agile-разработчикам гораздо проще сочетать в работе над продуктом разные инструменты из стека технологий, чем их коллегам, использующим каскадную модель, потому что Agile-команды следуют принципам самоорганизации, и их участники могут осваивать новые навыки. Несомненно, лучше других в своем коде разбираются разработчики, которые поставляют все функциональные возможности, от пользовательского интерфейса до базы. Компания Atlassian стремится сделать своих разработчиков специалистами широкого профиля, поскольку верит в эффективность обмена знаниями в команде и в рамках всей компании.
Создание кода, культура и agile-разработка ПО на новом уровне
Перейти на Agile — значит, сформировать здоровую культуру разработки в организации. Далее вы узнаете об эффективных стратегиях ветвления, методах автоматического тестирования, непрерывной интеграции и налаживании прочных связей с другими подразделениями компании. В следующих статьях будут подробнее раскрыты изменения, через которые прошли тысячи разработчиков на пути к Agile и благодаря которым они достигли успеха.
Agile-разработка ПО — это путь, а не цель. Мы готовы поддержать вас на каждом этапе этого пути.
Начните бесплатно с помощью шаблона плана проекта DevOps
Разрабатывайте и развертывайте приложения, а также управляйте ими с помощью открытого подхода к инструментам.