The book you want is here: http://mitpress.mit.edu/sicp/
The book you want is here: http://mitpress.mit.edu/sicp/
I'd take this a step further and expand your knowledge with a sense of breadth too. Suppose you currently only know Java, it's far more useful to learn something completely different, e.g. Lisp/Clojure or Prolog than it would be to learn C#.
The broader one's background the easier it is to pick up anything new along the way, and if there's one fact of life as a developer, there'll always be knew things to learn along the way.
However it would be good to have a look at a few other books for leading languages like Erlang, Scala, Python and see if something other language or author fits your way of thinking better.
Because the most important thing is to get into the groove of learning at a pace that you can sustain for several years. It will take years to master the craft.
:)