I use a rough binary search from time to time.
For example, if I'm looking for something in a collection of named documents I know are filed, but don't what the starting and ending documents are. This comes up from time to time.
I also use heuristics I've learned debugging - just about when to challenge assumptions, and detecting when part of my mind is trying to stick to assumptions it shouldn't. Difficult to explain precisely - sort of a 'self delusion alarm bell'.
I've also learned something about structuring debate and discussion, from programming - I sometimes keep a mental model of the discussion under progress as a stack - tangents result in a push, and I've sort of learned to 'pop' afterwards to go back to the part of discussion I'd otherwise forget.
Not sure this is so much programming tricks as a set of heuristics and mental faculties that have been trained or enhanced by programming...