How to Think About Algorithms