Our Approach to Estimation

Previous installments in the How We Scrum series include the Introduction, Our Scrum Roles, and Our Backlog. The fourth post is devoted to our approach to estimation.

Last year, we introduced the #NoEstimates approach to our Scrum process. Instead of using estimations and spent time to calculate the burndown, we track our progress based on the number of user stories we finish in each sprint. The main concept behind this approach is that our sprint goal is to deliver a set of user stories and it doesn’t matter how many tasks we need to complete to achieve this goal.

The benefit of this approach is that it reduces the amount of time spent estimating user stories and tasks during every planning session. However, it requires certain amount of experience and discipline from the team. We added a simple rule that helps us benefit from this approach: it cannot take longer than two days to complete any task. If the task requires more effort to finish, it should be split into smaller units of work.
We agreed that it’s absolutely fine to add tasks during the sprint, as we save time on planning session and don’t discuss every small unit of work in advance. The Scrum Master is responsible for enforcing this rule. If a member of the team reports work on the same task for three consecutive stand-ups, the Scrum Master asks this team member to split the task right away.

Burndown

With the #NoEstimates approach, we track our progress over the number of completed user stories, so no estimation field is required.
Here is how we configured the YouTrack Scrum board to calculate a burndown based on user stories:

  1. On the Card tab of the Board Settings panel, set the Estimation Field to No Estimation field.
  2. On the Chart tab, select Burndown, set the Issue Filter to Custom, and set the Query to: Type: {User Story}.

User Story Based Burndown
There is also an option to calculate the burndown based on the number of resolved tasks (All cards). However, because we continuously add new tasks to the sprint, the Ideal Burndown fluctuates and becomes unusable.

Here is an example of a pretty balanced sprint with just the right number of user stories and tasks.

Task-Based Burndown
Previously, we used planning poker to estimate tasks. Now that we have more experience and know the velocity of our team, we have a good feel for the number of user stories we can finish in a sprint.
If you are new to agile, we recommend that you to start with a basic strategy for estimating tasks. After several months, you can give the #NoEstimates approach a try, if you feel that you are ready to benefit from it.

The next episode Our Sprint Planning is coming next week. Subscribe to our blog to stay tuned!

Posted in how-to, newsletter, tips | Tagged , , | 3 Comments

Our Product Backlog

Previously we published the Introduction and Our Scrum Roles installments from the How We Scrum series. This post is the third in the series and is devoted to our product backlog.

YouTrack Backlog

In our case, the product backlog is a set of features that we plan to build for YouTrack. At JetBrains in general, and in the YouTrack team in particular, we conduct a comprehensive planning session at least once a year. We gather the whole team for several days outside the office and discuss our plans from different perspectives: what do our customers want, what’s important from our point of view, and what do we consider to be cool to work on. We verify these points against the product mission and company goals.

As a result, we create a list of the main directions we are planning to work on and define a set of must-have, important, and nice-to-have features for each subsystem.
Must-have features go first in the list, important and nice-to-have get lower priority. We also take into account the minimal set of functionality we need to develop to share it with our customers as an early preview. The main goal is to get feedback as soon as possible and tune new features on the fly.

We take this list and create a set of issues in YouTrack. We track these issues in a separate project called YouTrack Backlog. This project only contains user stories. We create issues for all the development tasks during planning sessions and sprints in the YouTrack public project.
The backlog is stored as a saved search that is used on the Scrum board. We call it YouTrack Backlog User Stories. Here is the search query behind it:
#ytb #unresolved has: -{Board YouTrack}We order the issues manually to reflect their priority.

Backlog1

Here’s how we use YouTrack to manage the product backlog:

  1. Use a filter to show unresolved user stories that are not already on the board and represent meaningful pieces of work:
    #ytb #unresolved has: -{Board YouTrack}.
  2. Save this search as YouTrack Backlog User Stories.
  3. Prioritize the backlog according to our plans for the next release. We sort our backlog manually by dragging the items in the list.

Tips: YouTrack keeps your manual sort order on the saved search and highlights it with the blue vertical line at the left of the list.

4. Tune our backlog on on a regular basis, reordering user stories as they become more or less important.

The next episode Our Approach to Estimation is coming this Thursday. Stay tuned!

Posted in how-to, newsletter, tips | Tagged , , , | 2 Comments

Our Scrum Roles

In the previous post, I outlined the steps we took to implement a Scrum methodology in the  YouTrack team.

The first step in our Scrum transformation was to define who would take on each of the core roles.

Product Owner

photoMax
In the YouTrack team, the Product Owner is responsible for prioritising issues in the product backlog and deciding what we do next. The Product Owner keeps a finger on the pulse to make sure our product goals and mission meet the needs of our customers, while the team finds the best technical solutions to achieve these goals. In the YouTrack team, the Product Owner role is taken by the Team Lead. However, members of the team have the right to raise the priority of a user story when they feel it’s important, providing strong reasons to support it, of course.

Scrum Master

This role is played by one of the developers from the YouTrack team. Our Scrum Master has a deep knowledge about the product architecture, technical solutions, and limitations. During the planning session, normally she presents each user story we plan to work on during the sprint. After the planning session, where we discuss each user story in details and decide which tasks we need to accomplish, she decomposes each user story into a set of tasks. The Scrum Master rules the process and keeps an eye on every sprint task. But what’s more important, our Scrum Master continuously monitors the progress and makes sure everyone follows the rules we agreed on. Generally, the Scrum Master makes our process work.

Scrum Team and Stakeholders

All of the members of the YouTrack product team take on the role of the Scrum Team. As a Scrum team, we are pretty big, about 25 people, including 13 developers. Each team member is accountable to the rest of the team for his or her performance. Our Scrum team is cross-functional, meaning that members of the team have all the skills necessary to do the work (analysis, design, code, test, documentation, marketing, technical support). Our Scrum Team is self-organizing, self-managing, and constantly trying to improve. The team members commit to the amount of work they can do without undue influence from the Product Owner.

YouTrack Team

Even though many advocates of Scrum recommend working face-to-face, our Scrum Team is not collocated. We are spread out between our offices in St. Petersburg and Munich. To overcome this disadvantage, we rely heavily on videoconferencing equipment and make great use of real-time team collaboration tools like Slack.

Like other teams at JetBrains, the product team also takes on the Stakeholder role. Every member of the team has direct access to customer feedback. We aim to create a great product that both satisfies the needs of our customers and meets our internal goals. So whenever we plan a new feature or improvement, we collect our ideas, carefully analyze external feedback, and finalize the requirements based on both inputs.
In practice, this means that we use what we know from our customer base to define the acceptance criteria for every feature, and collectively decide whether the implemented functionality meets this criteria during the sprint demo. During planning, we discuss and agree on the best way to deliver this new functionality from the business logic side and technical side.

The next episode Our Product Backlog is coming next week. Subscribe to our blog to get updates immediately!

Posted in how-to, newsletter, tips | Tagged , , , , , | 4 Comments

How we Scrum in YouTrack Team

Introduction

The YouTrack team has been practicing Scrum for several years. We decided to switch to Scrum six years ago, when we started to develop an agile board in YouTrack. Since dogfooding is a core concept at JetBrains, we decided to adopt a Scrum practice ourselves and develop a tool for customers that conformed to the main principles of an agile framework.
So, as our first Scrum Master told us, we started with a physical board. As we developed our agile board, we ported the physical board to YouTrack. After a while, we realized that we are happy with Scrum, and went further with our transformation. We tried various practices and variations before we found the most balanced way to work. I emphasize, there is no universal approach that works for everyone. In this series of blog posts, I describe how we do Scrum in our team so you can decide if it might work for yours.

Let’s start with our goals and expectations for Scrum:

  • Build a fast-moving, iterative process.
  • Share daily status updates.
  • Improve collective code ownership.
  • Deliver updates continuously during short intervals.
  • Switch to shorter release-cycles, ideally every two weeks.
  • Improve our team collaboration and progress visualization.
  • Get feedback at early stages of development to be able to react immediately.
  • Become flexible enough to modify features on the fly.

Here are the main steps we took during our Scrum transformation:

  1. Defined basic scrum roles.
  2. Created and prioritized our product backlog.
  3. Defined procedures for estimation and planning.
  4. Configured our scrum board.
  5. Scheduled the first sprint.
  6. Performed sprint planning.
  7. Started to do daily stand-ups and track our progress during the sprint.
  8. Performed sprint demo for the whole team at the end of the sprint.
  9. Deployed and released completed user stories.
  10. Performed retrospective.
  11. Continuously repeated steps 5-10, improving our process with every sprint.

After the major release we also perform a big release retrospective, where we discuss the current process and suggest improvements.

Just as an example, here is how our Scrum Board looks during a sprint:

YouTrack Scrum Board
And here’s how our Scrum transformation increased the velocity of our team over the past year. These charts show the number of user stories we burned down in one of our early sprints compared to a sprint that was scheduled one year later:
YouTrack Burndown 1

YouTrack Burndown 2
In this series of posts, I cover every step of our Scrum transformation in detail. Each post is dedicated to a single step. I describe the various options we tried for each step and share our results and experiences. Most importantly, I describe how we tuned YouTrack during our Scrum transformation.

Posted in how-to, newsletter, tips | Tagged , , | 7 Comments

Integrate YouTrack 7 With Your Favorite Tools

Here at JetBrains we’re often asked to integrate YouTrack with this or that popular tool: version control systems, project management and planning tools, instant messaging services, custom time tracking and billing platforms, you name it. While we’re implementing most popular requests ourselves it’s certainly not possible for the team to implement, maintain and test all these integrations. There are just too many of them.

An obvious approach would be to support third-party plugins, allowing independent vendors and community members to step up and fill the gap. The thing is, YouTrack has no plugin support at the moment. What it does support is a scripting API called Workflows. Starting from YouTrack 7.0, workflow API provides a REST client implementation, making it possible for your custom script to make network requests and receive responses. That feature alone opens a wide variety of options when it comes to integrating YouTrack with your favorite tool set.

Here goes a basic example demonstrating how to post an issue change to a third-party system and deal with the response:

Once someone reports a new issue, the script above is invoked. It takes the issue contents and sends it to a remote server, http://server.com/issueRegistry. When a server response is received, it’s added to the aforementioned issue as a comment.

Looks cool. How do I get started?

A workflow tutorial is a good thing to start with. Download YouTrack Workflow Editor and try playing around with tutorial examples. This should give you a grasp of basic workflow concepts, such as rule types and language syntax.

screenshot_2016-12-30_17-07-34

Note: It’s not necessary to download a new workflow editor release to use new language features. When it comes to specific API support, it’s the YouTrack server version that matters.

If you’re a workflow veteran, then you’ve probably guessed by now that stateless workflow rules are good at posting data to a remote system. This is where their ability to react to issue changes comes in handy.

The next thing you’ll need is a REST API of some sort, provided by a remote server. Popular web services and platforms tend to have API documentation published, so make sure to get a look at it before trying to implement the actual integration. For instance, Facebook graph API is described at https://developers.facebook.com/docs/graph-api.

Push-style integration example

Let’s try to implement an integration with Slack’s instant messaging platform. The idea behind it is that a team communicating in a chat would like to get notified if a new issue appears in the issue tracker.

Following our own advice, we start with Slack API reference to see if there’s a handle we can use to post new issue notifications to. It turns out one can register a bot user to post generated messages on one’s behalf. Having a bot user registered, we can now post messages to a channel:

Now, if we get a new issue posted, a slack channel will receive something like this:

slack

Awesome.

Pull-style integration example

The next example shows how one can fetch additional content for YouTrack issues from the outside world. When a Pastebin reference is posted to an issue, it would be nice to get the actual content and replace the original link.

What else can I do with this API?

One can expect all HTTP protocol basics to be covered by a workflow REST client API. The corresponding documentation page describes available functions and parameters, remote authentication and error handling. It’s always a good idea to verify server response code and handle erroneous scenarios accordingly.

Please give us your feedback! Try the workflow rest client out and let us know how it works for your team.

Posted in features, how-to, newsletter | Tagged , , , | 6 Comments

YouTrack 7.0 bug fix is here (build 29566)

Good news everyone!

A fresh bug fix for YouTrack 7.0 is out (build 29566). This update brings a number of fixes for Agile Board, Gantt chart, workflow and some usability improvements.
Check the Release Notes for more details.

If you use YouTrack 7.0 InCloud, your server was upgraded today, on December 26, 2016 according to our Maintenance Calendar.

Get a a fresh build and enjoy the improvements today!

Posted in newsletter, release | Tagged , | Leave a comment

Most Wanted Features in 2016 and 2017

Christmas time is just around the corner, Jingle Bells! We wish you a Merry Christmas and a very Happy New Year!

happyholiday_01

Christmas time also means that the year is almost over.  Today we want to share with you some results for 2016.

Earlier this January we posted about the 10 Most Wanted Features in YouTrack. That list raised a lot of interest, so let’s see how the most popular features have fared in being delivered this year.

  • JT-13480 — Gantt chart support is released in YouTrack 7.0. You are welcome to try it and let us know what you think.
  • JT-16657 — Real time update of agile board and backlog. Live update is a part of YouTrack 7.0. Enjoy!
  • JT-17476 — Search for issues based on time tracking. This feature is not released yet, but it’s ready and coming in the beginning of 2017. Thanks for your patience with this one!
  • JT-24385 — Integration with Slack and Hipchat. We’ve done several things here in YouTrack 7.0:
    • Slack Integration (XMPP): make YouTrack and Slack communicate with each other using a Jabber client. Receive notifications in Slack for updates to issues, and enter commands in Slack to update issues in YouTrack.
    • Slack Integration (HTTP): Post notifications to a channel in Slack by using a workflow.
    • Hipchat integration: Send notifications to a HipChat room when a new issue is created or when an existing issue is updated in a specific project.
  • JT-2570 iOS and Android YouTrack Client. This one wasn’t on the Top 10 list, but we thought it to be very important. So, YouTrack Mobile is here! Enjoy!

These wanted features are waiting for you in YouTrack 7.0. Give it a try if you haven’t yet.

  • JT-21112 — Support Markdown syntax. This is definitely on our list for 2017.

We think this list is a good example of how your voice influences the product we create. We do listen and we’ll continue listening next year too. We encourage you to check the list of the most popular features in YouTrack today, and speak up about the ones you find relevant!

And that’s not all. We’d like to share our plan for the most wanted features for 2017, organized by topics. A more detailed Roadmap for 2017 is coming soon.

General
JT-5129 — Project Overview (we haven’t finalized a scope for this feature at the moment, but we’ll work on it).
Agile Board
JT-19739 — Add special search term {Sprint: current}
Issues List and Full Issue Screen Rework
JT-21112 — Support Markdown syntax
JT-5510 — Have option to have more columns in the one-line & tree view
JT-23673 — Checklists on issues
JT-11189 — Download all attachments at once to a particular folder
New Workflow
JT-18128 — Provide operations on the period field in workflow
JT-8639 — Workflow per issue type
JT-17984 — In-browser workflow editor
JT-10671 — Add ability to run external process from WF
JT-10337 — Implement ability to require a comment/tag
Custom Fields
JT-6170 — Custom field type with wiki content
JT-10612 — Custom field per issue type
JT-9344 — More Custom Field Types
Integrations
JT-24385 Integration with Slack in Field Types
Notifications
JT-1169 Special notification for bulk changes
JT-625 — Email notification digest

Christmas is the right time to make your dreams come true. We’ll be your Santa — just tell us what you want!

Posted in news, newsletter | Tagged , , | 2 Comments

YouTrack 7.0 bug fix is out (build 28958)

Please welcome a fresh bug fix for YouTrack 7.0 (build 28958). This minor upgrade brings Agile Board fixes and some performance improvements. For more details, please refer to the Release Notes.

Download a new version and enjoy the latest improvements now.

If you use YouTrack 7.0 InCloud, your instance was upgraded today, December 05, 2016 according to our Maintenance Calendar.

JetBrains YouTrack Team
The Drive to Develop

Posted in release | Leave a comment

YouTrack 7.0. bug fix is here (build 28867)

Please, welcome a fresh build for YouTrack 7.0 (build 28867).
This minor release brings a number of important fixes, including the merge columns feature, a fix that returns the filter query to the agile board, and some workflow improvements.

The merge columns feature lets you put cards with different states or other values into one column. Without this feature, you had to configure the same set of states in all projects to make your multi-project boards consistent. If you had different sets of values for states in different projects, you could end up with extra columns on the board. The merge columns feature lets you combine different sets of values in one column! For example, if you use different values to represent “in progress” states (In progress, Working on it, etc.), just merge them together.

merge_columns

After the YouTrack 7.0 release, we got several requests to bring the query setting back to the board. We have added this option to the new agile board so you can apply a filter to the cards on the board. You can either use a “version-based board” template with pre-configured settings to enable this option for a new board, or re-configure the settings on an existing board. This feature lets you use the board as an alternative view of the issues list, just as it was before 7.0.

To use a query, simply enable the “link sprints to custom field” option and enter a query to filter the cards on the board. Any issue that doesn’t match the query is hidden. For example, if you want to see only your issues on the board, use a query like “assignee: me”. In this case, members of the team who use this board only see their own issues.

When the query is enabled, any issue that is added to the board is updated, where possible, to match the attributes in the search parameters.

query

For more details, please refer to the Release Notes.
If you use YouTrack 7.0 Incloud, your server was upgraded today, on November 28, 2016.

Get a a fresh build and enjoy the improvements!

JetBrains YouTrack Team
The Drive to Develop

Posted in uncategorized | Leave a comment

The YouTrack Plugin for your IDE

When you’re working on a project, it’s really important to stay focused and not get distracted.
Every day, you open your IDE and get down to work. All of a sudden, you get notified about a new issue or a bug that needs fixing. Now you have to switch over to your issue tracker and spend precious time away from your code. Not anymore! To save you time, we are happy to introduce a new YouTrack plugin for your IDE.

The YouTrack Integration Plugin lets you interact with YouTrack issues without leaving your favorite IDE. It extends the functionality of the Task Management plugin that is built into JetBrains IDEs.

With this integration, you can follow your daily routine right from the IDE — adding comments and applying commands to your issues. In addition, this plugin enables the Open in IDE feature in YouTrack. To learn more about each feature, keep reading.

View a list of issues that match specific search criteria
When the plugin is installed, you can access your YouTrack issues from the toolbar of your IDE. As a developer, you don’t want to see a list of irrelevant issues. That’s why you can use a search query just like you do in YouTrack. Just enter a query in the settings, and view a compact list of issues.

plugin

Search for issues in your list
Just start typing. The plugin locates the first issue that contains your search terms in the summary. For example, here I want to find an issue that has “preview” in the summary. How convenient!

search

Set your context
Select an issue from your list and set it as the active task in your IDE. This action cleans your workspace, creates a change list for the task, and loads a stack trace, if any. A context is a set of files opened in the editor while working on a task. You can switch between tasks and manage your changes for different issues independently.

Open stacktraces in your IDE
This is one of the most exciting features of the plugin for Java, C#, Kotlin, and Scala developers who use YouTrack 7.0. Since YouTrack automatically recognizes and formats Java and C# stacktraces that are inserted into an issue description or comment, you can navigate directly to the stacktrace in your IDE from an issue. You can also analyze stacktraces right from the YouTrack Integration Plugin.

stacktrace

Apply commands
Like YouTrack, the plugin lets you apply commands to issues. Basically, you can change any issue property with commands: add a comment, change the issue state, reassign the issue, and so on. To start using it, set an issue as an active task, and press Ctrl + Shift + Y (Control + Shift + Y on OS X) to open the command dialog.

command

Track your time
The YouTrack Integration Plugin also integrates with the Time Tracking feature.
If time tracking is enabled in your YouTrack project, you can track your time right in from the IDE, and add work items using common commands. Make sure the issue you are working on is selected, and start the timer. When you are done with the issue, stop it and send the results to YouTrack.

time-tracking

And that’s not all. The list of issues that is pulled from your YouTrack server is cached locally in your IDE. This means that you can view issues while working offline.

By the way, this is an open source project. The source code is available on GitHub. You are always welcome to contribute to the development and make the plugin better.

YouTrack Integration Plugin is available for use with IntelliJ IDEA, PhpStorm, PyCharm, RubyMine, WebStorm, AppCode, CLion, and Android Studio.

Posted in features, how-to | Tagged , , | 7 Comments