views:

185

answers:

5

What is, in your opinion, the most underestimated development tool?

With that I mean a tool that can be immensely useful, but rarely gets used? Reasons might be because the tool is so little-known, or that the use case is so obscure that people don't realize it could be used this way?

(The purpose of this question, of course, is to get those tools and their uses out of obscurity.)

+3  A: 

I work in the computer science department at a University and what always strikes me when I work together with students is that at most 10% of them know how to properly use a debugger. This is for me the most important tool to every developer because it not only helps find errors in code, but also to understand programs written by someone else.

fschmitt
The same goes for the Disassembler.
bitmask
+3  A: 

This is going to sound silly to a lot of folks here, but I am going to say source control. Specifically, off-site, hosted source control.

You don't have to be the most active member of SO to see how many questions there are that ask about alternatives for recovering from a disastrous code-loss accident. Many of these well-intentioned folks are simply running on the it'll-never-happen-to-me idea, and of course it usually does.

Of course, recovering code that has been deleted in an accident or hard drive failure only covers part of the benefit of keeping your code under source control. Recovering from an idiotic change to your code is the greatest benefit. I can't count the number of times that I've saved my own bacon from an ill-considered refactoring because absolutely everything that I do is commited and can be reverted.

So, kids, use source control. If you don't, you'll appreciate it only when you needs it, when you realize how badly you just screwed up. Additionally, having your code backed up off-site is the greatest peace of mind that you can hope for.

Adam Crossland
Better yet, use both *personal* source control to save long edits and a *team* source control for production code.
rwong
+3  A: 

A profiler. Most people think of it purely for optimizing code, but it can also be used for things like rough checks of correctness. For example, in C or C++, assuring that the number of frees or deletes matches the number of mallocs or news. Likewise with fopen/fclose, opendir/closedir, etc.

It can also be used for code exploration to a degree, by showing you what parts of the code executed to carry out particular commands -- but generally makes it a lot easier to skip over unnecessary details that intrude if you try to do the same with a debugger.

Jerry Coffin
+5  A: 

Surprisingly enough my answer would be Google. I still get a lot of questions where the answer is in the first few links on Google if you type in the exact question they asked you. In theory any search provider would work here, but I still have the best luck with Google.

Timothy Strimple
A: 

grep, (or text search capability of your IDE) to quickly search through how an obscure variable / function was used, and what might affect their usage. Especially when working with a huge and unfamiliar code base.

rwong