Visual Studio Code
Visual Studio Code is a lightweight, cross-platform code editor for writing modern web and cloud applications that will run on OS X, Linux and Windows. The product was announced at the //build 2015 conference. After only a year, it had been installed over 2 million times, had over 500K monthly active users and became open-source. It's one of the first native Microsoft developer apps to be released for OS X and Linux, and is the most popular Microsoft project on GitHub.
The product was unique in that it combined the simplicity of a text editor with the superpowers of an full-blown integrated development environment (IDE). The result was a focused tool that we believe gives developers a streamlined workflow, that can be a core part of the tool set for building any kind of application.
What I find the most interesting about the results is not our success but the journey we took to get there to truly understand what problems we were trying to solve.
In the beginning, the problem statement we had was that Microsoft developers didn't have the ability to reliably work from anywhere. There were several solutions out there to help developers move their work across machines, but many times it required them to reinstall and reconfigure their favorite tools each time. Our solution was to provide code authoring experiences in the browser, removing the need to reinstall and reestablish context - as long as you had access to a browser, your tools, code and context followed with you.
The first experience we released was a simple web control, the Monaco Editor. It was embedded in various Microsoft products as a way to work with code in a productive and consistent manner across the web.
We then evolved the experience into a lightweight, browser-based development environment called Visual Studio Online "Monaco" - not the best name, but our first big step to realizing our vision.
The preview release of "Monaco" in 2013 went well at first. However, over the next year we found that while the idea of coding from anywhere was exciting, the reality we observed was that most developers used it sparingly, only to make small tweaks here and there, and only during times of crises and being away from a work machine.
Through research, observation and feedback, our key takeaways were:
- Most complementary tools used in the developers' workflows were not available in the browser.
- Most developers ultimately didn't trust the performance and reliability of the browser - too slow, easy to lose changes, difficult to troubleshoot.
- Many modern development tools were becoming easier to reinstall and reconfigure across machines.
- Most developers (Microsoft and non-Microsoft) loved that we created a lightweight version of Visual Studio that was cross-platform and more powerful out-of-the-box than their current other tools.
This lead us to pivot our efforts towards solving a different problem: that while many developers used lightweight tools, they had to spend additional time installing features that they felt were fundamental and should just come for free. Hence, we evolved the product into Visual Studio Code, a new kind of cross-platform development tool, one that focuses on core developer productivity.
I was the Lead Designer throughout this amazing journey, delivering design artifacts from storyboards to detailed visual/interaction specs to working prototypes to front-end production code.
I also became a key contributor to the research and telemetry efforts, conducting various usability studies, cognitive walkthroughs and in-person interviews with users to help to collect and synthesize valuable insights and feedback from them, ensuring we had the most reliable data possible to help drive product decisions. Even though my primary role was design, I was eager to grow into a research role as I felt I could make even more impact by interfacing more directly with our users.
Our product team was small and globally distributed, with the engineers in Zurich, Switzerland and research in Edinburgh, Scotland. I would be lying if I said collaboration wasn't a challenge. However I felt it was my strongest and best collaboration at Microsoft. We had daily standups in both Zurich and Redmond, using OneNote to keep our work in-sync and as a standing wiki. We used designated meeting intervals (7-10am in Redmond) to ensure we could meet in a timely and purposeful manner. And for everything else, we made video recordings of conversations, design ideas and prototypes to help communicate as much context as possible. We would also fly back-and-forth throughout the year to ensure we did deep in-person collaborations and constantly improve team bonding and dynamics.
Along the product's journey, we also partnered with other Microsoft teams that wanted to expand the product capabilities. The challenge here was ensuring that their feature requests benefited all users and not just optimized for certain ones. Our working model became that if the feature was too verticallly specific, it should be packaged up in an extension, giving the user full control over whether they needed the additional functionality. For everything else, we would incorporate it into the product and measure its success over time through user testing and telemetry.