{"id":225986,"date":"2019-07-31T08:00:25","date_gmt":"2019-07-31T15:00:25","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/visualstudio\/?p=225986"},"modified":"2019-07-31T09:16:54","modified_gmt":"2019-07-31T16:16:54","slug":"status-on-visual-studio-feature-suggestions","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/status-on-visual-studio-feature-suggestions\/","title":{"rendered":"Status on Visual Studio feature suggestions"},"content":{"rendered":"<p>Visual Studio receives over 500 feature suggestions from customers every month on the <a href=\"https:\/\/developercommunity.visualstudio.com\/\">Developer Community<\/a> website. Handling that amount is a huge effort and we\u2019d like to share with you how we handle this volume and the steps that we take to respond to them all. What happens to suggestion tickets after they\u2019re opened, how many make it into Visual Studio, and what happens to the rest? Let\u2019s find out.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-225598\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/06\/word-image.png\" alt=\"\" width=\"1431\" height=\"506\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/06\/word-image.png 1431w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/06\/word-image-300x106.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/06\/word-image-768x272.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/06\/word-image-1024x362.png 1024w\" sizes=\"(max-width: 1431px) 100vw, 1431px\" \/><\/p>\n<p>Let\u2019s start with the breakdown of incoming suggestion tickets in the past 6 months and what state they are in today. We find that around 15% of the suggestions are challenging to act on, and they typically fall into the following buckets.<\/p>\n<p>11% &#8211; Closed as duplicate\n3% &#8211; Closed due to missing info from customer\n1% &#8211; Closed because they were not suggestions for Visual Studio<\/p>\n<p>We do our best to follow up with customers to get more information where we can and move them into the next stage. For example, when making a suggestion to add a command to a context menu, it is important for us to know which context menu you meant.<\/p>\n<p>That leave us with <strong>85%<\/strong> left which are currently moving their way through the system. Here is the status of those tickets currently in our system:<\/p>\n<p>40% &#8211; Closed for a number of reasons (more info below)\n20% &#8211; New, not yet processed or triaged\n28% &#8211; Under review and gathering votes and comments\n3% &#8211; Awaiting more info from customer\n3% &#8211; On roadmap (under development)\n6% &#8211; Completed and released<\/p>\n<p>Now let\u2019s dig in and see what\u2019s behind those numbers.<\/p>\n<h2>From <em>New<\/em> to <em>Under Review<\/em><\/h2>\n<p>We have a filtering system that automatically routes incoming suggestions to the appropriate team within the Visual Studio organization. Within my team, we have established a weekly process to triage these routed suggestions and review status. The process we follow looks like this:<\/p>\n<ol>\n<li>Does this bug belong to my team?\n<ul>\n<li>If not, move it to the right team<\/li>\n<\/ul>\n<\/li>\n<li>Is the suggestion a duplicate of an existing suggestion?\n<ul>\n<li>If so, close it and transfers all votes to the original ticket (happens automatically)<\/li>\n<\/ul>\n<\/li>\n<li>Does the suggestion contain all needed information?\n<ul>\n<li>If not, ask customer for more information<\/li>\n<\/ul>\n<\/li>\n<li>Was this suggestion already completed or in active development?\n<ul>\n<li>If so, close it as either <em>Completed<\/em> or <em>On Roadmap<\/em><\/li>\n<\/ul>\n<\/li>\n<li>If it made it this far, mark it <em>Under Review<\/em> to gather votes and comments for 90 days<\/li>\n<\/ol>\n<p>By following these steps, most suggestions end up <em>Under Review<\/em> as we gather more data, refine any repos or requirements. These make up over a quarter of all suggestions.<\/p>\n<p>Every time someone adds a new comment to an existing ticket, we receive an email, so we know what\u2019s going on with each ticket along the way, and can respond if needed.<\/p>\n<h2>Moving on from Under Review<\/h2>\n<p>Within 90 days, we attempt to address items that are still marked <em>Under Review<\/em>. Our options are:<\/p>\n<ol>\n<li>Mark it as <em>Completed<\/em> because we implemented the suggestion<\/li>\n<li>Mark it as On Roadmap because it\u2019s in active development or will be very soon<\/li>\n<li>Close it because it didn\u2019t get any votes and\/or we\u2019re not able to prioritize it<\/li>\n<\/ol>\n<p>When we implement a suggestion, we mark it <em>Completed<\/em> or <em>On Roadmap<\/em>. Currently, approximately ~10% of the incoming suggestions go on to be implemented or added to <a href=\"https:\/\/docs.microsoft.com\/visualstudio\/productinfo\/vs-roadmap\">the roadmap<\/a>.<\/p>\n<p>But what about the ones that don\u2019t?<\/p>\n<h2>Reasons for closing suggestions<\/h2>\n<p>Most suggestions are good suggestions and it\u2019s always painful to close them. Especially because a lot of them are some that we personally would like to see implemented. As developers, you know that time and resources are finite, which means we can\u2019t implement all suggestions.<\/p>\n<p>The reason we close suggestions is a mix of multiple factors, such as:<\/p>\n<ol>\n<li>It didn\u2019t receive any votes after 90 days as <em>Under Review<\/em><\/li>\n<li>It got a few votes, but an implementation will not fit within our available resources<\/li>\n<li>It involves areas in Visual Studio that see little usage by our customers<\/li>\n<li>It has negative side-effects such as degraded performance, accessibility etc.<\/li>\n<\/ol>\n<p>Over a third of all suggestions end up closed due to one or more of the above reasons.<\/p>\n<p>On the positive side, even for some <a href=\"https:\/\/developercommunity.visualstudio.com\/comments\/653361\/view.html\">suggestions<\/a> that we close, we do move the capability into an experimental extension for Visual Studio. This allows us to lower the cost of delivering a quality product investment, and where we can draw more interest from the community.<\/p>\n<h2>Suggestion completed<\/h2>\n<p>6% of all actionable suggestion tickets end up marked as <em>Completed<\/em>. It may not sound like much, but it is about 1 suggestion per weekday. Let that sink in. <strong>Every single weekday, the Visual Studio engineering team implements a community submitted suggestion<\/strong>.<\/p>\n<p>Before we implement a suggestion, we first write a spec for it if needed. Then we schedule the work item in a sprint for engineering to pick up. The implementation sometimes require work by multiple teams to coordinate, so they can each do their piece of the feature.<\/p>\n<p>After automated test and compliance runs have finished, it\u2019s time for code review before the code starts its journey toward the Visual Studio master branch. More automated testing runs and finally manually testing follows. After fixing all identified bugs, the completed suggestion makes its way to a Visual Studio Preview release for user testing and stabilization.<\/p>\n<p>So, how do we decide to implement suggestions and how can you optimize the chances of your suggestion making it? We look at several things:<\/p>\n<ol>\n<li>Suggestions with many votes and continuous votes over time<\/li>\n<li>Suggestions in areas that see lots of usage by our customers<\/li>\n<li>Suggestions that are easier to implement<\/li>\n<li>Suggestions that would improve Visual Studio\u2019s competitive advantage<\/li>\n<li>Well written suggestion with all relevant information in the description<\/li>\n<\/ol>\n<p>A different way to think about it is to turn it around. Imagine someone wanted <strong>you<\/strong> to implement a feature in your product. It\u2019s in the best interest of our product and customers to complete as many suggestions as possible, and we strive to do so.<\/p>\n<p>The best times are when we get to <a href=\"https:\/\/developercommunity.visualstudio.com\/comments\/586372\/view.html\">make a lot of people happy<\/a> with a feature implementation based on a suggestion.<\/p>\n<h2>We <span style=\"text-decoration: line-through;\">can<\/span> must do better<\/h2>\n<p>We\u2019ve gotten feedback that this process feels like a black box. Customers feel like they don\u2019t get a response and they don\u2019t know the status of their suggestions.<\/p>\n<p><em>After submitting a suggestion, there is no transparency into the process, and it ends up closed without any good reason 6 months later. I end up feeling frustrated and angry. I don\u2019t want to submit another suggestion just to be ignored. <\/em>\u2013 Anonymous Visual Studio user<\/p>\n<p>This is not acceptable. We must do better.<\/p>\n<p>Some ideas that we are working on within the team are as follows. And, we welcome your feedback on what we might do more of to help you understand the process better.<\/p>\n<p><strong>First up<\/strong>, we want to be much more transparent about the process. That\u2019s exactly what this blog post aims to achieve.<\/p>\n<p><strong>Secondly<\/strong>, we must be faster at responding to new suggestions. That means triaging them within the first week, so we can bring down the 20% of new untriaged suggestions to a minimum. It also means not leaving any suggestions to linger for months. This will add visibility into what is going on with the suggestions much earlier and throughout its various phases. We\u2019ve made great progress with this in the past 6 months, but still have a bunch of open tickets to go.<\/p>\n<p><strong>Thirdly<\/strong>, we need to be better at giving reasons for closing tickets. Individually written by the program manager that closed them and not an automated response. As we\u2019re getting better at handling the vast amount of incoming suggestions, this is where we\u2019ll focus next.<\/p>\n<h2>Feedback<\/h2>\n<p>I hope this blog post helps shed light on the way we handle suggestion and how we plan to improve. Completing a suggestion every single weekday will hopefully encourage you to continue opening suggestion tickets.<\/p>\n<p>In closing, we\u2019d really like to hear your thoughts or questions. What could we do better and what do we do well? Let us know in the comments below.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visual Studio receives over 500 feature suggestions from customers every month on the Developer Community website. Handling that amount is a huge effort and we\u2019d like to share with you how we handle this volume and the steps that we take to respond to them all.<\/p>\n","protected":false},"author":642,"featured_media":225598,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[155],"tags":[354,1229,12],"class_list":["post-225986","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-visual-studio","tag-announcement","tag-devcomm","tag-visual-studio"],"acf":[],"blog_post_summary":"<p>Visual Studio receives over 500 feature suggestions from customers every month on the Developer Community website. Handling that amount is a huge effort and we\u2019d like to share with you how we handle this volume and the steps that we take to respond to them all.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/225986","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/users\/642"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/comments?post=225986"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/225986\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/225598"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=225986"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=225986"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=225986"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}