Coding Heuristic 1)
Try not to use functions useless you know what they do in all cases. It is not good to use a function and see what it does by checking it's behavior. This leads to insidious bugs.
If you google search the word heuristic, psychologists say they are mostly negative because they encourage fixed responses to complex situations. I use heuristics religiously. I try to have rules about how I respond to different situations. I don't spend a lot of time writing the rules, the most important part is to cover all possible situations. I believe this is useful because we spend so much time thinking throughout the day, because we encounter so many decisions that have to be made throughout the day. If you have a set of rules ahead of time, even if they are not the best rules, you save so much time not thinking about simple decisions that it frees you to spend a lot of time thinking about deeper problems. Thinking about a deep problem is more like feeling, or even soul searching. It is not like a narrative in your mind. For me, it's more about feeling so deeply that the answers come from somewhere I can't even describe. Consider our day is like a tree. Each choice is a branch in the tree. If the tree has N different options at each decision point, and we have to face M different decisions or branches in our tree or day, then the tree grows in N like an exponential O(c^N), and the tree grows in M like a polynomial O(M^c). The M decisions won't be overwhelming if we can make each choice between N options quickly. Because exponential growth is bigger than polynomial growth. So philosophy for me is a process characterized by a series of weak preconceived decisions, so I don't get stuck on minutia. The goal is to avoid thinking whenever possible, so I can feel deeper ideas.