Virtualization Improves Developer Productivity
The many ways virtualization technology can help you and your team get more done.
- By Peter Varhol
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.
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