The book is really two books. The first teaches classical machine learning with scikit-learn: regression, classification, trees, ensembles, evaluation. The second teaches neural networks with TensorFlow. Both read well; only one is still current.
What I took from it
The end-to-end project chapter is the one I keep using, and not for the code. It is a list of steps in the right order: frame the problem, decide which number will judge the result, set the test set aside, and only then look at the data. Out of that came a rule I apply before accepting any work involving data: if nobody in the room can name the figure that would mean this worked, there is no project yet, only an expectation.
The second idea is holding out the test set before exploring. It sounds like a technicality and it is a matter of honesty: anyone who looks at all the data first and picks a model afterwards ends up explaining what they already saw. Applied to my work, when I go through a process history I keep a slice untouched until the end, and the conclusion has to survive that slice.
The third is transformation pipelines. Cleaning is part of the system, not a manual step somebody did one Tuesday. When the cleaning lives in one person's head, the result cannot be reproduced, and a result that cannot be reproduced is not a result.
What I left out
The whole second half. It is written on the first version of TensorFlow, with graphs and sessions, which is gone in practice; later editions rewrote it entirely. I also left out the enthusiasm for deep networks on tabular data: on business data, tree-based models still win almost every time, and the book concedes it, quietly.