Techniques for Finding Useful IDE Add-ins
You see the most amazing add-in in the world. It promises to make your programming process faster, beautify your IDE, and interface with everything. But it sometimes seems that IDE add-ins are either gadgets you don’t have time to use or gadgets that make you want to try everything. This article helps you determine when the glitzy is worth deploying.
I admit it: I’m an add-in junkie. I hear about a great new add-in for my work environment (development, testing, or quality control — it doesn’t matter) and I absolutely have to have it. Two hours later, I find that the add-in doesn’t do what I wanted – and now I wasted two hours instead of becoming more efficient.
Anyone who works with technology faces this problem, because all it takes is one truly useful add-in to keep you going. The optimal solution is to find only the useful add-ins without having to suffer through those that are… let’s call them less than helpful.
Defining the Useless Add-in
The problem isn’t as clear cut as simply weeding out poorly written, terribly documented pieces of software that shouldn’t have been released in the first place. If that was the problem, then you’d have far less trouble locating the useless add-ins. Poorly written software soon gains a reputation that helps you avoid it. The problem is that many add-ins may be quite useful to someone else; they just aren’t very useful to you.
In fact, you can classify useless add-ins into the following categories:
- Wrong focus: If an add-in doesn’t answer a question, it doesn’t matter how well-written it is, it’s a waste of time to find a use for it. Use only the add-ins that actually answer a current requirement, rather than finding a requirement for the add-in to answer.
- Inappropriate methodology: Any time you have to make a significant change in how you work to use an add-in, the add-in is pretty much useless. It’s true that some add-ins do require you to change your work pattern or to adapt a superior work strategy, but if you’re jumping through all kinds of hoops to use the add-in without an obvious reason to do so, then it’s useless.
- Incorrect working environment: Many add-ins are written for a specific environment, such as special equipment, a certain type of processor, or special software. It’s fine if your environment already meets these constraints, but don’t try to shoehorn an add-in into the wrong environment.
- Time sink: Some add-ins answer a need, match your work style, and work in the environment you can supply, and still manage to prove useless. For the most part, these add-ins don’t work because they’re simply inefficient. It takes more steps or requires more time to perform the task than if you hadn’t installed the add-in in the first place.
You may have a few of your own categories to add to this list, but the bottom line is that far more useless add-ins are available than great add-ins you can’t do without.
So, how do you separate the wheat from the chaff? The following sections answer this question.
Checking Out the Add-in
Before you do anything, read the add-in’s description. Does it answer a need that you actually have or does it just sound interesting? A lot of technology junkies won’t answer this question honestly. I’ve fallen into this particular trap myself. I download it despite the fact that I can’t figure out one way in which I’ll use the add-in to perform useful work. Curiosity kills a lot of time, usually without any purposeful result.
Of course, there’s also the trap of downloading for the future. Always look at what you need today; tomorrow will likely see an improved version of the add-in anyway.
Reviews are usually helpful in some way and you should read them as part of your initial look at an add-in. Some reviewers are prolific in their advice; remember the reviewers who present a view that closely matches your own.
Many people dislike software reviews because reviews can be biased, unfair, and poorly written. Even flawed reviews can tell you a lot, though. They can be descriptive about the tool's functions and system requirements, even if you disagree about the reviewer’s assessment of their utility or value. Plus, if someone has a hard time telling you why an add-in is a must-have (or the obverse, why the add-in is flawed), you learn that the reviewer doesn’t really know much about the add-in or that the add-in lacks functionality that someone can nail down in a comprehensive review. Beware of the gushing review that promises much and delivers nothing at all.
Most sites tell you about the add-in’s requirements. Consider any requirements you find as minimum. In most cases, you need slightly more resources to use an add-in effectively on your system. By matching add-in requirements to your system and work environment, you can usually eliminate a number of add-in choices.
Quick Testing Strategies
The overriding question you must ask yourself about any add-in is whether it saves time and effort.
To answer the time part of the question, set up a quick test. Time the test using your old technique and again using the add-in. At this point, you can answer the question of whether the add-in saves time—at least, for the task that you tested. It’s important to actually and deliberately time the add-in so that you can quantify how much the add-in is worth to you.
Checking on effort is a little harder. It depends on the add-in. For example, you might need to refer frequently to external documentation normally. An add-in might purport to make it less likely that you need to perform this task by displaying the required information automatically in the work environment. To test this theory, take time to mark down the number of times you have to refer to external documentation normally and again when using the add-in. If the add-in truly does reduce the number of external references, you have a winner.
Giving Back to the Community
Let’s say you have found a shiny new add-in on your system that has saved you a lot of time. I recently found such an add-in, Python Tools for Visual Studio (PTVS). The add-in saves me considerable time creating applications using Visual Studio with IronPython. I’ve measured my startup times: I can create application skeletons in about a third of the time that they required before. Because PTVS uses Visual Studio, the same tool I’ve been using with IronPython all along, the add-in doesn’t require me to do anything new. All I need to do is allow Visual Studio to work with me in a slightly different manner than before (for example, I had to get used to using different templates).
Because I think this tool is so great, I’ve written more than a few times about it. And that’s precisely the way you can give back to the community, too. When you find a well-written add-in, tell someone. If you don’t have a personal blog like I do, then write a public review where you obtained the software, such as the Visual Studio Gallery. More than that: Tell others why you think the add-in is so great. Good reviews explain what need the add-in answers for you, the method in which it performs this task, and any special requirements. You should also discuss both positive and negative elements within your experience.
Add-in developers don’t purposely create junk you can’t use. In fact, if you were anyone else or working on some other project, you might find that the add-in is quite useful. The usefulness of an add-in is measured in its ability to meet your specific needs in a way that matches your work style and in the environment you can supply to host the add-in.
Consequently, despite a world of useful add-ins, only a small subset do something useful for you. Take a few minutes at the outset to determine whether an add-in is useful before you fall in love with it and only then find that it’s a complete waste of time and effort.
A note from our sponsor: If you're ready to put John's suggestions to use, perhaps you'd like to try out one of these (free trials are available):
- AQtime Pro, a performance profiler with an add-in for Visual Studio and Embarcadero RAD Studio.
- CodeCollaborator, a peer review tool for code, documents, images, etc. that integrates with Eclipse.