A Pattern Language, Alexander and Ishikawa and Silverstein http://amzn.to/2s9aSSc
Advanced Programming in the Unix Environment , Stevens http://amzn.to/2qPOMjN
Algorithmics: the Spirit of Computing, Harel http://amzn.to/2rW5FNS
Applied Crytography, Wiley http://amzn.to/2rsULxS
Clean Code, Martin http://amzn.to/2sIOWtQ
Clean Coder, Martin http://amzn.to/2rWgbEP
Code Complete, McConnel http://amzn.to/2qSUIwE
Code: The Hidden Language of Computer Hardware and Software, Petzold http://amzn.to/2rWfR9d
Coders at Work, Seibel http://amzn.to/2qPCasZ
Compilers: Principles, Techniques, & Tools, Aho http://amzn.to/2rCSUVA
Computer Systems: A Programmer's Perspective, O'Hallaron and Bryant http://amzn.to/2qPY5jH
Data Flow Analysis: Theory and Practice, Khedker http://amzn.to/2qTnSvr
Dependency Injection in .NET, Seemann http://amzn.to/2rCz0tV
Domain Driven Design, Evans http://amzn.to/2sIGM4N
Fundamentals of Wireless Communication, Tse and Viswanath http://amzn.to/2rCTmTM
Genetic Programming: An Intrduction, Banzhaf http://amzn.to/2s9sdut
Head First Design Patterns, O'Reilly http://amzn.to/2rCISUB
Implementing Domain-Driven Design, Vernon http://amzn.to/2qQ2G5u
Intrduction to Algorithms, CLRS http://amzn.to/2qXmSBU
Introduction to General Systems Thinking, Weinberg http://amzn.to/2qTuGJw
Joy of Clojure, Fogus and Houser http://amzn.to/2qPL4qr
Let over Lambda, Hoyte http://amzn.to/2rWljcp
Operating Systems: Design and Implementation, Tanenbaum http://amzn.to/2rKudsw
Parsing Techniques, Grune and Jacobs http://amzn.to/2rKNXfn
Peopleware: Productive Projects and Teams, DeMarco and Lister http://amzn.to/2qTu86F
Programming Pearls, Bentley http://amzn.to/2sIRPe9
Software Process Design: Out of the Tar Pit, McGraw-Hill http://amzn.to/2rVX0v0
Software Runaways, Glass http://amzn.to/2qT2mHn
Sorting and Searching, Knuth http://amzn.to/2qQ4NWQ
Structure and Interpretation of Computer Programs, Abelson and Sussman http://amzn.to/2qTflsk
The Art of Unit Testing, Manning http://amzn.to/2rsERDu
The Art of Unix Programming, ESR http://amzn.to/2sIAXUZ
The Design of Design: Essays from a Computer Scientist, Brooks http://amzn.to/2rsPjev
The Effective Engineer, Lau http://amzn.to/2s9fY0X
The Elements of Style, Strunk and White http://amzn.to/2svB3Qz
The Healthy Programmer, Kutner http://amzn.to/2qQ2MtQ
The Linux Programming Interface, Kerrisk http://amzn.to/2rsF8Xi
The Mythical Man-Month, Brooks http://amzn.to/2rt0dAR
The Practice of Programming, Kernighan and Pike http://amzn.to/2qTje0C
The Pragmatic Programmer, Hunt and Thomas http://amzn.to/2s9dlvS
The Psychology of Computer Programming, Weinberg http://amzn.to/2rsPypy
Transaction Processing: Concepts and Techniques, Gray and Reuter http://amzn.to/
Types and Programming Languages, Pierce http://amzn.to/2qT2d6G
Understanding MySQL Internals, Pachev http://amzn.to/2svXuFo
Working Effectively with Legacy Code, Feathers http://amzn.to/2sIr09R
Zen of graphics programming, Abrash http://amzn.to/2rKIW6Q
http://www.amazon.com/Pattern-Language-Buildings-Constructio...
Available in hardcover on Amazon: http://www.amazon.com/Pattern-Language-Buildings-Constructio...
ATWoB is more philosophical, and lest about specific implementation.
APL includes nuggets along these lines: "Therefore: Make a public square much smaller than you would at first imagine; usually no more than 45 to 60 feet across, never more than 70 feet across. This applies only to its width in the short direction. In the long direction it can certainly be longer."
"When they have a choice, people will always gravitate to those rooms which have light on two sides, and leave the rooms which are lit only from one side unused and empty.[...]Therefore: Locate each room so that it has outdoor space outside it on at least two sides, and then place windows in these outdoor walls so that natural light falls into every room from more than one direction."
There are 253 patterns in the book, covering governed regions down to building wall details.
For me, it's: http://www.amazon.co.uk/dp/0195019199
Pattern Language
It's about architecture, buildings, towns. How to make them work, to serve all the needs of them, and how to allow them to grow.
What is important to me and influenced me heavily is the thinking behind it. All parts of a large system in harmony, well-separated concerns, and working together to achieve a common goal.
In architecture (computer as well as construction), there is also politics. We pour ourselves into these systems, our beliefs come out in their design and implementation.
There was a lot that I learned from that book, and a lot that I still go back and refer to.
GOF took their inspiration here, it's obvious from the structure... perhaps you should see why?
(link to book on Amazon: http://www.amazon.com/Pattern-Language-Buildings-Constructio... )
Norman is ace. Although his books turned me into a usability weirdo unable to switch off my usability sensors... be careful! :-)
As is Raskin - whose interface "notation" (click-drag-click etc) I think isn't talked about enough.
Can I also throw in these...
Don't Make Me Think: https://www.amazon.co.uk/Dont-Make-Me-Think-Usability/dp/032... - I found this a REALLY useful book, and great to share with people too.
A Pattern Language https://www.amazon.co.uk/Pattern-Language-Buildings-Construc... - OK, this is a bit esoteric, but it's so valuable and lots of geeks/UX-ers kind of aim to create their own pattern language as opposed to a UX-dogma.
Information Architecture https://www.amazon.co.uk/Information-Architecture-Beyond-Lou...
Visual Language https://www.amazon.co.uk/Visual-Language-Global-Communicatio... - a kind of fundamental - hard to find.
--
There are dozens of methodologies to learn, and put into practice. I would put it that you don't really learn UX, you do it, and revise - in order to solve problems and make things better. Once you've digested some of the ideas you need to start trying the methodologies out. This is harder than it sounds. Even companies that claim to support UX, sort of bugger things up.... in that UX can't "fix" crap... it needs to be in at the beginning.
My favourite activities / methodologies, that produced REAL results were
* Ethnography - kinda just hanging out and observing what actually goes on. One client used to print off every page to proof read their changes cos the font sizes were designed by 21 year olds and they were 60+. The applause I got for raising the font size would never have been found any other way than sitting in the corner. * Card sorting - often collaboratively with armfuls of post its to decide on categories/navigation * Wireframing - I had less success with paper prototyping, but still ... * Personas + Use Cases
...and Eye Tracking - which tbh was SO VALUABLE, not because of the insights it provided, but for the EVIDENCE (video and heatmaps) that you could use to persuade the big wigs.
So find a way to start getting yourself into trying out various methodologies, to fix problems. Doing UX when things are "kind of OK" can be quite hard imo, especially at the beginning.
Your background will be so useful, again imo and experience, you will be able to use UX to provide guidance and ideas and then MAKE THE BLOODY THING which lots of UX-ers can't do. I liked the cross-over - I code a bit and sometimes found it easier to make what I wanted, rather than specifying it or creating "designs".
Good luck!
Tom