This list will grow over time - these are the recommended-to-me books I have read or bought..
For myself, it was an itch for a problem to solve, and career frustration. At 35 I was in a new career, 55k in debt and doing side work to make ends meet. Making suspension bushings with hockey pucks was another reminder "I need more money". OCD/ADHD helps me a lot too. Learn to aim the OCD ray and it can do wonders.
I will list them in order of "impact on my career"
Note - I think it is vital to understand "how you learn" - as in "what does it take for my brain to retain this sometimes boring stuff?" One thing is important: you need to write code to learn code. Find that itch, and start on it. Start small, and iterate.
Note II - I believe in reading the original texts, from the ones that implemented it.
The first one is not a book at all, but a tutorial that unlocked regular expressions. This unlocked Perl which unlocked C. Everyone that asks me about learning Perl or Regex's gets this document as an answer from me.
The Unix Programming Environment - Kernighan, Pike, 1984
Late night reader for programming, and finally clear explanations of the rules of the shell, from the guys that wrote it.
Learning Perl (Schwartz et al)
Again, explaining Perl in a way I could understand - starting with the basics. Now that I had struggled in Speaking Unix with Perl and wanted to do more, I was ready. Got this book, a old cheap laptop loaded with Debian, and worked through (most of) this book.
The C Pogramming Language (Kernighan, Ritchie)
The Mythical Man Month (Brooks)
This helped me understand a lot of the psychology and social issues that programmers face. We can read about the rockstars and think "I am not like them" and be despired. Brooks does talk about how some folks are 10x more productive than others, however those 1x were still employees (=needed)! So aspiring to be "backup-to-the-rockstar" is a fine goal.
The Design of the Unix Operating System (Bach)
I am still reading though this one. The frustration and not knowing "why" or "how" was affecting me. Then I read somewhere that one of Linus's favorite books is "Design of the Unix Operating System". Bought it, reading through it - a tough read but well worth it.
This has been a good read after writing a lot of code - and thus can relate more to what the author is saying about clarity, simplicity, etc.
These are the first papers and discussion that talked about this new thing called Unix. Did you know that early versions of Unix had only two proceses?? And it took 10 years to get multi-process and other foundational features implemented. I translated this to "of course I will be overwhelmed when studying a system that smart folks have agonized over for 40 years". So Unix has its's roots in the 60's and was born in '71 or so. These are more entertaining to read after struggling a bit with Unix and knowing how the story ends.