Thursday, January 7, 2010

Think like a Master

Not too long ago I was reading "The Unreasonable Effectiveness of Mathematics," by Richard W. Hamming, the creator of Hamming Code and winner of the Turing award. Amidst many of his great comments stood one that transcends mathematics and fits into the lives of each of us, no matter what our professions or hobbies:

Not too long ago I was trying to put myself in Galileo's shoes, as it were, so that I might feel how he came to discover the law of falling bodies. I try to do this kind of thing so that I can learn to think like the masters did-I deliberately try to think as they might have done.



Do we take time to think like those who came before us? How did Galileo consider gravity? How did Pythagoras develop his well known theorem? How did Isaac Newton discover the inverse square relationship based on Kepler's laws?

I often look back in time and stand amazed at what my forefathers accomplished.  They didn't have the resources I have available to me -- the books, science, technology, and tools.  Yet, despite their limited resources, they developed incredible knowledge and wisdom in diverse and wonderful topics.

Think Like a Master

In order to glean a few insights from the masters, attempt to think like them.  I'll propose a few for programming and software development:
  • How would you encode the rules for a chess game? Could you write basic AI for a chess game? Now do both of those... and make the program work in less than 1k of memory.
  • How can you optimize reading and writing of files to extremely slow disks in the era of Microsoft Word 1.0?
  • How could you write a single-pass compiler that allows mutually recursive declarations?
  • What could you do to reduce the risk of an error when using a punch card system?
  • How do you avoid parsing an extremely large XML file to read the last N entries in the file?

The human mind is amazing.  It can imagine and discover wonderful things.  Take time to think, to ponder, and to learn from the masters and what they accomplished.

No comments:

Post a Comment