Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. General
Code

Принципы Agile разработки

Length:LongLanguages:

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

Agile или Agile Development - мы чаще слышим эти слова в наши дни. Но знаем ли мы, что это такое? Как это может помочь нам стать более эффективными, при этом получая массу удовольствия от разработки программного обеспечения? Как мы можем использовать его для общения с деловыми людьми и сделать это общение легким и конструктивным для обеих сторон?

Что такое Agile Development?

Было множество очень талантливых и опытных ребят, разрабатывающих серьезное программное обеспечение. Эти разработчики наблюдали другие компании и команды разработчиков, а также то, как их процессы упрощали работу. Они составили свои наблюдения, чтобы создать Agile Manifesto. Где они сказали:

Мы раскрываем лучшие способы разработки программного обеспечения, делая это и помогая другим это делать. Благодаря этой работе мы получили:

  • Личности и взаимодействия вместо процессов и инструментов
  • Рабочее программное обеспечение вместо полной документации
  • Сотрудничество с клиентами вместо заключения договоров
  • Реагирование на изменение вместо следованию плана

То есть, хотя в позициях справа есть смысл, мы больше ценим элементы слева.

В этой статье я представлю двенадцать теорий и методов Agile Development. Это только первый шаг к новому миру процесса разработки программного обеспечения.


1 - Удовлетворенность клиентов

Наш самый высокий приоритет - удовлетворить клиента за счет ранней и непрерывной доставки ценного, но не полнофункционального программного обеспечения. Это означает, что мы разрабатываем программное обеспечение и добавляем по крайней мере одну функцию за итерацию.

Представим себе, что мы хотим создать движок блога; Мы можем сделать это, используя следующий процесс:

  1. Создайте страницу отображения блога; Доставить ее клиенту
  2. Создать функцию управления пользователями и членства; Доставить ее нашему клиенту
  3. Добавить возможности комментирования и управления; Доставить это клиенту
  4. Так далее и тому подобное...

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


2 - Переход на меняющиеся требования

Даже в конце цикла разработки Agile-процессы позволяют приветствовать изменения конкурентного преимущества клиента.

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


3 - Постоянно доставлять продукт клиенту

Мы должны доставлять обновления с пары недель до нескольких месяцев; Чем короче промежуток, тем лучше.

Клиенты чувствуют себя более уверенно в нас и нашем продукте по мере его обновления

По моему опыту, клиенты чувствуют себя более уверенно в нас и нашем продукте по мере его обновления, что жизненно важно для наших с ними отношений. Другим преимуществом является обратная связь от нашего клиента; Позволяя нам реагировать, изменяя классы, функции, модули или даже архитектуру. Мы не просыпаемся после нескольких дней или месяцев работы, только чтобы увидеть, что все отправляется в мусорную корзину. Рассмотрим гипотетическую ситуацию:

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

Если вы работаете над проектом со своим клиентом и часто его доставляете, вы узнаете об этих изменениях быстрее, и такие изменения станут проще для вас обоих.


4 - Часто работайте вместе

Это может оказаться самым сложным принципом, если вы разрабатываете программное обеспечение в стиле старого водопада. Вы, как разработчик, как правило, не говорите на том же языке, что и ваш клиент, но вы можете найти способы поддерживать значимую связь с ними. Один из лучших способов, на мой взгляд, состоит в том, чтобы описать все с помощью простой истории, которая рассказывает нам, разработчикам, для кого эта функция, какова ее ответственность и почему она нам вообще нужна. Конечно, это будет со временем становится легче, чем больше мы работаем с нашим клиентом. Другим полезным подходом является разработка, управляемая поведением (BDD), но это тема для другой статьи.


5 - Создание проектов с заинтересованными лицами

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

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

Сохранение сотрудников - всего лишь одно преимущество; Вы также можете быстрее и лучше разрабатывать более качественное программное обеспечение. Подумайте об этом: написание кода многократного использования, автоматические тесты и автоматическое развертывание на любом сервере могут положительно повлиять на время разработки. Обычно мы думаем, что мы замедляем проект, потому что нам нужно научиться пользоваться полезными инструментами, такими как Jenkins, GIT, SVN, Gerrit, Behat и т.д. Честно говоря, мы это делаем, но затем мы можем повторно использовать эти инструменты и концепции в будущих проектах.


6 - Использование связи лицом к лицу

Это самый эффективный и продуктивный способ передачи информации между нашими клиентами и командой разработчиков.

Кто не из нас не станет сердится, увидев 6255384 электронных писем в вашем почтовом ящике, потому что ваша компания требует, чтобы все разговоры были «на бумаге»? Я лично видел это несколько раз в жизни, и я не рекомендую работать в компании с такими привычками. Личные беседы облегчают общение и позволяют нам получить куда больше информации. Мы можем использовать вербальные и невербальные способы общения, чтобы показать нашим товарищам по команде то, о чем мы думаем. Это, очевидно, быстрее, чем отправка друг другу сообщений по электронной почте.

Но прежде всего нам нужно доверять друг другу; Доверие легко достигается в среде, которая поощряет общение лицом к лицу.


7 - Прогресс в работе с рабочим программным обеспечением

Это одно из моих любимых правил; Оно позволяет нам свободно работать в соответствии с нашими собственными процессами. Разработчики программного обеспечения отличаются от других сотрудников; Поэтому, естественно, их следует рассматривать как таковых. Из моего личного опыта я научился не судить никого из команды разработчиков, пока работа выполнена. Разработчики не хотят создавать плохое программное обеспечение, и они менее склонны это делать, если мы позволяем им работать в соответствии с их собственными предпочтениями. В конце концов, клиент доволен, пока работа, которую они поручили, выполнена правильно; Им все равно, как это было сделано.


8 - Поддерживать постоянный темп

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

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

Многие говорят, что это невозможно, и планирование оказывается более точным. Я не согласен; График предполагает, что не будет ошибок или неизбежных задержек.

Это идеальный план для идеальной команды, и его не существует.


9 - Обратите внимание на прогресс в отрасли

Постоянное внимание к нашей отрасли повышает гибкость.

Ожидается, что мы будем развиваться и добиваться прогресса. Мы должны продолжать учиться каждый день, потому что индустрия движется такими быстрыми темпами. По мере совершенствования аппаратного и программного обеспечения мы должны постоянно обновляться; В противном случае мы потеряем себя в «море всего нового», и будет сложно вернуться в нужное русло.

Рефакторинг - это решение большинства проблем. Постоянно делая рефакторинг (при необходимости) мы можем легко применять новые методы и улучшать нашу архитектуру программного обеспечения.


10 - Простота играет большое значение

Билл Гейтс однажды сказал:

Если у меня будет сложная работа, я отдам ее самому ленивому человеку, потому что они найдут самый простой способ сделать ее.

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


11 - Самоорганизация

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

Мы всего лишь люди; Мы не можем предсказать все.

Вы когда-нибудь были в ситуации, когда вы разработали большое и трудоемкое приложение, и, проведя бесчисленные часы перед экраном, написали тысячи строк кода и читая кучу статей, учебников и книг, вы сели, глядя на некоторые плохой (но рабочий) код думал: «Теперь я знаю, как лучше писать?» Я думаю, что у всех нас были эти моменты.

Вот где на помощь приходит одиннадцатое правило. У нас есть команда разработчиков, которые могут следовать принципам Test Driven Development (TDD), где рефакторинг является частью процесса. Магическим способом наше программное обеспечение становится полезным, красивым, хорошо написанным, проверенным и быстро созданным. Мы всего лишь люди; Мы не можем предсказать все.

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


12 - Самоанализ и адаптация

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

Для этого может потребоваться несколько циклов разработки, но команда будет работать в полной гармонии. Даже добавление новых людей в эту команду ей не навредит. Команда Agile-разработчиков полностью сосредоточена на выполнении работы. Если они работают в дружественной среде, они найдут «мелодию работы», и вы увидите, насколько быстрой может быть разработка программного обеспечения.


Несколько гибких методологий разработки

Существует несколько методологий, основанных на принципах Agile. Я не буду описывать их все, потому что каждая методология может быть рассмотрена в отдельной статье. Однако я опишу некоторые из наиболее известных подходов Agile. Одна вещь, которую следует помнить, состоит в том, что нет единой или лучшей методологии. Выберите ту, которая лучше всего подходит вашим потребностям, и затем «настройте» ее в соответствии с вашими конкретными требованиями.

SCRUM

Созданный Ken Schwaber и Jeff Sutherland, SCRUM - это бизнес-ориентированная платформа для управления процессами разработки программного обеспечения. Существует много разных типов SCRUM; Просто помните, что главная цель - эффективно и продуктивно работать, а не придерживаться правил.

Экстремальное программирование (XP)

Созданный Kent Back, XP - это список лучших практик, которым разработчики должны следовать при создании программного обеспечения. Его часто называют «расширением SCRUM». Эта методология правил, ориентированных на разработку, родилась из-за того, что SCRUM был слишком ориентирован на бизнес.

Гибкая разработка программного обеспечения

Двумя основными принципами Lean являются: DALAP (решать как можно позже) и DAFAP (доставлять как можно быстрее). Я лично рекомендую прочитать больше об этой методологии, так как она может оказаться очень полезной.

В семействе Agile существует больше методологий; Я просто ссылаюсь на самые популярные варианты. Если вы решите использовать Agile в своем процессе разработки, вам нужно знать, что представляют собой эти методологии, чтобы выбрать наиболее правильный для себя вариант.


Финальные мысли

Действительно ли эффективны Agile-методы и работают ли они?

Действительно ли эффективны Agile-методы, и действительно ли методологии настолько волшебны, как все о них говорят? Не всегда.

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

Спасибо за прочтение!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.