Wednesday, April 9, 2014

Why and How to Start Your SICP Trek

The Structure and Interpretation of Computer Programs, aka SICP or the Wizard book, is one of the very few books in computer science and software engineering that has stood the test of time.

SICP is a sizable, dense book.  Especially for those without a CS degree or any exposure to Lisp, it may seem impenetrably obscure, and far removed from the day-to-day coding concerns of use-cases, wireframes, API calls, StackOverflow, failing tests, and TPS reports.  For the working coder, of what possible concern are SICP sections like “Symbolic Data,” “Streams,” or even “Formulating Abstractions with Higher-Order Procedures”?  Quite a lot, as I’ll try to give a sense of.

Without exception, everyone I know who put time into SICP was richly rewarded for it, in becoming more skillful coders.  The foundation of skill is understanding.  One big, clear sign of understanding is knowing and accurately predicting the immediate and longer-term consequences of the many, many decisions made while coding.  In that light, what does SICP help you understand and do better?

  • Write less code that does more – aka code that’s more “expressive,” “higher-order,” and “declarative.” 
  • Design and write code that’s easier to evolve and change.  
  • Faster, semantics-focused, language-agnostic understanding. 
  • Domain-level coding. 
Peter Norvig, world-renowned AI expert and Director of Research at Google, wrote a review of SICP on Amazon.com – and here’s a choice snippet:

To use an analogy, if SICP were about automobiles, it would be for the person who wants to know how cars work, how they are built, and how one might design fuel-efficient, safe, reliable vehicles for the 21st century. The people who hate SICP are the ones who just want to know how to drive their car on the highway, just like everyone else. 


Those who hate SICP think it doesn’t deliver enough tips and tricks for the amount of time it takes to read. But if you’re like me, you’re not looking for one more trick, rather you’re looking for a way of synthesizing what you already know, and building a rich framework onto which you can add new learning over a career. That’s what SICP has done for me. I read a draft version of the book around 1982, when I was in grad school, and it changed the way I think about my profession. If you’re a thoughtful computer scientist (or want to be one), it will change your life too.


- More Here

No comments: