When you go onto a construction site you notice that practitioners of the skilled trades bring their own tools. In an auto-repair shop, the company provides the heavy equipment, but every mechanic has a personal chest filled with Snap-On (or Matco, or SK, or...) tools.
So it goes with software developers in most organizations.
Yes, the enterprise is going to have an enterprise IDE (integrated development environment) that everyone uses, along with the tools that plug into the big IDE. But most programmers have a few tools that work the way they want a tool to work. I've seen many people cut and paste or pipe text into their "private" tool, get a block of code to the next step, then move it back to the enterprise IDE.
For freelance or consulting software developers, the need to have a great set of personal tools is even more pronounced, but it goes far beyond the requirement for a good programming editor or IDE. In many, cases an individual is going to work as part of a team, so the toolkit has to expand to allow for code and library sharing, communications, task lists, and more. There are a lot of really good products out there for helping with each of these tasks, but if you're like me there's something special about a really good product that's also free.
[What could possibly go wrong? Read 7 Data Center Disasters You'll Never See Coming.]
I don't mind paying for good software, but there is a lot of very solid software for which there is either no charge or a voluntary payment to a developer or cause. That's pretty cool. I've used some of these tools for years, and set out to find more tools that I could recommend to folks as helpful tools.
If you're a student or someone changing careers these might be all you need. If you're like many of the programmers I know, even if you have a good commercial tool for a particular task, you're always on the lookout for the tool that might go from "good" to "perfect."
Let me get three things out of the way before we move forward:
First, I didn't include any education or code school apps and services in this list. That's partially because I don't really consider them standard tools, and mostly because InformationWeek had a very good article on learning systems earlier this year.
Next, I didn't include any compilers in the list. There are, again, a couple of reasons for this. One is that I've been writing about compilers quite a bit in the last couple of months and I'll get back to the language wars soon. The other is that tools are enough of an emotional issue: I didn't need to blow up our comments section by adding compilers to the list.
Last, some of the products and services I chose have free and paid versions -- often on a "free for individual, pay for a group" model. I think that's fair, so I included them in the list. If you disagree, I'll look forward to the debate in the comments.
Let's get started. I'll let you know which of these are tools that I use (or have used in the past), and I look forward to hearing about the tools that you use -- or the tools that you've tried and found you couldn't work with. In either case, I look forward to the conversation to come!