Madhu: Most of my experience has been with Visual Studio 2003 so that's what I'm going to cover mostly. But I'll point out some improvements in VS2005 that I know about.
What's so great about Visual Studio? One important feature is that people can jump in and be productive quickly. Out of the box, VS supports multiple languages. Also they have multi-target support (desktop, web, handheld).
VS2005 improves upon this. Microsoft has focused on three "technology pillars": smart client, web, and application lifecycle. They've added code refactoring, more Office integration, and better debugging (for example, you can move the instruction pointer back and re-execute code).
What's not so great about VS? The cost of course. But the biggest thing may be that it uses a traditional IDE model: you write code, compile, fix errors, and repeat. That's ok but in order to do code completion you have to have a clean compile. Compilation is not incremental like Eclipse (immediate "red squiggles"), and the code, editor, and compiler are very separate. So the IDE doesn't know everything about your code while you're working. Also there's no analogous concept to Quick Fix. I have this mode where I just program with Ctrl+Space, Ctrl+1, Ctrl+Space, Ctrl+1, over and over. Also the documentation is weak, or at least not as accessible, compared to Eclipse's integrated Javadoc.
Eclipse requires slightly more training. It's not exactly a traditional IDE, and perspectives and workspaces are not easy concepts for beginners. There are many neat, subtle features that aren't immediately obvious. But Eclipse plug-ins are fantastic. VS has plug-ins but it remains to be seen how well that will pan out.
Prior to Eclipse, I was convinced MS would steamroll Java with .NET and VisualStudio. After all, they have the resources, motivation, and customer base. But after I saw Eclipse I was stunned. VS is a great product but Eclipse is in a different league.
Madhu's Recommendations for improving Eclipse:
- Don't forget about the beginners. First impressions are the most important. Wizards are not the answer!
- Don't forget desktop applications. Web apps are great but Swing/SWT still matters. Maybe a simple GUI builder should be part of the install, out of the box.
- Avoid "biggerism". An effective, polished tool is a work of art. So far, Eclipse has been doing a good job with this. The core of it has been kept small and simple.
- Don't be complacent. There's no doubt that Visual Studio will catch up. Eclipse needs to continue to improve, and I don't just mean adding features. To really make it simpler and more effective takes imagination.
Audience: VS C++ experience is a lot better than Eclipse is it not?
Madhu: That's a big challenge. C++ takes a lot of time.
Audience: What would you use for embedded development now?
Madhu: Microsoft doesn't spend much time on non-Windows non-Intel support so VS is weak there.
(I was sitting behind a couple of Microsoft employees. They felt the author didn't really give a fair comparison against VS because he wasn't very familiar with VS2005 or with some of the more advanced features, for example save-and-continue. --Ed)
Take-away quote: "Ctrl+Space, Ctrl+1, that's all you need to know".