I seem to learn faster by simply reading on-line materials in one window and writing sample code with lots of comments for myself in another. By keeping each concept in a separate example file, I can always refer back to things I have forgotten because I rarely use them.
If I am actively learning something, I usually need to be hands-on with my toy project (which is never really a toy project as in it has to do something of value to me), and books are too slow to go through questions I might have while building stuff.
I do enjoy an ocassional "historical" programming book for a subject I care about (eg. Codds Relational Model for Database Management), but rarely will I read a book cover to cover.
Some many times, some one and done.
Some for understanding history, how things got to be how they are, _why_ things got to be how they are. Smalltalk, for instance.
Others to learn a new thing. The Rust Programming Language was my latest.
Books used to be the way that knowledge was transferred. A lot of that went away with the Internet: Stack Overflow, MDN, cppreference, etc. But I still find that I learn differently reading a book than I do walking through an online tutorial.