1. remembering all the different information to remember all the tricks
2. trying all the different tricks in the problem
3. optimizing deciding which to try based on different information
4. trying random things to discover patterns (and hence new tricks)
5. explaining your tricks to others so that they can do the first 4 steps independently and come up with even better tricsk
6. refactoring tricks into common and special parts to create a well organized theory
7. documenting for future generation in a language they can understand
that's all thinking is.