May 21st, 2024

Maximizing joy and minimizing toil with great developer experiences

Amanda Silver
CVP and Head of Product for Microsoft's Developer Division and GM for Microsoft's first-party engineering systems

The future always starts with developers. They determine the speed of innovation, and never has that been more true than today, in the era of Generative AI. We’re already seeing GenAI have a profound impact on the way that we build applications and collaborate with our colleagues. More developers will be empowered to create with technology by having access to a coach to guide you through each stage of your learning journey. And user expectations are evolving quickly so that today’s end-users expect their apps already know about their context and history, and even anticipate their next step.

There’s a lot of change on the horizon! But it can be hard to find the time to learn when we’re overwhelmed and bogged down with technical debt. Developers continually have to context switch between tools, which impacts their cognitive load and ability to focus. We know that even on a good day, developers only spend about 2 hours a day coding, and it takes them 23 minutes to regain focus after context switching. This, combined with randomizing meetings to assemble resources you need can make you feel exhausted at the end of the day and frustrated by inefficiencies. All this can take the joy out of work and make developing software feel like toil.

But we know there’s a path to developer happiness—where devs can focus more on coding and less on ops; where they can innovate at the speed of their creativity; and where they can get going fast, without having to worry about managing the infrastructure their apps depend upon.

Dev happiness = staying in the flow

One of our guiding principles is to bring the best tools to you where you live—in your code editing tools—so you can stay in the flow! At Build this week we’re announcing some pretty amazing developer experiences to bring more joy and less toil to your life as a developer.

For starters, we’re announcing the general availability of Visual Studio 17.10. In this version. We’ve plugged GitHub Copilot everywhere throughout the IDE, so it changes how you write, learn, test, search, and fix code in your apps.

Image Copilot in the IDE

We’re also announcing the preview of GitHub Copilot for Azure, an extension that integrates seamlessly with GitHub Copilot chat in Visual Studio Code and Visual Studio, bringing Azure expertise right to your fingertips! Using GitHub Copilot for Azure, you can learn about Azure resources and best practices; explore and manage Azure resources; and troubleshoot issues and locate relevant logs and code. GitHub Copilot for Azure is built atop a general extensibility surface area we’ve introduced into GitHub Copilot. Soon you won’t have to context switch as all your favorite tools will be integrated into your code! More on that in a bit…

.NET Aspire is now generally available

.NET Aspire codifies the best practices for cloud-native development with tools for multi-project management, built-in HTTP resiliency, health checks, OpenTelemetry, and easy multi-node deployment via Visual Studio, VS Code, and the Azure Developer CLI. .NET Aspire makes it easy to get started with templates and a set of curated components based on our opinionated stack inside Microsoft and co-developed with the .NET community.

Using .NET Aspire, it’s easy to build and debug using service discovery and a completely new developer dashboard to see real-time telemetry and metrics, and to get a foothold on diagnosing issues. You can run and deploy with a single command to launch and run multiple services. Being able to express app topology in C# makes cloud deployment easy to any cloud destination.

Lots of great innovations to bring the best of all your tools into where you live—your favorite code editor tools—so you can stay in the flow!

Building intelligent apps

Over the past year we’ve witnessed the birth of one of the most pivotal technological innovations in history: Generative AI (GenAI). It has changed user expectations for every experience and continues to shape how businesses think of technology as an enabler for rapid growth.

We refer to any app that uses artificial intelligence for all or some of its functionality as an “intelligent app.” The way intelligent apps change experiences and operations are what can become competitive differentiators. It starts by thinking about the use cases where your data can provide actionable insights that can improve your processes or your customer experience. This is a massive paradigm shift—it’s changing user expectations for how we all interact with technology. Natural language is the new user interface; we simply talk to it. I can ask it questions and it already has the context of my account or my history and it can even anticipate my needs. And these apps continually improve by learning while in production. What that means is that the traditional developer inner and outer loop also evolves to facilitate the evaluation cycle and continuous learning once deployed to production.

Whether you’re using a foundational model like GPT3, Phi-3, building your own custom machine learning, or augmenting an existing model with fine-tuning, these apps go beyond an algorithm recommending content based on what you click, tap, listen to, or watch. Intelligent apps learn from the user’s inputs and data to continually get better over time, while observing responsible AI best-practices.

For our developer tools and application building blocks, our goals are to…

  • Make building GenAI apps more approachable
  • Reduce the effort required to build, manage, and evolve GenAI apps
  • Support the end-to-end app development lifecycle, including the new tasks necessary to build intelligent apps — like evaluating models and prompts and preparing data
  • All while maintaining enterprise-grade security, scalability, compliance, and governance according to our DevOps and platform engineering best practices

Today, we’re announcing the AI Toolkit for Visual Studio Code. This toolkit helps AI engineers develop and deploy intelligent apps by enabling them to explore, acquire, evaluate, and integrate small and large language models within VS Code. You can use your local hardware to try, run, and evaluate state-of-the art small language models—or SLMs—like Phi-3. It takes advantage of the deep investments we’ve made in the ML stack on Windows to provide a turnkey experience to run any model seamlessly on your laptop, Dev Box, or Azure AI compute. While it runs best on Windows today, MacOS support is coming soon!

Image Model catalog

Intelligent apps: Better on Azure

In addition to providing a platform to host your apps, the Azure App Platform provides the essential building blocks you need to accomplish the different tasks that you typically do to build and operate a GenAI application, including leveraging Azure OpenAI and hosted models in your apps; building enhanced copilots; experimenting and optimizing; and hosting custom models and fine tuning them with your data.

All the capabilities are integrated with one another, and you can use them together seamlessly. For example, you can incorporate experimentation and use Vector DB add-ons for your GenAI apps running on any of our App Platform services.

Here are just a few of the ways that Azure is evolving for the era of AI:

  • When you start growing your application portfolio, you will likely want to track token usage across multiple applications, or to make sure that a single app doesn’t consume the whole TPM quota. Azure API Management has introduced new capabilities to enhance the scalability and security of Generative AI deployments. These include the Azure OpenAI token limit policy for fair usage and optimized resource allocation, one-click import of Azure OpenAI endpoints as APIs, a load balancer for efficient traffic distribution, and a circuit breaker to protect backend services.
  • API sprawl poses significant challenges in API governance, security, compliance, and reuse. Without a centralized inventory, APIs can become isolated, leading to poor API reuse, lack of alignment with organizational API design and organizational processes, as well as increased vulnerability to security breaches. And most GenAI apps consume LLMs via APIs – so the era of GenAI is the era of API-first development. The Azure API Center provides centralized API inventory for seamless discovery, reuse, and governance regardless of API type, lifecycle stage, or deployment location.
  • Azure Container Apps now include secure sandboxes at scale: When you build applications that run code or commands from untrusted sources, you have to ensure that the code runs in its own isolated environment. If an LLM is generating the code you need to evaluate, what is the best way to execute that code? Dynamic sessions provide secure, ephemeral sandboxes called “sessions” for running potentially malicious code. Each session runs in its own Hyper-V virtualization boundary — ensuring complete isolation from other sessions and resources.

You can read about all these Azure announcements and more in the Build Book of News.

Developer productivity comes from team agility

So, we’ve covered new tools and experiences that help you stay in the flow and get into building intelligent applications. Now let’s talk about how the practice of platform engineering can help organizations stay secure and compliant and developers focus on their code.

Developers want to be able to self-serve environments, workflows, and infrastructure with the confidence they’re adhering to the best practices and requirements of their organization. It’s just one more aspect of staying in the flow.

Last November we launched our guidance on platform engineering. On a very basic level, platform engineering is a set of patterns and practices helping to modernize enterprise software delivery. These patterns and practices, if executed right, can become the glue between development and operations teams—creating more cohesion and flow amongst teams throughout the product-making lifecycle.

At its best, Platform Engineering empowers teams to achieve scale and reduce the time it takes to deliver business value—all while eliminating toil, promoting self-sufficiency, and reducing the cognitive load required to meet broader operational and organizational standards.

With policy enforcement, security monitoring, and observability, organizations can govern their app estate to get better cost control and reduce risk while delivering a great developer experience.

And GitHub Copilot is now the perfect platform to deliver an unparalleled developer experience for platform engineering. With the new extensibility capabilities, GitHub Copilot can be augmented and grounded with your product catalog that you define in GitHub repos with Templates, Workflows, APIs, and samples that provide start-right automation and policy enforcement to your developers who can discover and deploy them with natural language user interfaces in Copilot Chat.

New features in Microsoft Dev Box and Azure Deployment Environments

Microsoft Dev Box, an Azure service that gives developers self-service access to preconfigured, project-specific developer workstations, has been a key part of our approach to platform engineering. Used by companies like GM and Siemens Healthineers China (and by over 25k Microsoft developers), Dev Boxes reduce environment setup from days to minutes, encouraging collaboration and experimentation. With pre-installed tools and source code, developers can onboard and start coding quickly.

For development teams, we’ve recently added standardized templates with project-level catalogs specific to each project. We also have a new Dev Box imaging service where teams can create and maintain custom image using config-as-code to make sure their entire team has a consistent environment.

Image Microsoft developer portal

And Azure Deployment Environments now delivers more seamless experiences to customers, enabling them to leverage popular Infrastructure-as-Code (IaC) frameworks quickly and easily with its new extensibility model and to perform or customize deployments based on their organizational needs.

Image Microsoft developer portal 8211 deployment

These capabilities give development teams more control to customize environment templates for their team-specific needs and provide platform engineers with additional ways to build templates in their preferred IaC format.

But consistent environments across teams doesn’t mean that the experience can’t be personalized to developers.

The new Dev Home capabilities in Windows make it easy to create a personalized, consistent environment that works beautifully with Microsoft Dev Box. It’s simple to create, connect, and customize Dev Boxes, pin frequently used Dev Boxes to your taskbar or start menu, and add tools onto your config or the one you’re building for the team.

Image Dev Home 3

Close

Our mission is to empower developers to achieve more. Our vision is to enable them to set up a complete engineering system in seconds, contribute from any device, build for any platform, collaborate with anybody, and scale with confidence. In the era of AI, developers and their teams can get into the zone, learn about new technology more quickly than ever before, explore what’s possible at the speed of their creativity, and share their expertise to accelerate the impact of their entire team.

 

Author

Amanda Silver
CVP and Head of Product for Microsoft's Developer Division and GM for Microsoft's first-party engineering systems

Amanda Silver is the CVP of Product for Microsoft's Developer Division, which includes the Visual Studio family of products, .NET, TypeScript, and our developer platforms. She has been key to Microsoft's transformation to contribute to open source with the introduction of TypeScript, Visual Studio Code, and the acquisition of both Xamarin and GitHub. She believes that a tight digital feedback loop with zero distance between end-users and engineering teams is a critical element of great product ...

More about author