Guest Opinion

Virtualization Improves Developer Productivity

The many ways virtualization technology can help you and your team get more done.

Developer productivity is one of the hot-button issues of the IT industry. The pace of writing code is something of a constant, varying by the individual, but an activity that cannot be accelerated in the aggregate. So we try to incorporate accelerators outside of that core activity, using frameworks to write less code or to write code that conforms to certain architectures more easily. Or, we rely on automated code-testing tools to improve quality without time-consuming manual code inspections and testing.

The entire exercise is geared toward enabling us to produce better software more quickly. But the value of these approaches in making better software faster is problematic. For many reasons, you can't tell if frameworks and tools actually made you productive, or simply enabled you to build a more complex application than might have been necessary.

That said, there are ways of improving developer productivity that are measurable. Automating or speeding up manual and often routine tasks that aren't related directly to coding can make it possible to ship the same code faster or to improve quality.

These tasks, such as building test systems, creating new application configurations, managing your test bed, and making sure you have repeatability in your testing, can be done significantly faster on virtualized servers and desktops.

You might already be leveraging the use of stored images in your test lab to create test environments quickly. But virtualization means much more than that. As a developer, you can install virtual machine (VM) images with operating systems, as well as software your application has to coexist with. You can debug your software in these VMs without leaving your desktop and with the ability to immediately go back to Visual Studio, make code changes, and try an alternative approach.

You can even try out software in beta, without building a new partition. The advantage there is to not waste time with juggling multiple boots and large, but still-finite disk capacities. By loading and unloading VMs at will, you can future-proof code against problems that might not be apparent until a new version of Windows appears a year down the road.

Unit and functional testing are other areas where using virtualization and VMs can speed up the process. Virtualization management tools let you schedule VMs and automatically load and unload them. Along with automated test scripts, your entire testing program can almost drive itself.

Finally, using VM tools can compress your testing time because you're running more tests on the same quantity of physical hardware. Because much of your time is spent in testing, the boost you get by automating both the tests themselves and the test environment can be significant.

At least one vendor has taken virtualization a step further and is offering to outsource your testing infrastructure to its virtual test lab. You specify the test environment you need, and the vendor creates that environment using a combination of physical hardware and VMs. You load your software and run your tests. If you need the same environments for regression testing, they're easily recreated.

Of course, any outsourcing has to weigh the benefits against the cost. But it's reasonable to assume that you can execute at least a portion of your testing quickly against a lab that's specifically set up to do just that. If your development and testing needs are significant and ongoing, you could set up a similar virtual lab on your own. There are large enterprises that can keep such a lab busy enough to justify a full-time lab with hundreds or even thousands of images.

Many of the advantages of virtualization in the development lifecycle seem like small potatoes, but each step adds up to one less thing that takes you away from your keyboard. The best productivity tool doesn't speed up coding for you; rather, it gives you time to focus on what's important. Virtualization helps you automate some of those mundane but necessary tasks, leaving you free to do what you do best.

About the Author

Peter Varhol is the executive editor, reviews of Redmond magazine and has more than 20 years of experience as a software developer, software product manager and technology writer. He has graduate degrees in computer science and mathematics, and has taught both subjects at the university level.

comments powered by Disqus

Featured

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube