programming tools:
IDE (integrated development environment) such as eclipse, visual studio, sharp develop, and others are probably integral tools for programming because without them you'd be writing code in Note pad like the good old html days and compiling them on command line compilers and praying that you didn't have too many syntax errors.
Unit Testing tools: JUnit, Nunit, etc are becoming more and more popular as opposed to 'ad hoc' tests. These unit testing frameworks allow you to call into executable code then verify or "assert" the results are that in which you expected to receive.
Continuos integration tools: cruise control*. Coupled with unit tests these can constantly build your system to ensure there are no breaking changes at any given time of day.
Source code repositories or versioning databases: highly useful in team environments. Configurable to deny anyone from being able to check in unbuildable code, or allow checkouts of any code that's already checked out. Helps to ensure code stability and keep coders from introducing breaking changes.
refactoring tools: allow developers to rename variables in one location and propagate out to the rest of the code. Also extract code out for methods etc etc. These things are sometimes integrated into the IDE (visual studio i know has refactoring tools)
obfuscation tools. Intermediate languages or bytecodes are often very easy to reverse engineer so obfuscation's purpose is to make it that much harder by making names of functions and variables different to the point of being almost impossible to read in any human readable format... for example MakeCustomer() might become A() or FJDKJ() ... obfuscated code might look like this:
A()
{
f e = new f();
f.g();
f.x(this);
n g = f.r();
}
Some other tools out there to explore are:
case tools, diagramming tools, reverse engineering tools, data modeling, ORM, ... i can't think of anymore but i'm sure there are.
For the programmer, tools are invaluable in certain situations where they are needed:
unit testing to increase collective code ownereship
continuous build platforms to increase code quality and constant integration.
for the customer/end user. Tools don't mean anything unless they increase the quality and lower the cost in which software can be developed.