In my normal workday, it is *very* common for me to use tools that I came up with myself. It's almost instinctive for me to build a tool whenever I have a recurrent problem. For example, I spent yesterday building a program that massages NDoc intermediate files to perform the same magic in asynchronous web-service calls that IIS does. (Summary: if you write a web-service call using the official C# asynchronous pattern of a BeginXXX and an EndXXX method, IIS silently stitches that into a synchronous XXX call to expose publically. Which is great, except that it doesn't match the generated documentation that we publish for the APIs.) Or the case that just made me think of this, a tool I wrote last year called HostChanger. (Since our product is based on hardcoded URLs, I have to constantly muck with my hosts file to point to the development server I need at the moment. So I wrote a task-tray utility that does it with a click.) None of these are fancy tools for public consumption: they're just little utilities for myself, and anyone else in the group who cares to use them.
But I've been noticing that this is far from universal. It seems to vary from engineer to engineer -- some folks love building tools, and some hate it. I'm idly curious about what proportion of engineers do this, and how much. So here's a call for self-observations and war stories. Do you build internal-only tools a lot? How often? What makes you decide to do so?