Moving to a Common Environment Across Visual Studio

An Interview with Michael Halcoussis, Manager of the Visual Studio Environment Team

MSDN Interview
November 11, 1998

With Visual Studio® 6.0, Microsoft moves a big step closer to a common environment shared by all the tools in the suite. In this interview with MSDN Online, Michael Halcoussis, the head of Microsoft's Visual Studio environment team, explains the significance of the new common IDE in Visual J++® 6.0 and Visual InterDev™ 6.0. Learn how his team designed the new environment, and why even Visual Basic® and Visual C++® users will want to become familiar with it.

MSDN: What was your role in the development of Visual Studio 6.0? What parts of the new tools suite did your team create?

HALCOUSSIS: During the creation of Visual Studio 6.0, I was development manager for the Visual Studio environment. I played two major roles there. One was to lead the development team that produced the new integrated development environment (IDE) in Visual Studio 6.0, which you can see in Visual J++ 6.0 and Visual InterDev 6.0. My other role was to run the build team that actually assembled the Visual Studio 6.0 software every day.

The parts of the suite my IDE Team created include the main UI you see when you run Visual J++ 6.0 or Visual InterDev 6.0, UI items such as menus and toolbars, the project explorer, the property browser, the debugging UI, and the editor.

MSDN: Can you explain the motivation for creating this new common IDE that developers can see today in Visual J++ 6.0 and Visual InterDev 6.0? What was the main goal of the effort to create a new common environment?

HALCOUSSIS: Our main goal was to increase developer productivity. We really looked at how developers use their tools, and realized a lot of developers use more than one of our tools. That's why we decided to focus on creating a single IDE for both Visual J++ and Visual InterDev in Visual Studio 6.0.

MSDN: With Visual InterDev and Visual J++ now sharing the same IDE, it appears that you are working to move all of Microsoft's tools to a common environment, correct?

HALCOUSSIS: Yes. For Visual Studio 6.0, we tried to get all the different Visual Studio development teams to share as much source code as possible. There are a lot of areas where we worked with all the teams to create a more consistent product. We tried to act as a guiding force to ensure consistent object models, internationalization, accessibility, and other features that needed to be more uniform across Visual Studio. Moving forward, you can expect that we'll continue focusing on bringing the tools closer together.

MSDN: I assume it's harder to create a common environment with shared technology across all the Visual Studio tools than to do things the old way and allow each tools team go their own way during development.

HALCOUSSIS: Yes, it is harder. This is interesting. We have separate Visual Studio development teams that can create their own tool without sharing pieces of it with other teams. If they do that, however, they end up with an inconsistent UI compared to the other tools in Visual Studio.

When we met with each Visual Studio development team to convince them of the need to make their tool consistent with all our other tools, each team had different ideas on how they thought this should work. We had a lot of conversations about the best way to ensure consistency. Each team felt one way was better for their users, even though that may not have been the best way for our other users.

When we actually went out and talked to the developer community, we learned there's a big overlap between all our Visual Studio tools users. We found that most developers use more than one of our tools. That's why we're trying to get more of our people to think of these different developers as the same user, at least as far as the UI goes.

Once we get all of our own development people thinking this way, it will be a lot easier to create a common UI across Visual Studio.

MSDN: What are the highlights and key features of the new common IDE shared by Visual InterDev 6.0 and Visual J++ 6.0?

HALCOUSSIS: Just the fact that these two new tools share the same IDE is really significant, but the common IDE also led to new capabilities in each product. By bringing the two environments together, the Visual InterDev and Visual J++ product teams were able to utilize features they hadn't imagined they would be able to add to their tools.

For example, there were some database development features the Visual InterDev team created that the Visual J++ team wasn't planning to have. But once that feature was integrated into the common IDE, the Visual J++ team realized how easy it was to leverage the feature as well.

The common IDE helped us greatly enhance many features from the previous versions of Visual InterDev and Visual J++, such as the way the new editor and debugger work. It also let us add Command Bar technology developed by the Microsoft® Office team.

MSDN: I understand many of the user interface elements in Visual Studio 6.0 are shared with Office 97. What is the significance of this?

HALCOUSSIS: There are a couple of reasons this is very significant. One is that the Office team concentrated a lot of effort on improving the user experience with menus and toolbars that are easier for people to use and customize. They have a large development team working on that effort. By integrating and leveraging their technology in Visual Studio, we were able to provide a much richer experience for developers than we could have done on our own, using only the resources of the Visual Studio team.

Second, a lot of developers utilize Office applications in their development work. They may use Excel to track the performance data of their applications, for example, and Word to write code specifications. Developers who use Office applications are already familiar with how the menu structure in Office works, and how to customize Office menus. By sharing a common UI across Visual Studio and Office, we can make these developers more productive.

MSDN: Is the common IDE in Visual InterDev and Visual J++ the biggest change in the Visual Studio 6.0 environment?

HALCOUSSIS: We also added a number of other productivity enhancements to help developers manage their tools. These includes features such as docking and linking windows, which allow developers to switch between tools easier and reduce the screen space taken up by individual tools.

MSDN: Is the Visual Basic environment becoming more or less similar to the IDE in Visual InterDev and Visual J++?

HALCOUSSIS: It's becoming very similar. One of the most significant aspects of Visual Studio 6.0 is how it moves the whole suite closer toward the common IDE in Visual InterDev 6.0 and Visual J++ 6.0.

We actually used the source code from the Visual Basic IDE to create the new IDE for Visual J++ 6.0 and Visual InterDev 6.0. Unfortunately, we didn't have time to fold the new IDE back into Visual Basic 6.0. But because the source code came from the same place, the IDEs at least seem very similar.

MSDN: The editor in Visual InterDev 6.0 is the same as the editor in Visual J++ 6.0, but Visual Basic 6.0 uses a different editor. Is it worth it for a Visual Basic developer to spend time learning the editor in Visual InterDev 6.0 and Visual J++ 6.0?

HALCOUSSIS: Absolutely. When we used the Visual Basic code base to produce our new environment, we discovered Microsoft doesn't have an editor capable of supporting all our languages: C, Java, Basic, and the scripting languages.

That's why one of our biggest efforts on Visual Studio 6.0 was to start from the ground up producing a new Unicode editor that takes the best of our C editor and combines it with the best from our Basic editor. The result is the new editor in Visual J++ 6.0 and Visual InterDev 6.0. This is our core common editor. Both Visual Basic and Visual C++ will use it in the future.

MSDN: Has the IDE in Visual C++ 6.0 changed much from Visual C++ 5.0?

HALCOUSSIS: Although we were not able to get Visual C++ 6.0 into the new shared environment, we did make some major improvements to the Visual C++ IDE. We made the Visual C++ code editor more productive by adding automatic statement completion and IntelliSense® features. There are a number of other improvements.

MSDN: Did your team make any other improvements to the new common IDE that you haven't discussed yet?

HALCOUSSIS: Yes, we introduced the concept of a "solution" in Visual InterDev 6.0 and Visual J++ 6.0. This allows developers to combine multiple Visual J++ and Visual InterDev projects into a single workspace. These multiple projects can be opened, closed, and saved together as a single solution. Each individual project within a solution can contain multiple files or items.

Another new feature that should give developers a big productivity increase is the Task List window. This works in conjunction with the editor and compiler to associate tasks with the code you're working on. For example, you can type "to do" and automatically generate a Task List.

The Task List displays specially marked comments, named shortcuts, warnings, errors detected while you type in the Text Editor window, and errors detected while you are compiling your project. The latter helps you walk through coding errors and fix them.

Finally, we invested a lot of effort in the new toolbox in Visual J++ 6.0 and Visual InterDev 6.0. This toolbox has some features in common with the Visual Basic toolbox, but we extended it. Now you can drag pieces of code from the editor to the toolbox, using it like a big clipboard. There's a lot more functionality in the new toolbox than we've ever had in the past.

MSDN: You obviously believe the new common environment is a big step forward from previous Visual Studio environments.

HALCOUSSIS: Yes, we really think this IDE will enable us to move Visual Studio into the future.

We've chosen to use COM interfaces to integrate all our tools. Having the new IDE support COM interfaces will make it much easier for us to leverage our work moving forward as we develop new versions of Visual Studio.

MSDN: Can you describe what your team is working on for the next version of Visual Studio? Are you still focusing on the environment?

HALCOUSSIS: My role has expanded somewhat beyond just the environment. When we started working on the next version of Visual Studio, we looked across the entire Microsoft Tools Division at all the shared technologies we were creating. To manage them, we decided to form a large Visual Studio development organization similar to the Microsoft Office team.

With this new organization, my team is now also working on the HTML Help engine for the MSDN Library, data tools for query and schema design, the VBA technology integrated with Office, and more. By folding all these technologies together into one Visual Studio development team, we've created a major force focused on the shared pieces across all our tools.

MSDN: Does this concentration of talent focused on the shared pieces of Visual Studio mean developers can look forward to working with a single environment in the next version of the tools suite?

HALCOUSSIS: We already have many shared features across the Visual Studio suite today. Although all our tools don't share the same shell yet, we have enough shared features that developers can gain the advantages of shared code today.

Visual Studio 6.0 has many shared features, such as IntelliSense across the suite, shared package and deployment technologies, shared database design tools, shared debugging tools, shared creation of stored procedures, and shared component management.

For the next release, we're focused on bringing all the tools even closer together. The next version of Visual Studio will share more features, making it easier for developers to jump from one language to another as they build their solutions.

--------------------

Michael Halcoussis is development manager for the Visual Studio team. He joined Microsoft in 1992 as a Software Design Engineer on the Visual Basic Team. Prior to joining Microsoft he developed software at Buttonware and DBVisions.

Halcoussis has worked on the Visual Studio team since 1996. During that time, he has managed the development and delivery of Visual Basic for Applications technology and the Visual Studio IDE for Visual J++ 6.0 and Visual InterDev 6.0. Since the completion of Visual Studio 6.0, his role has expanded to include managing all the shared design-time technologies for the next version of Visual Studio.