{"id":3981,"date":"2011-06-14T15:52:20","date_gmt":"2011-06-14T15:52:20","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/bharry\/2011\/06\/14\/agile-project-management-in-visual-studio-alm-v-next\/"},"modified":"2024-06-14T10:54:57","modified_gmt":"2024-06-14T17:54:57","slug":"agile-project-management-in-visual-studio-alm-v-next","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/bharry\/agile-project-management-in-visual-studio-alm-v-next\/","title":{"rendered":"Agile Project Management in Visual Studio ALM V.Next"},"content":{"rendered":"<p>When we first started designing Team Foundation Server, one of our mantras was \u201cYour process, our process or no process\u201d.\u00a0 What we meant by this was that TFS can play an important role in helping you automate your development process.\u00a0 Many teams already have a well establish process and aren\u2019t particularly interested in changing it.\u00a0 TFS can be configured to fit with your process \u2013 whatever it is.\u00a0 Many teams don\u2019t have a well established process and would like to adopt some \u201cbest practices\u201d and then evolve them \u2013 TFS can do that to, and we provide 3 process templates today you can adopt (Agile, Scrum and CMMI).\u00a0 And some teams are less structured and pretty skeptical of the \u201cP-word\u201d.\u00a0 They just want some good tools to help them get their job done and TFS can help there too.<\/p>\n<p>In parallel to the evolution of TFS, the world of software development process has matured a great deal.\u00a0 There\u2019s way more energy and debate around process now than there was 10 years ago \u2013 and there are some emerging and established \u201cwinners\u201d.\u00a0 It\u2019s clear that the Agile family of development practices have become very well established now.\u00a0 Some of the practices that were highly touted in the early days of Agile (like pair programming) have drifted into niche practices and some (like unit testing) have become table stakes that almost every high performing development team has adopted.<\/p>\n<p>We did some work in 2005 (unit testing, for example), 2008 (continuous integration) and 2010 (Agile workbooks, Scrum template, etc) that enabled teams to use TFS to automate their Agile practices.\u00a0 However, we resisted building very tuned experiences because we were hanging a bit too tightly to process independence (remember \u2013 Your process, our process or no process.<\/p>\n<p>As we began our planning for V.Next, it was clear that Agile had become mainstream (I have survey data that says 35% of development teams practice &#8220;Agile\u201d).\u00a0 And new processes are in the offing \u2013 Lean continues to gain momentum.\u00a0 And, in fact, I see lots of people trying to combine the best of Lean and Agile together.\u00a0 With the growing adoption of a well defined set of processes\/practices, we decided that it was time for TFS to invest more in experiences optimized for those practices.\u00a0 We still hold on to Your process, our process or no process but now we will build tooling optimized for well established practices.<\/p>\n<p>One of the areas we chose to focus on was Scrum based tooling.\u00a0 I have survey data that says about 84% of teams that say they practice Agile, practice Scrum as part of that.\u00a0 That makes Scrum the most adopted Agile practice.\u00a0 Here\u2019s a chart that shows the adoption of methodologies by Agile teams:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/6862.image_thumb_236A05BD.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-16234\" src=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/6862.image_thumb_236A05BD.png\" alt=\"Image 6862 image thumb 236A05BD\" width=\"324\" height=\"307\" srcset=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/6862.image_thumb_236A05BD.png 324w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/6862.image_thumb_236A05BD-300x284.png 300w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/6862.image_thumb_236A05BD-24x24.png 24w\" sizes=\"(max-width: 324px) 100vw, 324px\" \/><\/a><\/p>\n<p>Ironically, at the same time we were discussing this, we were deciding to adopt Scrum for our own feature team level development.\u00a0 We use more of a Microsoft practice for rolling that up through the organization.\u00a0 This was serendipitous because it would provide us a great opportunity to dogfood the tools and ensure we were building something our customers would love.<\/p>\n<p>Very early we decided to focus on a web based experience for our Agile project management tooling.\u00a0 A browser based solution makes the experience widely available to everyone on the team.\u00a0 At the same time, we felt projecting some of this directly into the Visual Studio and Eclipse development environments was also important.<\/p>\n<p>We broke down the basic Scrum project management cycle into the 3 highest priority activities:<\/p>\n<ul>\n<li>Backlog management \u2013 collecting the list user stories (requirements) and prioritizing them.\u00a0 The backlog is one of the central theories in Scrum.<\/li>\n<li>Sprint planning \u2013 choosing a set of user stories to implement in a sprint based on their estimated cost (story points) and the team\u2019s capacity (velocity).<\/li>\n<li>Daily stand-up \u2013 reviewing the newly completed work, work in progress and newly started work along with any impediments.<\/li>\n<\/ul>\n<p>We also considered a few other things (like retrospectives, etc) but, after discussing it with many customers and Scrum professionals, concluded that the 3 I listed above were the key areas where new tooling would help the most and that other things could work fine with tooling we already have.<\/p>\n<p>For each of these experiences, we wanted to create a solution that was incredibly easy to use and low overhead \u2013 work the way I do and stay out of my way.\u00a0 We also recognized that if we were going to rely on our web experience this deeply we were going to have some significant work to do.\u00a0 We wanted to modernize the overall look and feel \u2013 we adopted the \u201cMetro\u201d style from Zune\/Windows Phone.\u00a0 We also needed to really work on performance.\u00a0 Web access, in 2010, relied too heavily on server round trips for user interactions.\u00a0 We wanted an experience that not only used Java Script to keep the vast majority of processing local, we wanted to make most places where server round trips are necessary (like saving a work item) asynchronous.<\/p>\n<p>As we started to adopt Scrum ourselves and design our Scrum solution, it quickly became clear that we were going to need to introduce the concept of \u201cTeam\u201d.\u00a0 Each of our feature teams have their own backlogs, sprints, etc.\u00a0 We needed a way to identify the teams, easily select them, define properties for them, report on them, etc.\u00a0 As such, for V.Next, team has evolved into one of our central elements of our web UI.\u00a0 You select what project and what team you are working on and then much of the data in the UI is filtered to show you exactly what is relevant for you.<\/p>\n<h3>Product Backlog<\/h3>\n<p>In Scrum, the Product Backlog is kind \u201cthe one truth\u201d.\u00a0 It\u2019s the list of all work you have for a project.\u00a0 That work is expressed as user stories.\u00a0 You can think of a user story as a requirement.\u00a0 Some teams express their users stories in the form \u201cAs a &lt;some type of user&gt;, I can &lt;do something&gt; in order to &lt;achieve some result&gt;.\u00a0 User stories can be grouped together into what is called an \u201cEpic\u201d.\u00a0 This forms a hierarchy of requirements.\u00a0 The back log then orders these user stories from most important to least important \u2013 and you should implement them in that order.\u00a0 And any time something new comes up, it goes on the backlog.\u00a0 Of course, from time to time, you revisit your backlog and make sure it\u2019s still in the right order.<\/p>\n<p>Here\u2019s a screen shot of our product planning backlog.\u00a0 We\u2019re still working through the navigation model but let me call out some highlights.\u00a0 Looking at the upper left, you will see \u201cDevDiv\u201d.\u00a0 That\u2019s the name of the Team Project that Aaron is using (see his name on the upper right hand corner?).\u00a0 Next is \u201cAgile\u201d \u2013 that\u2019s the name of the team Aaron is on.\u00a0 Below that is a list of \u201chubs\u201d or areas of the product within the context that you\u2019ve set.\u00a0 What you see select here is the \u201cbacklogs\u201d hub.\u00a0 It allows you\nto see the entire product backlog or a past, current or future sprint.\u00a0 Within a backlog, you can easily add new user stories directly on the page and drag\/drop items around to set the priority.\u00a0 As you can see, you can also easily group them into a hierarchy.\u00a0 You can even drag an item over to a sprint on the left to automatically set the iteration path to a sprint.<\/p>\n<p>All in all, it makes for a very well tuned experience for managing a backlog.\u00a0 Simple, while at the same time, really fast to do all of the key backlog management activities.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/2063.02ProductBacklog_thumb_2727AA8D.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-16235\" src=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/2063.02ProductBacklog_thumb_2727AA8D.png\" alt=\"Image 2063 02ProductBacklog thumb 2727AA8D\" width=\"804\" height=\"601\" srcset=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/2063.02ProductBacklog_thumb_2727AA8D.png 804w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/2063.02ProductBacklog_thumb_2727AA8D-300x224.png 300w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/2063.02ProductBacklog_thumb_2727AA8D-768x574.png 768w\" sizes=\"(max-width: 804px) 100vw, 804px\" \/><\/a><\/p>\n<h3>Sprint Planning<\/h3>\n<p>Once you\u2019ve got your backlog, it\u2019s time to plan a sprint.\u00a0 Simply click on a sprint on the left and the view switches to a sprint planning view.\u00a0 To plan a sprint, you need to choose a set of user stories and then break the user story down into tasks.\u00a0 As you do this, you need to iterate between estimated cost and capacity.\u00a0 Different teams choose to do this in different ways so we provide a number of options.\u00a0 You can, if you choose, just use story points to plan your sprint and skimp on task decomposition.\u00a0 Or you can decompose into tasks (in hours or any other unit you choose), assign tasks to a discipline (dev, test, etc) then do capacity planning by discipline.\u00a0 Or you can assign tasks to people and then do capacity planning by person.\u00a0 In this example, user stories have been broken down into tasks and assigned to people.\u00a0 The right side shows what work is assigned to each person relative to their capacity (red means over committed and green means under committed).\u00a0 The capacity bar above the user story list shows the overall sprint commitment vs capacity.<\/p>\n<p>On the gray bar above the user story list, you\u2019ll see \u201cBacklog\u201d and \u201cCapacity\u201d.\u00a0 These are views within the backlog hub.\u00a0 The capacity view allows you to configure how capacity is calculated (availability of people on the team, interruptions, etc).<\/p>\n<p>Lastly I\u2019ll point out that right next to \u201calm sprint 13\u201d (the name of the sprint), you see April 27 \u2013 May 17.\u00a0 Those are the date for the sprint\/iteration.\u00a0 That\u2019s another new foundational feature in TFS V.Next.\u00a0 We now have dates on iteration and those dates are used in several places through the product (for instance, reports can be set to display an iteration and they automatically pick up the dates).\u00a0 This is been a big customer request for YEARS and we\u2019ve now added it and incorporated into the Agile project management experience.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/7041.10SprintPlanning_thumb_3053C001.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-16237\" src=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/7041.10SprintPlanning_thumb_3053C001.png\" alt=\"Image 7041 10SprintPlanning thumb 3053C001\" width=\"804\" height=\"601\" srcset=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/7041.10SprintPlanning_thumb_3053C001.png 804w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/7041.10SprintPlanning_thumb_3053C001-300x224.png 300w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/7041.10SprintPlanning_thumb_3053C001-768x574.png 768w\" sizes=\"(max-width: 804px) 100vw, 804px\" \/><\/a><\/p>\n<h3>The Daily Stand-Up<\/h3>\n<p>Once you\u2019ve planned a sprint, now you need to execute the sprint and, in Scrum, the primary tool for managing that is the daily stand up.\u00a0 In the daily stand up, team members gather together for as short a time period as possible (like 15 minutes) and review progress from the previous day, planned work for today and any impediments that are blocking progress.\u00a0 Some teams don\u2019t pre-assign work to people but rather use the daily stand up as the opportunity to pull work off the sprint backlog that they plan to do today.\u00a0 The tool of choice for the daily stand up is the \u201ctask board\u201d.\u00a0 It lists all of the user stories for the sprint and shows the state of the user story\/tasks \u2013 e.g. planned, in progress, complete.\u00a0 During the stand-up each member gets a few seconds to talk and makes any updates to the task board.\u00a0 In the early days of Scrum, the primary manifestation of the task board was a wall with sticky notes on it.\u00a0 As more and more teams adopted it \u2013 particularly distributed ones, electronic versions have become increasingly popular.<\/p>\n<p>Our new task board is shown below.\u00a0 It\u2019s a list of user stories on the left and a series of columns which represents the states of work (e.g. planned, in progress or finished).\u00a0 The cards in the grid represent tasks to implement the user story.\u00a0 You can easily see title of the task, who it is assigned to and the cost of the task.\u00a0 The task board is updated simply by dragging tasks from one column to another.<\/p>\n<p>On the upper right, you can see a burn down chart showing progress on the sprint.\u00a0 If you click on it, you get a bigger version, with trend lines, etc.\u00a0 You\u2019ll also notice that the grey bar has \u201cStories\u201d selected.\u00a0 If you select \u201cTeam Members\u201d, it pivots the work by person rather than by user story.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8424.21Taskboard_thumb_039AE05B.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-16238\" src=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8424.21Taskboard_thumb_039AE05B.png\" alt=\"Image 8424 21Taskboard thumb 039AE05B\" width=\"804\" height=\"601\" srcset=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8424.21Taskboard_thumb_039AE05B.png 804w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8424.21Taskboard_thumb_039AE05B-300x224.png 300w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8424.21Taskboard_thumb_039AE05B-768x574.png 768w\" sizes=\"(max-width: 804px) 100vw, 804px\" \/><\/a><\/p>\n<p>We\u2019ve been dogfooding this for the past several months and one of the things we quickly discovered was that, in the stand up, it was hard for the \u201cnext person in line\u201d to easily find their tasks (even when pivoted by team member.\u00a0 We recently added a new filter capability that makes it REALLY easy to focus in just on your work so you can make your updates and move to the next person quickly.<\/p>\n<p>In the view below, you can see that it is filtered to Jon Tsao\u2019s work (see right under the trend chart).\u00a0 When Jon is selected, all the user stories in which he has no tasks are collapsed.\u00a0 User stories in which Jon does have work are expanded.\u00a0 And tasks that are assigned to Jon are shaded dark, whereas those not assigned to Jon are shaded lightly.\u00a0 This makes it very easy f\nor Jon to focus on his work and update it.\u00a0 Further, if Jon changes any task while filtered in this view (for example, he moves a task from \u201cproposed\u201d to \u201cin progress\u201d), the task is automatically assigned to him (if it isn\u2019t already).\u00a0 This speeds up the stand up even further.\u00a0 If Jon needs to take a task from someone else or pull a task off the back log, he just drags it to a new cell and it\u2019s automatically assigned to him \u2013 Very Cool!<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/3644.26Taskboard_thumb_25C2C614.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-16239\" src=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/3644.26Taskboard_thumb_25C2C614.png\" alt=\"Image 3644 26Taskboard thumb 25C2C614\" width=\"804\" height=\"601\" srcset=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/3644.26Taskboard_thumb_25C2C614.png 804w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/3644.26Taskboard_thumb_25C2C614-300x224.png 300w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/3644.26Taskboard_thumb_25C2C614-768x574.png 768w\" sizes=\"(max-width: 804px) 100vw, 804px\" \/><\/a><\/p>\n<h3>Closing Thoughts<\/h3>\n<p>I feel really good about creating a great experience for people practicing Scrum.\u00a0 I\u2019ve only shown you a fraction of the capability that\u2019s here but I hope it\u2019s enough to wet your appetite.\u00a0 As we entered planning for this next release, I was talking to my team a lot about focus on building polished solutions rather than just a platform on which finished solutions could be built.\u00a0 I\u2019m very proud of the work we\u2019ve done to be very good at both.<\/p>\n<p>In that vein, what you\u2019ve seen here is a polished solution for Scrum.\u00a0 However, if you don\u2019t use Scrum exactly, it can still be very useful for you too.\u00a0 Like everything else in TFS, it is very configurable.\u00a0 You can configure what work item types you want to use.\u00a0 You don\u2019t like user stories?\u00a0 That\u2019s fine, change it.\u00a0 You use multiple types of requirements?\u00a0 That\u2019s fine too \u2013 we support that.\u00a0 You don\u2019t like the Proposed, In Progress and Completed states?\u00a0 That\u2019s fine \u2013 that\u2019s configurable too; define whatever states you want and we\u2019ll manage them.\u00a0 It\u2019s a polished solution with a great deal of flexibility.<\/p>\n<p>In the end, our Agile Project Management solution is a great way to manage your work, communicate priority and status.\u00a0 One of the premier value propositions for this upcoming release is \u201cFeedback\u201d \u2013 in many forms.\u00a0 As I talk more about V.Next in the coming months, I\u2019ll show you how the work we are doing enables you to create excellent feedback cycles in your development process that helps you create a better result.\u00a0 I view our Agile Project Management solution as providing an excellent approach to getting feedback on priorities and progress.\u00a0 It provides some great visual views that the whole team can share and really easy ways to adjust your plans.<\/p>\n<p>Our next release is going to be the best release yet and I can\u2019t wait to share more of it with you\u2026<\/p>\n<p>Brian<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When we first started designing Team Foundation Server, one of our mantras was \u201cYour process, our process or no process\u201d.\u00a0 What we meant by this was that TFS can play an important role in helping you automate your development process.\u00a0 Many teams already have a well establish process and aren\u2019t particularly interested in changing it.\u00a0 [&hellip;]<\/p>\n","protected":false},"author":244,"featured_media":14617,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[5,4],"class_list":["post-3981","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-tfs","tag-visual-studio"],"acf":[],"blog_post_summary":"<p>When we first started designing Team Foundation Server, one of our mantras was \u201cYour process, our process or no process\u201d.\u00a0 What we meant by this was that TFS can play an important role in helping you automate your development process.\u00a0 Many teams already have a well establish process and aren\u2019t particularly interested in changing it.\u00a0 [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/3981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/users\/244"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/comments?post=3981"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/3981\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media\/14617"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media?parent=3981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/categories?post=3981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/tags?post=3981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}