Hacker News new | ask | show | jobs
by shmapf 4058 days ago
I empathise with you talking about the "natural reading rhythym", I'm a slow reader too, but like to think I also read more carefully than those who get through the pages faster.

In response to the questions:

1. For me, this depends on the subject matter. When its a new language I'm learning, there's no alternative to writing code. Languages can be very deep, and there is often a large amount of new content for your mind to overcome. Thus there are many places you can trip up when you wouldn't have anticipated it in your head. In these cases, I write code inline with reading about it.

When its about design, or a more high level subject, for example about testability, I don't usually write much code; the lessons learnt are more abstract. The code tends to require more work in these cases too, and I'm lazy. Having said that, my day job is software engineering, and combined with my side-projects there are plenty of opportunities to try out the new concepts I learn about in such resources - usually within the order of a week. This step is, in my opinion, vital. I believe you must put the concepts into practice at some point in order to truly feel comfortable with them, and the sooner the better while they are fresh in your mind.

2. I'm a first principles guy, so don't like building up knowledge on unknown foundations. I re-read until I understand it, and then advance. This of course assumes that the structure of the resource has been carefully considered, with few forward references. When the author declares that something specific will be explained in chapter X, I'm happy to take their word for it, but in the absence of such statements it makes for uncertainty. Thankfully, in my experience most authors I have read do take the time to add such assurances, so its possible to read in a continuous manner from start to finish.

3. In the past I have skipped the majority of these exercises. In this case psychology seems to be against us - we underestimate the unknown unknowns, so tasks seem simpler than they really are. For this reason I am actively trying to do the exercises properly these days. I tend to do the simple ones in my head, and the more complex ones in real code. The way I distinguish between simple and complex is "Can I write out the exact syntax of the solution in my head start to finish?".