When I took my qualifying exam for physics grad school they asked what colloquium talk interested me and I said this one about quantum cryptography, "what was it about?" and I started drawing bra's and ket's on the board and the prof stops me and said "that's not the scheme they talked about" and I said... "but it's one that I made up so I could understand it."<p>Last weekend I had one hell of a fight with the Java compiler while developing (for fun) a system for writing Java ASTs in Java and manipulating them. (e.g. think "write Java with LISP syntax as a statically-typed DSL in Java")<p>It is doing things like that will teach you how things really work.