I think we will have to agree to disagree on what the best first book ought to be for a programmer.
Not sure what you mean by this.
It was a joke with a grain of a joke. That is, I believe all programming activity, regardless of application area, has a unifying conceptual core. Because of this, statistical programmers, and business programmers, and web developers, and operating system programmers are participating in the same activity, much like algebraists, topologists, logicians, and analysts.
If you want to get into math you first study what it is mathematicians do, what a formal argument is, styles of proof, subject areas, abstraction, etc. If you want to get into programming you first study what it is programmers do, processes, styles of programming, abstraction, etc.
I guess my position is that when going into a new field, study domain-independent concepts first. That is, study the part of the field that does not decay with time.
OK, thanks for clarifying. As for the "best first book", it's probably highly individual. In my field (physics), students are taught easy basics first (F=ma etc.), long before they learn Lagrangian mechanics and relativity. Whether this is due to insufficient math or because the bottom-up approach is more suitable on average, I am not sure.
I'm a theoretical physics (quantum computing) grad student. I really like what I do, and would like to continue doing it for a long time.
But I'm aware that the job market in academia for freshly minted physics PhDs is not spectacular. For personal reasons, I may not be able to go through the post-doc treadmill and I might want to make good money. Thus: programming & finance. I currently lean towards programming.
I thought LW is a good place to ask for advice related to this.
Current skills: Good at math, definitely not "gifted". I know C++, and some Python; neither inside out. I don't know specific techniques to design good algorithms for problems. For example, I tried my hand a few times at programming contests (including those at small scales) and got my ass handed to me. I've only taken basic college courses in programming.
I'm not very aware of the skills tested in quant interviews. I'm sure googling and talking to a few people will fix this, but please feel free to add your thoughts.
I have about a couple of years left till I graduate, so I can do this properly: What is the best way to make sure that when I graduate I can easily take a job in software or finance after the PhD? Looking for the most bang-for-the-buck (the buck here being time and money) way to do this.
Also, I may have blinders on. Are there other well-paying jobs out there for physics PhDs? I'm not an American citizen, so many of the government/government-funded lab jobs are out of the question.
Thanks in advance.
Some resources I've identified:
1. USACO training gateway.
2. SICP. (How much is it worth going through this?)
3. Cracking the Coding Interview.