Well it might feel unnatural at first when you haven't done it before.
But logically it makes sense, it makes more things possible. Let's for instance take the example of that you could run the modifying update calls in parallel if you have previously read all the data you need to do the update. Since you know for sure that the data you are reading won't change
Also of course you want the input calculation to be as small as possible and still do as much as possible in the actual update.
About books on the subject, well I don't know any really. There is probably one small chapter in one Game Gem book somewhere. But I hardly think it got any huge article about it or anything like that. Most of the time it's a case-by-case situation when implementing it. You have to look at what you want to do and how you want to solve it.
I know what you are working on, and if this is for that project, I would say this is the way to go because of... reasons