Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I see that most of the good programmers have the habit of reading big books for learning about technology.

What does it really take to read technical books, apart from the real interest on the technology?

How can I improve my ability to read these books?

share|improve this question
15  
FWIW, I dislike books that are chatty, preferring books like the "nutshell" series from OReilly, books that allow you to read a page or two and digest a specific concept, instead of these novelistic epics that require half a day just to get through one chapter, distracted all the way through by prose. –  Robert Harvey Nov 9 '10 at 14:55
1  
@RobertHarvey Kinda like that comment? j/k. –  bobobobo Apr 25 '13 at 4:26
show 6 more comments

closed as not constructive by Yannis Rizos Feb 14 '12 at 15:54

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

28 Answers

up vote 44 down vote accepted

We have really BIG eyes.

All kidding aside, I'm one of the people who finds reading to be very difficult. If I'm working my way through a very large book, I try to read early in the morning, when I first wake up, when my mind is free of distractions. I find that I'm able to get engrossed much easier at that time of day and I retain more.

Then, there are books that are just so dry that they will be painful no matter the reading circumstances. I try to avoid them whenever possible, or find another book with the same information that is written in a different style. If reading a book is so painful that you can barely keep from putting it down, you are wasting your time because you probably won't retain much anyway.

Still, I much prefer getting information in smaller doses. My 'big books' are mostly for reference and aren't intended to be read cover to cover, unless you have an amazing attention span.

Additionally, though sort of digressing, I really enjoy it when people take time to write book reviews on their blog or personal web site. That helps me to find books that are best suited to me. So, if you love or hate a book, consider publishing a review. It will turn up to people who might be interested in whatever book you are discussing.

share|improve this answer
10  
+1 for observing that a textbook must present the information in a digestible format otherwise it's just wasted effort –  Gary Rowe Nov 9 '10 at 9:37
show 1 more comment

Good books aren't necessarily big. The O'Reilly books and the Pragmatic Programmer books tend to be pretty slim, and they are quite good.

I would suggest that you read some of the books recommended at http://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read

But to answer your question: It takes effort, in the same way as any other study subject does. Careful reading, reflection, notes taking and doing the excercises.

share|improve this answer
8  
+1 for doing the exercises. –  gablin Nov 9 '10 at 11:55
1  
@gablin: I said "I tend to". Besides, I own Code Complete. Didn't like it much to be honest. –  Martin Wickman Nov 9 '10 at 12:07
show 6 more comments

Time, effort, and persistence. For example, it took me months (maybe 6 months, 30 minutes per day) to crawl through Code Complete initially. Be sure to highlight important things and make personal notes so that you can revise the essential points later on. You won't learn much by merely staring at the text.

See how to Teach Yourself Programming in Ten Years.

share|improve this answer
4  
+1 for "highlight". –  peterchen Nov 9 '10 at 8:19
14  
Shudder Highlighting! What kind of monster defaces a perfectly lovely book! Notes are good though. CC is a great book, though I admit to skimming over bits of it. Some of the advice just isn't really necessary in C# (and some of it very much is!) –  CodexArcanum Nov 9 '10 at 13:59
8  
I like highlighting because most programming books, including CC, have quite a poor signal to noise -ratio. It's all "blah blah blah blah blah blah blah blah a good point blah blah blah blah". After a couple of decades it will be totally obsolete, so it's kind of different from traditional literature; no need to keep it tidy, IMO. –  Joonas Pulakka Nov 9 '10 at 14:05
5  
The time taken also depends on what else you're reading. I'm never reading just one book at a time. For me it usually goes: 1-2 for work, 1 for personal study, 1 for leisure (usually a novel) and 1 for the bathroom. –  Steve Evers Nov 9 '10 at 16:01
6  
@Codex, highlighting is the dead tree version of syntax colouring. –  user1249 Apr 24 '11 at 1:24
show 4 more comments

How to eat an elephant? One bite at a time.

share|improve this answer
6  
It also takes a long time to eat an elephant. You would get bored of it by the time it's over. Same might be an issue with huge technical books. –  talonx Nov 9 '10 at 9:55
2  
I'm quite certain that elephants, everywhere are planning a revolution due to this post, you insensitive clod. Additionally, at which end of the elephant should one begin eating? –  Tim Post Nov 9 '10 at 10:54
9  
In theory, an elephant-eating club of N people should cut down time by N. A book-reading club of N people would operate in two phases. In the first phase, each person read 1/N of the book, assuming no dependency in reading order. The second phase would be an O(N^2) communication, but would only take O(N) time steps because in each time step a person can broadcast to the other N-1 persons. Assuming the time needed to broadcast 1/N of the book is also proportional to 1/N, the time needed for the second phase would be independent of N, the number of people in the club. –  rwong Nov 9 '10 at 11:19
show 3 more comments

I often skim the book a couple times, reading sections that catch my eye. After that I have a good idea what's in the book and can grab it later when I need to learn more about something. Then, as time permits, I'll read through it more methodically.

I've been developing over 30 years, and taught myself the majority of what I know by reading and trying what I've read. I'm very much a hands-on learner and like to tinker and tweak as I try out sample code if I'm unsure about something.

It's essential to keep learning if you want to make a decent living in programming. What technologies you know now and think are hot will be stale and over crowded in five years so you have to keep learning. Developers don't have the luxury of learning one thing and then relaxing. That's partly good and partly bad because the burden is on us to keep learning, but I think most developers love the creative challenge so we accept that price.

share|improve this answer
add comment

This is a strange question. If you are interested in something, isn't it natural to want to read about it? If you find it difficult to read books about programming, you should ask yourself if you are really that interested.

If the answer is still yes, then make sure you pick a good book that is related to what you are currently doing. For instance, if you are using C++, start reading the books by Scott Meyers or Andrey Alexandrescu.

share|improve this answer
show 2 more comments

What I do is kinda "Breadth-first read": first the table of contents, then I try to read the chapters in order but not so in-depth, skipping big chunks of text and going straight to code, backtracking a little if necessary to understand it. Having a better idea of the book, I fully read the interesting chapters and left the rest of the book to be read "on demand".

share|improve this answer
add comment

Honestly, there are a few programming books that I read as avidly as one usually reads a novel. Just look for the most interesting ones, and reading them will not be a problem at all.

Don't just limit yourself to exclusively technical books; a lot of interesting books about programming are interviews, essays, success stories, things like that. I find those extremely fascinating and still informative. They might be a good starting point for you.

share|improve this answer
add comment

What I've found important is to read the preface. Often the author(s) will give you some suggestion on how to read the book. Also, I try to read the introductory chapters straight through, even if I think I already have the necessary background. I find that it often helps familiarize me with the book's vocabulary (e.g., "When we say 'server', we mean the physical hardware; when we say 'Web server' we mean the application server instance.").

I also have to fight the urge to skim. Reading for comprehension is different from reading for reference. Slow down, and take a break every couple of pages and review what you've just read. Re-reading challenging sections often feels like a waste of time, but it pays off in the long run because it helps me comprehend later sections faster.

share|improve this answer
add comment

If I get one of those big ol' reference type books, I read it as a reference. Meaning, I skim it looking for the key points, and trying to learn the book so that I know where to look something up when I need it. A good example is my C reference manual. I have read it through, but I couldn't quote the C specs to you. However, I know most of the important things, and I can look up anything I need to quickly because I'm familiar with the layout of the book.

If I'm reading a how-to or introductory book, I generally do it in front of the computer so I can try the stuff as I go. My favorite intro books have lots of code in them to try - and I'm telling you, Don't use the code samples on the CD!!! You'll gain much more practical knowledge by typing it yourself.

share|improve this answer
add comment

I'd highly recommend How to Read a Book. It gives general advice on how to get the most out of your reading by taking notes, asking questions, determining the authors goals, etc. It also gives advice on how to make the most of your time by determining what can be skimmed or skipped early on.

It's not aimed specifically at technical books, but the advice certainly applies. And it's a fairly easy read itself, though lengthy. But a number of the chapters on specific types of reading can be skipped.

share|improve this answer
show 1 more comment

I don't find much time to read books. "Real World Haskell" took me about a year to finish. I usually skip the passages which i can not apply in the short term. I read the interesting pages bit by bit. What helps is outlining the most important insights with a pencil so that i don't forget what i was reading when i finally pick it up again.

share|improve this answer
add comment

Start keeping the Sabbath... then for 24 hours each week you will not be allowed to use a computer and will have a lot more time for books

share|improve this answer
add comment

The following is how it usually happens in my case.

"X tech sounds really cool where can I learn more" I then google said tech absorbing as much as possible, I try to if possible to produce a small scale effort at using the new hype. If I am still interested I buy a good book on the subject, most recently for me it is a foray into WCF.

In order to read it I keep my book of choice (usually the most recent purchase I have made) handy for my private time in the bathroom away from kids and distractions. Takes me longer to read it this way but at least I get through them.

share|improve this answer
add comment

I've read about 300 books so far in my life (some with as many as 700 pages,) and I'd have to say that you have to (1) eliminate distractions, (2) find someone who is also interested in the topic so that you can tell them about what you recently learned from reading, and (3) ask yourself this question: In 3 days, do I want to have accomplished something and learned a lot, or do I want to have learned nothing, having sat in front of the TV or played video games?

Few people in America actually read non-fiction books. I've met probably 100 people in the past six months, and although almost every single one of those people knows that I am a semi-avid reader of non-fiction books, not one person ever spoke about reading a non-fiction book, nor did I ever see one of them read a non-fiction book. Being willing and able to read non-fiction books instantly raises my respect for someone, even if I hate the books that they like. So few people are willing to do anything other than drink, brag, etc. that it is really quite remarkable when someone sits down and reads a book.

share|improve this answer
show 1 more comment

Hah, you think reading them is hard, try writing them!

I usually try to write some code or perform some task to test my knowledge as I absorb the material. You don't say what the manual is for, so I cannot provide any more tips than that.

share|improve this answer
show 1 more comment

it's much worse to realize at some later point that you could have saved yourself hours of work by doing so.

I think you answered your own question =). Just realize that sooner.

share|improve this answer
show 1 more comment

Read it like your job depended on it,most of the times it does.

This is one area i always look towards improving.Few ways i had come across:

  1. Reading it in stages : .. skim through first trying just to finish it . Then work slowly in reading the important areas.its important to glance the whole thing through first because you must get an idea that a certain content actually exists and know how to access it quickly.
  2. pencil n work book :, highlighting/underlining important points.Take summary notes of important , tough,topics.
  3. Tackling Relevant Areas First : Reading through contents and tackling areas that are applicable immediately to your situation and reading the rest as and when they come.
  4. Prioritizing Important Areas : Asking seniors on which areas to cover first and making a priority list and tackling it the set order.
  5. Rubber Duck : Yes It is real and very relevant.Explaining Tough concepts or reading it out to a rubber duck will help you understand it more.
  6. Online-References : Find online ,references,examples,real time implementations of tough concepts and mark it down next to the manual.
  7. Moment to Reflect : After every tough topic take a moment to try to recollect connections,dependencies and visualize the its application,implementation.To really ingrain the concept.
  8. Find Discussion Group : Forums,groups,colleagues,seniors any one who you can discuss the concepts to keep things fresh in mind and to gather their point of view on the topic. Remember different people understand the same topic with varying intensities and depth based on their experience and exposure.This also helps keep up motivation and interest.

Always remember what RTFM stands for.

share|improve this answer
4  
Read The Fucking Manual? –  Display Name May 4 '11 at 12:06
1  
Read The Friendly Manual. –  Otto Harju Sep 5 '11 at 8:50
show 5 more comments

Try to read the manual more actively. In other words, do not only stare at the words, but become active. For instance, consider some of the following techniques:

  • Start by prereading the manual, i.e., do not start by reading the manual cover to cover, but start by reading the title of the manual, the publisher's blurp (if there is any), the preface or introduction, and then study the table of contents. Then start reading parts of the sections that you discovered are most relevant to you (summary paragraphs at the beginning or end of chapters are especially good to read when prereading).

  • Ask the manual questions, which you then answer by looking the answers up in the manual.

  • Write an outline of the manual as you read. Note that the outline does not need to coincide with the table of contents and can go into more depth.

  • Underline important words and sentences.

  • Write brief summaries of sections or paragraphs.

  • Sketch a mind map about what you are reading while you are reading it.

The above techniques apply to any expository work (as opposed to novels, for instance) you read, and thus apply to manuals as well.

If you want more information look for books on, or google, the subject of "active reading".

share|improve this answer
add comment

I find it impossible to passively absorb the contents of any manual. The best I can do is get a general idea of the features of the technology. To really learn a technology in detail, I have the manual open while I try to accomplish some task. After a month or so I am a relative expert; most programmers don't seem to read manuals at all.

share|improve this answer
show 1 more comment

I take the manuals home and sit up in bed reading them. When they send me to sleep, I sleep. Over a few nights - maybe a week, doing this, I can get through it.

Doing this, I know that not much will actually stick in my head, but I know where to look.

Then I go do real work stuff, and when I don't know what to do or need to look in the manual, I know where to look and I go back and re-read that part in detail.

I always do this, with compiler manuals, linkers, dev tools, everything. Always have. And I always know more about the tools than all my colleagues who just go and do stuff. And then ask me to help when things don't work.

I know that reading manuals in bed at night is not very romantic. My wife is used to it by now. And its better than reading design documentation or technical specs with a red pen in my hand (done that too) :-P

share|improve this answer
add comment

Diet and sleep - things which IMO, are fundamental to how well you pick up things.

Here's a list and explanations from my blog :

Ok lets get started… but first it should go without saying that the ‘best’ way to learn is whatever works for you – these are just a number of tips that I find help me. Maybe they’ll help you too.

1. Learn something you’re interested in!

This one’s easy. If your heart’s not in it, forget it. We learn best when we have an interest in the topic. Of course our reasons for learning something may vary – you might want to learn something so you don’t have to pay someone else to do it, or, because you genuinely like/love whatever it is you are learning. The more you like it, the more likely you are to master it.

2. Choose your resources wisely

Finding a topic is the easy part – finding the best material is a bit more tricky. Here, my best advice is to play the field. Take a look at what’s out there, read book reviews (look for responses that are passionate), listen to the advice of people you trust or who are well respected in their field. Go ahead and try things – just because you bought a book, doesn’t mean you have to read it. I’ve bought a few that I started and just didn’t get into. That’s cool, because when you find a book you really like, you appreciate it that much more.
Don’t limit yourself to books either, screencasts or interactive learning sites (such as Code School, Tryruby, etc) are excellent ways to combine all the best ways of learning – watching, reading, doing.
Pace yourself. Don’t jump too far ahead – don’t be afraid to start from the basics… it may actually end up saving you time in the long run.

3. Eat well

Your body is a complex machine. And machines need fuel, energy, and must be kept in good working order – i.e. don’t screw up your body by eating shit, doing drugs or wearing poisons on your skin because you think they make you smell good, they don’t.
I could write a book on this topic alone let alone a blog post! But the basics are stick to foods that our ancestors would have eaten, that means no processed crap, fried foods, sweets, chocolates, breads, pizza, etc. Care about how your foods are manufactured/grown too. Think growth hormones, steroids, routine antibiotics, in-breeding, poor quality feed and conditions is going to rear good healthy stock? Think again. Drink plenty of natural mineral water (not tap, flavoured or reconstituted). Dehydration can impact your performance by up to 40%. People go on about bad education for the poor, but you know what? Education is only half the story – diet and lifestyle will probably have more of a profound effect on your learning ability than whether you go to a good school or not.

4. Sleep well

Your body needs quality sleep. To recuperate, and more importantly, for someone embarking on learning something – sleep is when your body indexes everything you’ve done/learned that day. If the quality of your sleep is poor, your brain won’t have been able to properly store/index everything you got up to that day properly… so all that time you spent reading something? Could well be wasted.
Luckily for you, eating clean (see above) will help you sleep well too.

5. Get a Kindle

Forget your iPad or computer screen – they use LCDs which not only give you retina burn because of the ridiculous brightness, but because they ‘refresh’/flicker so many times a second, cause eye fatigue. The screen on the Kindle is beautiful. You can read it outdoors, indoors, on the bed, in the loo – wherever. Imagine reading a huge book in bed, turning over side to side holding the damn thing – the bigger the book the less comfy it will be! Now imagine five or six similar books you have to get through – not great really. Enter the Kindle. It’s light, easy, perfect. I love mine, wouldn’t be without it now. They also allow you to highlight text and if you buy an e-book from Amazon you can view ‘popular highlights’ too – which is a great way to see what your peers think is important or worth noting.

6. Read last thing at night

Can you remember what you did first thing yesterday morning? Nope neither can I! I bet you can remember what you did last night though. And there’s a good reason for that – because of the way your brain works. It starts indexing in descending order, so what you did last, gets indexed/stored first. Try it. Read something in the morning, and something in the night – the following day see which you remembered best.
Hear that? Another good reason to read at night is for the peace and quiet. There’s nothing worse than distractions, whether it’s traffic, kids playing, or the general ambiance of people hovering around – and although you might not notice, your subconscious will. I find I can concentrate much better at night, when the pets are asleep, phones are not ringing and the rest of the neighboured is tucked in for the night!

7. Don’t get ahead of yourself

Or rather, don’t be afraid to take a step back. If you’re reading something that you just don’t get, put it down for the time being and get a book that tackles the basics, or is a step down from what you were reading. If you ‘get’ this new book and then go back to the other book and still don’t get it, do the same again – put it down and find another book that covers something simpler. Trust me you won’t be wasting your time – repeating is reinforcing. So even if you’ve covered the topic before, going over it again will still be highly beneficial.

If you just can’t get into the book that you kept putting down, maybe it wasn’t a good choice – find an alternative that covers the same material, waste no more time on it or come back to it later as a bonus.

8. Can’t concentrate? Breathe…

Sometimes you’ll have things buzzing around your head. Sometimes it will take a while for your eyes to adjust from a flickering LCD to the solid tranquillity of ink (digital or otherwise!). When you find your mind running away, close your eyes and slowly count to 10. Repeat if necessary. It works. (Make sure you are drinking enough water too – as that can effect concentration.)

9. Listen to music before you get started

Not during – although some people are ok with that. Scientists have proven that listening to music before a task such as learning, helps you concentrate better. The type of music doesn’t matter, so long as you enjoy it. Now you can tell your parents/partners that there’s a good reason why you have the music on so loud!

10. Make notes and go over things

Whatever you do, be sure to go over things. Whether you’re the sort of person who likes making notes, highlighting in your Kindle, or just re-reading whole books, make a point to go over what you’ve studied because this will help reinforce what you’ve learnt.
I used to make notes, but since getting my Kindle I highlight snippets (or sometimes even a few pages at a time) then after reading another book I go over the highlights of the previous book. So I get a chance to begin to forget, then remember again.
I also re-read or plan to re-read my favourite books, partly because I enjoyed them and partly to see how much I’ve forgotten lol. (Just kidding!)
Also, as mentioned before, don’t be afraid to get two books that are aimed at the same level – repeating is reinforcing. Repeating is…?

Bonus tip. Enjoy yourself!

Whatever you do, when it starts to get boring or feels like a chore – stop. Keep things interesting, fun and pace yourself so you feel like you’re achieving stuff. It’s one of the reasons why I tend to get at least two books that deal with the same level of whatever it is I am learning – when you read the other book you often catch yourself thinking ‘I know that!’ and it’s moments like that that give you a buzz and remind you that you are actually learning something. Little achievements like that give you the incentive and will to carry on.

share|improve this answer
1  
I agree there is a compromise, but imagine taking a huge reference book to bed with you.. arm ache lol. If I'm walking through a tutorial and doing it as I read I will generally read the book as a PDF on the monitor - but adjust the hue and brightness to make it more comfortable. But all other books I read on the Kindle - I didn't think I would, but do. –  AstonJ May 4 '11 at 11:54
show 1 more comment

A metacognition trick I use is this.

  1. Read the book for 10 minutes (no distractions). Those 10 minutes should include understanding the material I just read.

  2. Am I bored now? Yes = Stop, No = Continue for 10 mins.

I repeat step 2 for a maximum of 30 minutes, then take a break. If I am bored after the break then stop. This method stops me getting distracted and allows me to stop when I know my brain is wandering off.

Reading is one part of it. Also if there are exercises in the material, do them. Lastly if I know I need to read back over the material I highlight the key points (not the whole page!).

share|improve this answer
add comment

Get a book written by a good writer. The Manning Press In Action books are good because they are not manuals, they are tutorials that also cover the important details.

Read with a highlighter.

  1. Read entire paragraph.
  2. Find shortest phrase that summarises paragraph.
  3. Highlight it.
  4. Read entire paragraph again.
  5. Read highlighted summary.
  6. Move to next paragraph.
  7. Go to 1.

If it looks like below, it should be easier to remember:

  1. Read entire paragraph.
  2. Find shortest phrase that summarises paragraph.
  3. Highlight it.
  4. Read entire paragraph again.
  5. Read highlighted summary.
  6. Move to next paragraph.
  7. Go to 1.
share|improve this answer
add comment

You have to need what you're reading. Then, suddenly, it becomes interesting.

Also, talk to others/even yourself about what you've read. Most techies are interested in hearing summaries of interesting books, and will provide their own summaries of things they've read, resulting in interesting technical conversation.

share|improve this answer
add comment

I speed read (and write my own notes in the margin where appropriate). Speed reading is no hoax. I went from 140wpm (words per minute) to 800wpm with an increase in retention after a few weeks training.

share|improve this answer
add comment

I have lots of big fat technical books:

*) A good eReader is essential unless you want to set aside a LARGE area for dust bunnies to collect... I like the Sony Reader line because of the way they handle notes, navigation and indexes - great for technical reading - but I don't work for Sony - 'to each, his own'.

*) I generally buy reference type books that are well indexed, and I rarely, if ever, READ them the way you read a novel. I read the preface and intro and scan the TOC and indexes, so that I know what's there when I need it.

*) I avoid big fat books on narrow specialized topics - IMO these generally turn out to be a waste, because by the time you finish the book, the technology is outdated, or you've moved on to another project, or they spend a lot of time on things that any experienced programmer will discover themselves buy just DOING IT.

share|improve this answer
add comment

I find technical books too general a category and there is no single method that will work well with all types of books. A lot is also dependent on the interest and appropriate domain knowledge (beyond basic English) that the reader should already possess in order to cover the material efficiently, within a reasonable amount of time. It is important to place the correct expectations, i.e. no normal person should expect to speed read a dictionary from cover to cover and understand much, as there is simply too much depth/content to be digested within a short time as compared to regular text like news or fiction.

Reference books - mostly used for reference, if you really intend to read one from cover to cover, be prepared to possess the background knowledge needed for an acceptable read rate. I find the TAOCP series of books to have a particularly high requirement, and speed reading is not going to work when you need to pause and think after every a few sentences. They are more like textbooks that are best studied when there are exercises to work on.

Tutorials/guides - these are the easiest to read in entirety, especially those with worked examples that can be translated into hands-on activity, which is a more engaging and effective way of verifying the knowledge gained. I do not mind prose, for which speed reading is very effective.

All that being said, it might be more important to identify the right kind of books one should read at any one time, and leave the insurmountable hurdles till later when one is in a better position to handle them.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.