Geoff,
I agree with David on both points, although I'll slightly elaborate.
IMO there is no substitute for learning by doing.
The syntax reference guide that comes with the software is very good
for the majority of the commands, and I have a set of printed out
commands that I use on a regular basis that I haven't kept to memory.
The only book I have, and I would recommend it, is Sarah Boslaugh's An
intermediate guide to SPSS programming: using syntax for data
management. Intermediate isn't the right word for the title though, it
is best for beginners whom need to manage data in SPSS syntax.
I also follow both this google group, the developer works forum, and
the nabble group (although I don't participate at the nabble forum).
There good snippets to follow just to see what is possible in the
software, and good references to keep in the back of your mind when
your trying to solve some similar problem. I use a feed reader to
follow them, but the traffic is slight enough at all three that it
isn't a big burden to peruse the listings on a daily basis. I learn
(and re-learn stuff I forget about) all the time from following the
forums.
My only other piece of advice is do everything in syntax. Even if you
use the GUI to accomplish some task, paste the output.
There are plenty of resources around the internet as well. I have
compiled a collection at the stats.stackexchange 'SPSS' tag wiki,
http://stats.stackexchange.com/tags/spss/info , and most of the
websites referenced therein have various resources listed as well.
Best,
Andy