A Year with Visual Studio IntelliCode – Part 1: Common Misconceptions
Tags: intellicode, tools
Published: 2019-09-03 18:58:00


Hi, I’m Allison! I’ve been at Microsoft for 4 years working as a Program Manager on Visual Studio and I’ve spent the last year wholly focused on Visual Studio IntelliCode. I’ve never written a personal blog post but as I contemplated my last year with this team and its customers, I realized there were a lot of things I wanted to share with the community. 

For Part 1 of this retrospective, I’m tackling the misconceptions I’ve had to explain at least a thousand times in the past year (alright, that’s a slight exaggeration) but I hope maybe this will clear up confusion once and for all (I know, big dreams). Part 2 will cover personal learnings as a program manager on the team. Part 3 will discuss how we build and release new features and I'm still brainstorming for Part 4+ (all suggestions welcome 😊).

With that, let me try to clear up the top 3 IntelliCode misconceptions I’ve come across the past year:

**IntelliCode Misconception #1: It’s just an MRU for IntelliSense/most popular selections.**

When we talk about IntelliCode, you’ll often hear something along the lines of “it analyzes open source repositories to look for the most common patterns,” so I totally get where this confusion comes from! But IntelliCode’s AI-assisted IntelliSense is so much more because it takes context into account! 

An MRU would suggest what you last selected and a frequency-based suggestion would give you the same suggestions for every class, no matter how you were using it. With IntelliCode, we take in more information to change your top suggestions. For example, are you in a method body? Are you in an if statement or for loop? What type of variable are you trying to assign to? 

Check out the gif below to see how three different contexts – method body, if statement, and variable assignment – change the top starred suggestions!

![Simple IntelliCode examples](https://thepracticaldev.s3.amazonaws.com/i/ayf8ywiqbkr8k22jzady.gif)

**Intellicode Misconception #2: It only covers “smarter” IntelliSense.**

IntelliCode is actually the broader name of the collection of developer smarts that my team researches and creates. We’re looking at everything from how ML can help tests heal to intelligently creating refactorings based on changes you’ve made in a file to inferred style rules based on your current codebase patterns. Our enhanced IntelliSense offering was the first thing we released but IntelliCode’s got much more on the way!

**IntelliCode Misconception #3: It’s learning from what I type – oh no! 😮**

I solemnly swear we are not watching what you type and using it to improve our models. Our base models are retrained on open source repositories periodically, but we never feed in information from you. If you choose to create a custom model, we’ll extract the [smallest bit of necessary information](https://docs.microsoft.com/en-us/visualstudio/intellicode/custom-models) from your solution to create your model but only transmit that data when you choose to create a model. It is not an on-going process. Your security and privacy is of the utmost importance to us!

If you’re still confused or have any feedback about IntelliCode, I’d love to chat in the comments below. You can also check out our getting started [docs](https://docs.microsoft.com/en-us/visualstudio/intellicode/overview)! 

Tune in next time to hear a bit more about what I’ve learned personally in the last year.