company_banner

Управление Agile-проектами с YouTrack 4.0

    Привет, Хабр!

    В конце прошлой недели вышел долгожданный «мажорный» релиз инновационного баг-трекера YouTrack 4.0 с возможностью управления Agile-процессами. Об этом функционале мы и хотим вам рассказать немного подробнее.

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

    В YouTrack 4.0 добавлен совершенно новый, независимый модуль для управления Agile-процессами, который без проблем подстроится под особенности реализации Scrum методологии или Kanban-процесса в вашей команде. Если же вы еще только осваиваете Agile-процессы, данный модуль станет прекрасным подспорьем в ознакомлении с ними, а также позволит комбинировать наиболее удобные для вас элементы каждого процесса.

    В YouTrack 4.0 реализована ключевая функциональность управления Agile-процессами:

    1) Доски задач (Agile Board)

    Scrum
    • Используйте доску, чтобы визуализировать свою дневную активность. Группируйте ваши задачи, связанные с реализацией каждой пользовательской истории (user story), через создание swimlanes – «плавательных дорожек». Оценивайте и перемещайте задачи по доске, отражая таким образом прогресс команды в течение спринта.

    • Создавайте спринты (итерации в scrum) и определяйте продолжительность каждого из них. Планируйте спринт, перетаскивая пользовательские истории (user stories) из бэклога (backlog) на доску.

    • Используйте диаграмму сгорания задач (burndown chart) для наглядного представления о прогрессе команды во время спринта.




    Kanban
    • Создавайте разные колонки на Kanban-доске для представления различных стадий вашего процесса разработки. Передвигайте ваши задачи по доске по ходу работы над ними.

    • Задайте минимальное и максимальное количество «выполняющейся в данный момент работы» (work-in-progress) для каждой колонки, чтобы контролировать количество задач на любой стадии разработки.

    • Используйте Cumulative Flow график для выявления потенциальных узких мест (bottlenecks).




    2) Управление бэклогом

    Создайте бэклог для продукта (product backlog) или релиза (release backlog), чтобы удобно планировать и приоритезировать свои задачи в рамках всего проекта, релиза или итерации. Приоритезируйте пользовательские истории или задачи в бэклоге простым перетаскиванием. Используйте шорткаты для упорядочивания и изменения бэклога на лету.



    3) Поддержка нескольких проектов на доске

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

    4) Ваша персональная доска

    Используйте расширенные поисковые запросы, чтобы отфильтровать задачи (карточки) на доске точно так же, как вы всегда делали это в YouTrack. Например, отфильтруйте никому не назначенные ишью (#unassigned) или те, которые были назначены вам (for:me).

    YouTrack также остается верен поддержке расширенных клавиатурных шорткатов. Используйте шорткаты, чтобы передвигать задачи (карточки) по доске, добавлять, редактировать и удалять «плавательные дорожки» и задачи, и т.п.

    Кроме этого, в YouTrack 4.0 добавлено следующее:

    • Настраиваемые шаблоны уведомлений

    Настроив почтовые и jabber-уведомления «под себя», вы можете контролировать, чтО именно следует сообщать вашим пользователям в уведомлении, когда создан новый ишью, когда он был обновлен, прокомментирован или переназначен. Добавьте собственный заголовок, поменяйте язык, переделайте текст сообщения, и многое другое с помощью шаблонов Freemarker.

    • Произвольное упорядочивание задач, поддержка подзадач

    Теперь вы можете создавать подзадачи для любой задачи (issue). Просто добавьте родительскую или подчиненную ссылку к нужной задаче, либо в режиме Tree-View определите ее место в общей иерархии задач/подзадач простым перетаскиванием на нужный уровень.



    Просто перетаскивайте задачи в общем списке (Issues List), если хотите изменить их порядок, включая порядок результатов поиска или сохраненных запросов. Сохраните результаты поиска, чтобы поделиться ими с членами своей команды.

    • Глобальный и персональный контекст

    Работайте с YouTrack в своем персональном контексте. Выбирайте любой сохраненный поиск, тэг или проект в контекстном выпадающем списке и работайте в нем, пока не захотите переключиться в другой контекст. Если вам понадобится отфильтровать задачи сразу во всех проектах в YouTrack, просто выберите в качестве контекста Everything. Используйте боковую панель для закрепления и открепления проектов, тэгов и сохраненных поисков, чтобы сохранить компактный вид этого списка.

    • Импорт из AgileZen

    Импортируйте в YouTrack пользователей и проекты из AgileZen с пользовательскими историями и их задачами. По умолчанию, история импортируется как фича (feature), а ее задачи (tasks) – как подзадачи (subtasks) к ней.

    • Уведомление пользователей через комментарии

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

    • «Тихие» команды

    Иногда избыток уведомлений раздражает пользователей или членов команды. Теперь вы можете применять команды без отправки каких-либо уведомлений.



    Конечно, это не полный список улучшений, которые мы внедрили, чтобы сделать вашу работу c YouTrack легче, быстрее и эффективнее. Все детали релиза вы можете найти на странице What’s new.

    Попробовать YouTrack можно совершенно бесплатно. Загрузите бесплатный пакет на 10 пользователей либо зарегистрируйте YouTrack InCloud, размещенный в облаке JetBrains (предлагается бесплатный план на 9 пользователей).

    Благодарим за внимание!
    Разрабатывайте с удовольствием!
    JetBrains
    Делаем эффективные инструменты для разработчиков

    Комментарии 38

      0
      API у него есть? Как выглядит запрос вида «каждое утро я хочу получить log work по всем сотрудникам чтобы отображать у себя список кто чем занимался за последнюю неделю»?

      У JIRA это выглядит примерно как 'getIssuesFromJqlSearch( «updated > time.now — time.week» )', на выходе получается список из 100+ элементов, JIRA захлебывается, отсылает клиенту частичный результат, клиент получает мусор, способа гарантированно получить данные не существует.

      А у вас как?
        0
        У нас есть RESTful API, который, в частности, позволяет выгрести все тикеты для заданного запроса. Формат запросов такой же как в пользовательском интерфейсе. Например, for: mazine resolved date: {Last Month} — тикеты, которые я закрыл в прошлом месяце. Подробнее про запросы, можно прочитать в документации.
          +1
          У JIRA тоже есть RESTFUL API — это им не мешает, в случае если результат запроса оказался слишком большим, порезать результат и ничего никому об этом не сказать O_O. Что будет с вашим REST, если результата случилось метров 20? Отошлет обратно двадцати мегабайтный HTML/JSON/XML/whatever?
            0
            Сорри, не попал. Ниже ответил.
        +2
        У нас можно постранично забирать данные:
        — after: Integer — A number of issues to skip before getting a list of issues. That is, when you specify, for example, after=12 in request, then in the response you will get all issues matching request but without first twelve issues found.
        — max: Integer — Maximum number of issues to be returned. If not provided, 10 issues will be imported, by default.
          0
          Не понял. Как это поможет, если данные изменились между 1-м запросом с «after = 0, max = 50» и 2-м «after = 50, max = 50»? Относительно чего будет считаться after?
            +1
            Никак не поможет. Вы можете отсортировать тикеты, например по id, тогда их порядок не будет зависеть от момента запроса: for: mazine resolved date: {Last Month} sort by: {issue id} asc.
              0
              Снова не понял :(. Мои извинения, понедельник день тяжелый, плохо на меня влияет. Я могу отсортировать тикеты по id — но порядок при этом будет зависеть от момента запроса. Или я не понимаю как у вас работает сортировка. Например, если у менять есть пять задач: A, B, C, D, E с id 1, 2, 3, 4, 5, обновлены все кроме A и я хочу получить все задачи, которые обновились за последнюю неделю:

              «select обновились за неделю start 1 max 2 sort id»

              Результат будет:

              B( id 2 )
              C( id 3 )

              Теперь злобный пользователь Вася делает worklog на задаче A и расписывает как он там целый день работал и как все плохо.

              … в это время клиент API делает следующий запрос чтобы получить следующий набор данных:

              «select обновились за неделю start 4 max 2 sort id»

              Что мы получим? У меня есть подозрение, что «start 4» нам не позволит получить информацию об обновлении тикета «A».

              Подскажите старику, где я ошибся?
                0
                Все так, гарантированной консистентности добиться не удастся. А она действительно нужна в данном случае?
                  0
                  Можно еще по истории для каждого тикета ходить, но мне кажется, что это оверхед в данном случае.
                    0
                    Да нет — просто ряд бизнес задач формулируется как «если за прошедший день/неделю/месяц случилось <что-то>, то сделать <что-то еще>. Например, e-mail отослать». Соответственно, хочется относительно простой способ задать вопрос вида «а покажи мне все тикеты за последнюю неделю, которые обновлялись». При этом не хочется постоянно долбиться этим запросом в сервер — чтобы не создавать нагрузку на сервер и на сетку, ее в крупных компаниях не любят.

                    Соответственно опрашиваем раз в 10 минут. И если консистентности у нас нет, то регулярно случается что на больших выборках часть данных «теряется» и обратно находится через час. Или через два. Как повезет — зависит от активности пользователей.

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

                    В принципе, понятно что на примерах вида «hello world» это ничего не нужно. И когда задачи — это просто большая куча откуда программисты и тестировщики по приоритету вытаскивают — тоже не нужно. Но при реальном использовании — нужно :(.
                      0
                      Не нужна :) пожалуста не слушайте eyeofhell, не делайте нового монстра. Лучше делайте простой, удобный и быстрый продукт. А команды где несколько тысяч человек в одном проекте — путь используют жиру. Иначе получим две тормозных жиры, а пользоваться нечем :(
                        0
                        Мне вот любопытно — а какое отношение имеет функциональность API к «простоте», «удобству» и «скорости» продукта? Тоесть если авторы разберутся как на самом деле работает REST и сделают, например, ETag-и — каким местом продукт монструозным станет? У него что, кнопочти нажиматься перестанут, или он работать медленнее будет?
                          0
                          Вы не поверите, но каждая новая шестеренка строка кода, новая фича, новая библиотека, формат, протокол, все остальное, оно усложняет продукт, добавляет новые баги, новые заплатки и новые тормоза. И к сожалению экспоненциально.
                            –2
                            Не поверю. Я разрабатываю софт за деньги уже более пятнадцати лет. Специализируюсь на высокоуровневой архитектуре и управлении разработкой проектов сложностью от миллиона строк кода. Каждая новая строка кода усложняет продукт только если его пишут школьники, которые недавно прочли книжку «как стать крутым джава программистом за 21 день». При наличии квалифицированных разработчиков с хотя бы десятью годами опыта, добавление новой функциональности ничего не ломает и не замедляет. Уметь надо. У подмастерья стояра тоже шкафы вначале кривые и косые получаются.
                              0
                              Да, похоже мы говрим о разных вещах. Я зря написал про строки, я имел ввиду объем проекта в общем, количество фич. От того что выгрузка идет в json, xml и еще десятке форматов — вот от этого проект становистя монстром. И не важно как он написан, и кем.

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


                                Улучшение API не меняет пользовательский интерфейс, увы. Если ребята осилят сделать feed изменений в REST — это не затронет ни одной кнопки в пользовательском интерфейсе и не замедлит программу.
                            +1
                            А каким образом в вашей задаче могут спасти ETag-и? что изменится в решении вашей задачи если во втором запросе

                            «select обновились за неделю start 4 max 2 sort id»

                            вы получите

                            А( id 1 )
                            F( id 5 )
                            G( id 6 )


                            не спора ради а для простветления только

                              –1
                              Вкратце рассказать не смогу — краткое введение в REST это примерно 300 страниц из книжки «REST in Practice», а ее писали ребята которые лучше меня разбираются.

                              Если утрировать до плинтуса, то есть несколько вариантов относительно надежного взаимодействия с веб сервисом по ненадежному сетевому интерфейсу:

                              — Etag «идентификатор последнего изменения» и HTTP поле If-Match позволяет отменить запрос, если его результат зависит от предыдущих запросов (постраничное получение результата), а данные с момента первого запроса поменялись. Но это не очень хороший способ, потому как данных может быть много, а нагрузка на сервис постоянной. В песочнице такого не бывает, а в реальной жизни — через раз.

                              — Etag «предыдущая страница архива» используется при интеграции в крупных компаниях (когда не полтра человека в команде) — сервис (например, система управления задачами) публикует RSS/ATOM FEED изменений, а другие сервисы его втягивают по мере необходимости и переваривают в соответствии с бизнес-логикой.

                              Но это достаточно сложные техники — они сильно выходят за рамки школьной программы и используются в компаниях где значительно больше 2-3 человек и вопрос стоит не «Лучше делайте простой, удобный и быстрый продукт» а «либо мы сделаем это, это и вот это — либо департамент из трех сотен человек потеряет управляемость» :(.
                                +1
                                Вот видите в том то и проблема, у каждого из нас разные цели и разные задачи, причем ОЧЕНЬ разные :)

                                я не просил Вас давать мне определения из книжки, я попросил ответить мне что вы (или ваш софт) будете делать когда во втором запросе вы получите данные которые я описал в комментарии выше?

                                Я крайне согласен что при определенных кейсах то что вы описываете крайне важно, но и имплементация этого может оказаться значительно сложнее нежли расставить Etag'и причем на обеих сторонах.

                                Вы же понимаете что ваш софт получивший ответ (во второй его части) должен крайне адекватно и в зависимости от вашей бизнес логики обработать ситуацию когда в ответе получается элемент по идее не ожидаемый тут…

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

                                и вообще складывается ощущение после ваших постов что вы немного таки придераетесь :)
                +2
                YouTrack — самый клевый треккер из тех что я видел. С удовольствием используем в работе :) Мечта гика прям :)
                  +1
                  Вот только кнопочка new issue оранжевого цвета очень раздражает. Отвлекает от сути, раньше синяя была удобнее.
                    0
                    Хорошая система. Лучше чем Redmine всякий.
                      0
                      Есть ли импорт из Redmine? Как там с трекингом времени, сделали?
                        0
                        Импорт из Redmine нет. Вот список поддерживаемых для импорта трекеров. Трекинг времени пока не сделали. В настоящее время он запланирован на ближайший минроный релиз.
                      • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          Популярная, но трудоемкая фича. Будем делать в ближайшее время. Скорее всего она станет основной фичей следующего мажорного релиза.
                          • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          «ишью» — немного непривычно…
                            0
                            Вроде и баг, и фича, и таск одновременно. Я вот уже шесть лет в проекте, хорошего русского слова для «issue» пока не знаю.
                              0
                              Сейчас мы стали называть их «задачами». Главное, чтобы было понятно, о чем речь :)
                              +1
                              Скажите, планируется ли реализация «списка дел задачи»?

                                0
                                В YouTrack 4.0 можно создавать подзадачи и отображать их в деревянном виде. Это не совсем то, но близко. Кроме того подзадачи задач на доске отображаются списком.
                                0
                                >(предлагается бесплатный план на 9 пользователей).
                                А где выбрать этот план? при регистрации inCloud предлагает триал на 30 дней.
                                p.s. YouTrack движется верным курсом имхо, не знаю багтреккера удобнее.
                                  0
                                  Вот здесь www.jetbrains.com/estore/index
                                  Первый пункт — бесплатный вариант на 9 юзеров и 3000 ишью
                                    0
                                    Благодарствую
                                  0
                                  В phpstorm есть нативные средства или плагины для общения с YouTrack?
                                    0
                                    Прошу прощения, что не быстро. Вот ответ нашего специалиста:

                                    Да, во всех IDEA-based продуктах YouTrack поддерживается out-of-the-box через таски.

                                    Для того чтобы заработало, надо сделать следующее (никаких настроек со стороны YouTrack не надо):
                                    0. Включите функции Task Management в phpStorm
                                    1. Открываем меню Tools > Tasks & Contexts. Выбираем пункт Open Task
                                    2. В диалоговом окне Open Task кликаем ссылку Configure. Откроется диалог Servers.
                                    3. Нажимаем кнопку "+" и в появившемся списке выбираем YouTrack
                                    4. Вводим все необходимые параметры: URL вашего YouTrack-сервера, ваши логин/пароль
                                    5. Жмем тест чтобы проверить соединение
                                    5.1 Открыть Commit Message и поправить дефолтный коммент к коммиту.
                                    6. Если все хорошо, сохраняем настройки.
                                    7. Финальный штрих, в диалоговом окне Open Task, вводим issueID того ишью над которым собираемся работать. Если все хорошо с настройками соединения с сервером, сработает контектстный поиск и комплишен.

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

                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                  Самое читаемое