MSDN Interview
September 2, 1999
Amitabh Srivastava is director of the Programmer Productivity Research Center at Microsoft, one of the newest groups in the Microsoft Research Organization. His team hopes to radically improve the effectiveness of Microsoft product teams by creating tools that will help programmers and testers be more productive at building and debugging today’s ever-more complex software.
As Srivastava explains below, in his first interview about the new research center, his team is focusing on several key areas: performance, testing, correctness, infrastructure, and collaboration. The center is working with several universities in conducting its research.
Here is a transcript of his interview with John Swenson.
MSDN Online: Tell us about the new Programmer Productivity Research Center at Microsoft, which you manage. It certainly has an intriguing name and an ambitious mission.
Srivastava: Microsoft formed the center in March to look at all aspects of programmer productivity. Our goal is to investigate radical approaches to improve programmer productivity by helping product teams deliver high-quality, high-performance software in short development cycles, using as few resources as possible. If we don’t solve this problem, the cost of producing high-quality, complex software will grow exponentially.
Microsoft is a great place for this center because it has one of the largest and most complex software development environments. This allows the center to investigate radical approaches and test its ideas by applying them to the Microsoft development process.
A number of groups at Microsoft were working on different aspects of software productivity, but the company wanted to create a bigger integrated effort, so several existing teams were joined together to create the Programmer Productivity Research Center.
We have projects in each of the four stages: concept, prototype, advanced development, and deployment. Our job is to keep this pipeline full as projects move from one stage to another.
MSDN Online: Why did you call your group the Programmer Productivity Research Center, instead of something like the Programmer Productivity Research Group? Do you actually have a center at Microsoft that developers can visit?
Srivastava: Not really. We conduct research, but we also deliver complete solutions that can be used by the product teams. We take our ideas all the way from concept to deployable solution. Our vision is to create a center of excellence where the best brains, including those from academia, are investigating ways to efficiently develop complex software. We’re really encouraging more activity from academia in this area. This type of research requires access to real production environments. Through collaborations with researchers at the center, students and professors will be able to test their ideas in a real production environment. Our hope is that this center will spark a lot of activity.
MSDN Online: Can you talk more about the problems with programmer productivity that you're focusing on?
Srivastava: We've divided the center into several groups focusing on different aspects of software productivity.
One group is looking at performance. It is building tools that provide developers with detailed analysis about the performance characteristics of its program, such as where the program is spending its time, how much memory is used by different pieces of the program, how much time is spent doing I/O, which pages of memory are used by the program, and so on. It is also working on tools that can utilize all this information to optimize the programs and automatically create high-performance applications.
The second area the center is focused on is testing. We want to improve the effectiveness of testing by helping testers find the maximum number of bugs while running as few test cases as possible. We want to create tools that guide testers to focus on pieces of code that have not been tested before and help testers write test cases to cover the untested areas.
The third area the center is focused on is correctness. This is the study of how to improve reliability of applications by stopping defects from getting in. We want to be able to check programs and identify errors up front, even before the code gets into a tester’s hand. By using static analysis, we can build tools that help developers identify problems that they can fix before they turn it in for testing. The best way to handle defects is to stop them from ever getting into the active code base.
The fourth area the center is working on is collaboration. The goal is to link the various information (e.g., source changes, bugs found, test history) in the development process to allow tools used in different phases to work together. For example, testers can be more effective if they know what parts of the application changed. They can focus their test efforts on the changed portions of the program. To better utilize the testing resources, the efforts of different testers can be coordinated.
Lastly, the center is focused on building infrastructure technologies. The goal is to build different technologies, such as dynamic instrumentation and static analysis that provide the foundation on which tools can be built with very little effort. We utilize the infrastructure ourselves to build tools, but also provide it to other developers and testers to let them build custom tools.
MSDN Online: What is the center doing to help testers catch the bugs that make it into a build?
Srivastava: Once a fault enters the system, testers have to expose the fault through a failure. Besides providing testers with tools that help them build test cases to test more and more parts of the program, we can help them further by providing collaborative tools. By enabling testers to know what parts of the program have been changed, testers can focus their efforts on specific pieces. By having access to information -- such as source changes, test case characteristics, and test history -- efforts of several testers are coordinated.
MSDN Online: Will developers outside Microsoft ever see the results of the center's work?
Srivastava: We hope so. We are a research group and use Microsoft as our test bed, but we build real solutions. We believe that if we develop tools that are successful internally, there is a good possibility that Microsoft's product groups will pick them up and eventually provide them to the external developer community. However, that is a decision product teams will have to make based on several factors that we don’t take into account on the research side.
MSDN Online: Your team has grown rapidly since Microsoft launched the Programmer Productivity Research Center. How big is the group now?
Srivastava: We now have about 60 people. We were able to grow fast because we started with several existing teams working in this area. We have an exciting goal and a great opportunity, so it is easy to attract talented people.
MSDN Online: What kinds of groups did you pull together? Research groups?
Srivastava: Our group is a combination of research groups and development groups. When we come up with ideas, we experiment with them inside Microsoft to see if they work. That’s why we need people with a research background and also people with a development background.
When you combine these two sets of people and let them work together on projects, good things happen.
MSDN Online: What was your selection process for recruiting people to work at the Programmer Productivity Research Center?
Srivastava: Microsoft, in general, has a very high bar, and we have hired experts. I look for people who have a spark in their eyes and a passion for their work. You can hire the smartest and the brightest but unless you have the passion to go with it, you’re only half way there. We have a great team.
The researchers at this center have a track record of doing effective research in their areas. Most of the people in charge of building and deploying these tools inside Microsoft came from the Microsoft product groups. They understand the terrain and already know how things get done here. Our goal is not to ship a product. We don’t have to shrink-wrap our tools and add all the fancy stuff. But our tools have to be real enough that groups like Windows NT, Office, or SQL Server can use them.
MSDN Online: How does this make you different than, say, Microsoft's Visual Studio® team?
Srivastava: Our job is to investigate radical approaches. Not everything we do will succeed. Taking risks is a key attribute of Microsoft Research and wholeheartedly supported by Microsoft. We factor this into our decision process here at the Programmer Productivity Research Center. We take our successful ideas to completion. We pay less attention to the final polish and more to functionality and usability.
MSDN Online: Do you track the tools your team builds that make it into Visual Studio or other Microsoft developer products for the outside world?
Srivastava: Product teams make their own product decisions based on market needs, usability and other factors. We are definitely in touch with them, and they know the tools we are developing, but our evaluation criterion is very different.
MSDN Online: Do your researchers and developers ever work directly with the Visual Studio team?
Srivastava: Oh, yes. Only last week I was talking with Brian Arbogast (general manager of the Visual Studio group). We’d like our tools to work in the Visual Studio environment.
MSDN Online: How many major tools has your group built that are currently in use inside Microsoft?
Srivastava: About six, and several more are being introduced in the coming months. They include performance, correctness and testing tools.
MSDN Online: Is your productivity center doing anything besides building new tools to make developers more productive?
Srivastava: Tools alone are not sufficient to solve the whole productivity problem. After building great tools, we need to focus on process and then on the overall software design methodology. It is a very challenging and formidable task.
To learn more about the work Srivastava's team is doing, visit the center's Web site at http://research.Microsoft.com/pprc/.
Amitabh Srivastava is director of Microsoft's Programmer Productivity Research Center. Before joining Microsoft Research in 1997, Amitabh was vice president of engineering and chief technical officer at TracePoint, a spin-off from Digital Equipment Corp., and worked at Digital's Western Research Lab. Prior to joining Digital, he worked on LISP machines at Texas Instruments Research Labs. He has spent his entire career in software research.