I learned to program in my early teen years from books I checked out from the library, but since then didn't read a single programming book.
Recently, I needed to ramp up quickly on an embedded C project (without any past MCU programming experience), and turned to a book for the first time in ~15 years. It was a refreshing experience - it was a short book, and I read it cover to cover over a weekend, but it really enabled me to be successful in the project I had to take on.
I like to think of real-world experience as building a sponge: you fill in the areas that you need to as you go, creating a sparse structure of knowledge. This complements formal training (whether a book or a class) - I think of these more "complete" approaches as pouring water into the sponge. Having hands-on experience lets you take more advantage of a class or book, and the class or book fills in the gaps that you simply didn't have to learn as you built things.
Recently, I needed to ramp up quickly on an embedded C project (without any past MCU programming experience), and turned to a book for the first time in ~15 years. It was a refreshing experience - it was a short book, and I read it cover to cover over a weekend, but it really enabled me to be successful in the project I had to take on.
I like to think of real-world experience as building a sponge: you fill in the areas that you need to as you go, creating a sparse structure of knowledge. This complements formal training (whether a book or a class) - I think of these more "complete" approaches as pouring water into the sponge. Having hands-on experience lets you take more advantage of a class or book, and the class or book fills in the gaps that you simply didn't have to learn as you built things.