Wednesday, December 10, 2008

Books Programmers Don't Really Read

Mark Twain once said that a classic novel is one that many people want to have read, but few want to take the time to actually read. The same could be said of "classic" programming books.

Periodically over on Stack Overflow (and in many other programming forums) the question comes up about what books are good for programmers to read. The question has been asked and answered several times, in several different ways. The same group of books always seems to rise to the top, so it's worth it to take a look at these books to see what everyone is talking about.

Books Most Programmers Have Actually Read
  1. Code Complete
  2. The Pragmatic Programmer
  3. C Programming Language (2nd Edition)
  4. Refactoring: Improving the Design of Existing Code
  5. The Mythical Man-Month
  6. Code: The Hidden Language of Computer Hardware and Software
  7. Head First Design Patterns
  8. Programming Pearls
  9. Effective Java (2nd Edition)
    or Effective C++
  10. Test Driven Development: By Example
I've read all of these books myself, so I have no difficulty believing that many moderately competent programmers have read them as well. If you're interested enough in programming that you're reading this blog, you've probably read most, if not all of the books in this list, so I won't spend time reviewing each one individually. I'll just say that each of the books on the list is an exceptional book on its respective topic. There's a good reason that many software developers who are interested in improving their skills read these books.

Among the most commonly recommended programming books there is another group that deserves special consideration. I call the next list "Books Programmers Claim to Have Read". This isn't to say that no one who recommends these books has actually read them. I just have reason to suspect that a lot more people claim to have read the following books than have actually read them. Here's the list.

Books Programmers Claim to Have Read
  1. Introduction to Algorithms (CLRS)
    This book may have the most misleading title of any programming book ever published. It's widely used at many universities, usually in graduate level algorithms courses. As a result, any programmer who has taken an algorithms course at university probably owns a copy of CLRS. However, unless you have at least a Masters degree in Computer Science (and in Algorithms specifically), I doubt you've read more than a few selected chapters from Introduction to Algorithms.

    The title is misleading because the word "Introduction" leads one to believe that the book is a good choice for beginning programmers. It isn't. The book is as comprehensive a guide to algorithms as you are likely to find anywhere. Please stop recommending it to beginners.

  2. Compilers: Principles, Techniques, and Tools (the Dragon Book).
    The Dragon Book covers everything you need to know to write a compiler. It covers lexical analysis, syntax analysis, type checking, code optimization, and many other advanced topics. Please stop recommending it to beginning programers who need to parse a simple string that contains a mathematical formula, or HTML. Unless you actually need to implement a working compiler (or interpreter), you probably don't need to bring the entire force of the Dragon to bear. Recommending it to someone who has a simple text parsing problem proves you haven't read it.

  3. The Art of Computer Programming (TAOCP)
    I often hear TAOCP described as the series of programming books "that every programmer should read." I think this is simply untrue. Before I'm burned at the stake for blasphemy, allow me to explain. TAOCP was not written to be read from cover to cover. It's a reference set. It looks impressive (it is impressive) sitting on your shelf, but it would take several years to read it through with any kind of retention rate at all.

    That's not to say that it's not worthwhile to have a copy of TAOCP handy as a reference. I've used my set several times when I was stuck and couldn't find help anywhere else. But TAOCP is always my reference of last resort. It's very dense and academic, and the examples are all in assembly language. On the positive side, if you're looking for the solution to a problem in TAOCP (and the appropriate volume has been published) and you can't find it, the solution probably doesn't exist. It's extremely comprehensive over the topic areas that it covers.

  4. Design Patterns: Elements of Reusable Object-Oriented Software (Gang of Four)
    Design Patterns is the only book on this list I've personally read from cover to cover, and as a result I had a hard time deciding which list it belongs on. It's on this list not because I think that few people have read this book. Many have read it, it's just that a lot more people claim to have read it than have actually read it.

    The problem with Design Patterns is that much of the information in the book (but not enough of it) is accessible elsewhere. That makes it easy for beginners to read about a few patterns on Wikipedia, then claim in a job interview that they've read the book. This is why Singleton is the new global variable. If more people took the time to read the original Gang of Four, you'd see fewer people trying to cram 17 patterns into a logging framework. The very best part of the GoF book is the section in each chapter that explains when it is appropriate to use a pattern. This wisdom is sadly missing from many of the other sources of design pattern lore.

  5. The C++ Programming Language
    This book is more of a language reference than a programming guide. There's certainly plenty of evidence that someone has read this book, since otherwise we wouldn't have so many C++ compilers to choose from.

    Beginning programmers (or even experts in other languages) who want to learn C++, though, should not be directed to The C++ Programming Language. Tell them to read C++ Primer instead.
As I said before, I know there are a few of you who have actually read these books. This post isn't intended for you, it's intended for the multitudes who are trying to appear smarter by pretending to have read them. Please stop recommending books to others that you haven't read yourself. It's counter productive, as often there is a better book (more focused on a specific problem domain, easier to understand, geared more toward a specific programming language or programming skill level) that someone more knowledgeable could recommend. Besides that, you may end up embarrassing yourself when someone who has actually read TAOCP decides to give you a MMIX pop quiz (if you don't know what I'm talking about, then this means you).

173 comments:

Anonymous said...

I also see SICP coming up on these lists of must read books and I always wonder how many people have actually read it and done the exercises.

Also, you might find Anti-Patterns interesting as both a reference and bed time reading (if thats your cup of tea). I've perused both GoF Design Patterns and Anti-Patterns and I definatly think the latter had a much more immediate effect on my programming.

Anonymous said...

GEB should go in one of the two categories, though I'm not sure which.

Bill the Lizard said...

Craig,

I almost included SICP in the list, but I haven't read any of it, so I didn't feel qualified to comment on it.

Bill the Lizard said...

Anonymous,

I think GEB probably goes in the first list. It's a pretty accessible book, even for non-programmers.

Bill the Lizard said...

EvilTeach,

I've used TAOCP a bit more often than that, but certainly not more than twice a year since I bought it five years ago.

I agree that it feels nice to have it on the shelf. Knuth is brilliant, and he deserves every bit of respect he's gotten for writing it. I wouldn't be surprised if he's the only person who has ever read it in its entirety, though. :)

Señor Anonymo said...

I disagree with a few points.

First, TC++PL is a great book to read cover-to-cover if you're a hobby programmer who is just getting into serious programming. I had played around with BASIC and Pascal in school and used TC++PL to teach myself C++ in college. Along with C++ you pick up a lot of programming wisdom from a guy who has not only done a lot of programming himself, but who spent a lot of time talking to the best systems builders in the industry, finding out how they program so he could make C++ a better language for them.

Second, it's often useful to recommend the Dragon Book to people who have simple text parsing tasks, specifically when the problem is of their own devising. I.e., when they're trying to parse a file format or other minilanguage they designed themselves. Reading a few chapters out of the Dragon Book helps you figure out how to write minilanguages that are possible (even easy!) to parse.

Third, Introdution to Algorithms is commonly used in undergraduate classes as well as graduate classes, so I'm sure many people have read eight or ten chapters out of it. It isn't bad at all as an introductory text, and most programmers who use it in school hang on to their copy as a reference book for non-experts, a comprehensive guide that explains things in a gentle way instead of just plopping down a bunch of pseudocode.

Bill the Lizard said...

Señor Anonymo,

All three books are great. My point was that far more people claim to have read them than have actually read them.

My only real problem with TC++PL is that it is far from the best introduction to C++. There are many authors that do a better job of explaining the fundamentals than Stoustrup. Having said that, I don't think the beginning programmer was who he had in mind when he wrote it, so this is far from a failure on his part.

On the Dragon book: If what you're trying to parse is a mini-language, then it's totally appropriate to read the Dragon. I caution against recommending it when someone is trying to parse HTML (why wouldn't you just recommend a readily available HTML or XML parser?), a simple file format, or an algebraic formula. I often see people recommend the Dragon book whenever someone is trying to parse

x = a * b + c / d - e;

It looks like a job for a simple text parser. I think the Dragon book goes in to far more detail than is necessary to get the job done.

I expected CLRS to be the most controversial pick for the "Don't Read" list. I used it myself in the one graduate level CS course that I took, and I'll never get rid of it. Ever. It is a popular book at many universities, at both the graduate and undergraduate level, but I talk to far too many people who don't have even a basic understanding of the fundamental concepts of algorithm development and analysis to believe that people are actually reading CLRS. I doubt that most people get very far past the chapters on searching and sorting.

Anonymous said...

+1 for SICP, a book that actually teaches you how to think like a programmer (as opposed to the nuts and bolts, the topic of books like CC and the Pragmatic Programmer).

Boyd said...

For what it's worth here the list of must read I give to all wannabe developers i meet. (Not in reading order)

- C Programming Language (2nd Edition)
- Data Structures and Algorithm Analysis in Java
- The Pragmatic Programmer
- Design Patterns: Elements of Reusable Object-Oriented Software
- AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis
- Internetworking with TCP/IP, Vol 1
- Joe Celko's SQL for Smarties: Advanced SQL Programming


Not much of anything new but I really like the anti-pattern book which takes the pattern concept the opposite way and look at common mistakes and pitfalls of code organization. It's a bit tongue in cheek but still has valuable info.

Bill the Lizard said...

Boyd,

That's a pretty good list. I usually recommend Head First Java to anyone who has never programmed before.

I've read about Antipatterns on Wikipedia, but I've never picked up that book. I'll have to check it out. Thanks for the recommendation.

Anonymous said...

TaPL is awesome, and everyone should read it.

PS. This only partially a joke, it's one of the most surprisingly interesting/entertaining yet incredibly mathematically rigorous and academic programming books I've seen. Still haven't read the whole thing, but it's pretty good.. it should probably make your list :)

Anonymous said...

Wow. Is this the Onion? Just because one knows how to start a car doesn't make them Hakkinen. Your not close to programming till you've slayed the "Dragon." This is often considered "Genesis" for anyone that wished to survive in the field. Some advice would be to Google it, keep quiet and listen to your peers...

Anonymous said...

I'll second an upvote for SICP - it's truly an amazing book that breaks all the stereotypes... let's just say I had preconceived notions about it beforehand, but wow I don't know how I chugged along without ever reading it. I'll admit that I didn't do all the problems because it was done at a course's pace, but reading it - definitely. Heck, just read it through then if you want go back and read it again while doing some of the exercises... what folks tend to not understand about SICP is that the exercises were designed in such a careful way as to assist in the learning of the content - this is moreso than other books, where you think obviously, sure. It's like the authors devised a way for to actually gain more out of the book if you decide to do the exercises.

Anonymous said...

The C++ Programming Language - is *superb. I had the 2nd edition, gave it away and bought the third.

* - where superb only applies to people who are serious about grokking the language.

Anonymous said...

I confess. I pretend to have read Gang of Four, when I just memorized the cover list of design patterns.

I have no respect for design patterns, as they overcomplexify everything. But interviewers love to ask about them, so whatever...

Anonymous said...

I graduated from Imperial(UK) around 2 years ago and have been programming for a well-known company in a well-paid job for just over a year now. I have read none of these books. Hurray!

Anonymous said...

+ another for SICP. Even as an experienced programmer I have gained a lot of knowledge from it. I am starting my BS in Comp Sci after almost 10 years of programming, and my course uses this book.

It is easy to read and the exercises are very well designed and worth doing. I love it when they appear easy and elementary, but they end up being hard to solve.

Anonymous said...

I think suggesting that TAoCP is comprehensive is actually quite misleading. It really provides the fundamentals of a wide range of basic computer science, but there are plenty of data structures and algorithms out there that are very useful in real-life, that simply aren't treated in TAoCP. Of course, if you can understand the algorithms that are in there, you have a much better chance of understanding more complex algorithms.

Bill the Lizard said...

To all the people who are giving "+1 to SICP", does that mean we should all get started reading it, or are you saying that it's another book that many only pretend to read? :)

Bill the Lizard said...

One anonymous poster said:

"Just because one knows how to start a car doesn't make them Hakkinen. Your not close to programming till you've slayed the 'Dragon.'"

I disagree. You don't need to be able to build a car to drive one.

I'm sure reading the Dragon will make you a better programmer, I just wouldn't recommend it to someone who is trying to parse HTML.

Bill the Lizard said...

gmh33,

Thanks for recommending "Types and Programming Languages". I'll be sure to add it to my ever growing queue.

Bill the Lizard said...

Another Anonymous reply:

"I think suggesting that TAoCP is comprehensive is actually quite misleading. It really provides the fundamentals of a wide range of basic computer science, but there are plenty of data structures and algorithms out there that are very useful in real-life, that simply aren't treated in TAoCP."

What I meant was that TAOCP is a comprehensive reference of the topics it covers. Of course it is a work in progress, so it doesn't cover all of Computer Science (yet?).

Kristian said...

I feel really cool, at UIUC as an undergrad we had to read at least 1/2 of CLR. Take that sucka!

Anonymous said...

Here's the reading list for the undergrad class Intro to Algorithms:

http://stellar.mit.edu/S/course/6/sp08/6.046/materials.html

taw said...

The Dragon Book is so hopelessly outdated that it shouldn't be recommended to anyone ever. It will teach you how to implement a moral equivalent of a crappy Pascal compiler using 1970s' techniques, and doesn't even cover basics of modern compilers like SSA.

And in general - books are a completely outdated format. For reference wikis or Google will be vastly more comprehensive and orders of magnitude faster to get what you want.

For reading from cover to cover - it's not how people learn - what you've just read won't have any points of attachment to your experience so you will barely remember a few pages worth of material after a few days. Many math books have exercises after each chapter, so you can experience what you've just read, and understand and retain it better, but for most high-level subjects it would be very difficult to create sensible exercises.

Bill the Lizard said...

Kristian,

Reading half of CLR isn't the same as reading CLR(S).

Bill the Lizard said...

To the Anonymous reader who posted the course notes for MIT's Intro to Algorithms,

Most programmers don't go to MIT. That sounds like a weed-out course to me. Can someone who went to MIT verify this for me? :)

Bill the Lizard said...

taw,

You make a valid point about books being outdated. Many are outdated as soon as (before?) they're published.

Kristian said...

Bill the Lizard. We read about the whole book, but I only read half :(

However, this post discussion brings up a great point: whenever I try to keep up with the topics in the CLR book, I use wikipedia instead. Straightforward examples and concise descriptions allow me to impress those young punks who tell me they're awesome because they went to Stanford, MIT, UIUC, or Carnegie.

Honestly though, I was a freak - I only read and comprehended 1/2 of it because I was trying NOT to read it. I was going online to all the university websites and downloading solutions to the CLR book. While organizing the answer book I was reading the solutions. Consequentially, this made me an algorithm snob in the process.

Anonymous said...

Bill, good lists, but I think the Mythical Man Month belongs in the second list. Most programmers can quote one or two lines from it, but few have actually read it.

Bill the Lizard said...

Kristian,

Excellent point about reading material outside CLRS in an attempt to grok CLRS. I had to do the same thing when I was using it.

I don't mean to disparage the book itself. I just get annoyed with people who recommend it, when it's clear they haven't read it themselves. If you know a good Wikipedia article with the same information, send me there. :)

Bill the Lizard said...

Dan,

That might be true. There are a few pearls of wisdom in MMM that pop up in a lot of places.

Anonymous said...

taw: You said the dragon book is outdated. You are aware that there's a recent second edition? Is that still outdated, and if so in what areas?

Kristian said...

The dragon book 2nd edition should change their cover to have tiamat on it.

I hated that book. Guess compiler design isn't my cup of tea.

Chris Lane said...

TAOCP was on my self for a few years as an excellent reference but then this spring I was getting ready to interview with google and I read it straight through esp vol 1,3 and on random numbers) and it was a real good read. He is a very funny writer and has a very noble view of what programmers do.

I srarted read to read SICP for the same reason and it was so enjoyable as well. Gotta love an approach to making a compiler that starts out with designing circuits that would run an algorithm well. And the sections on state/time/concurrency I still find myself mulling over. So just because many do not read these doesn't make them not a fun read.

Robert Robbins said...

I have not read any of those books. But then I'm not a "moderately competent programmer". I just copy and paste code from the Internet. However I have read "The Adventures Of Huckleberry Finn" and 18 works of Jean-Paul Sartre so you can be assured I've got the brains.

Anonymous said...

@Craig: I think the number of "normal programmers" who have read and done all the exercises for SICP can be counted on one's hands. SICP should probably be on the second list.

That said, if I knew the person I was talking to was MIT material, I would believe them if they said they had "read" it.

(I was able to get through the first four chapters, but in the last one (compilers) the examples were too large for me to really grasp. I did not try to do most of the exercises past chapter three.)

Bill the Lizard said...

Chris Austin-Lane,

Getting through all of TAOCP is a pretty awesome accomplishment. Now that you've made the claim on a public forum, be prepared for a MMIX quiz. :)

Elf Sternberg said...

I actually have read Introduction to Algorithms, Design Patterns, and The C++ Programming Language all the way through. I don't think the first and last did anything to help my knowledge base or my career. Design Patterns, eh... it helped me to understand a lot of the stuff I cared about until I realized that most "patterns" are idiomatic fill-ins for things a programmer should have as a library in his or her language of choice.

I keep meaning to get through SICP, but always stall out somewhere in the middle of the second chapter.

Bill the Lizard said...

Robert Robbins,
I respect a programmer a lot more if they admit that they copy and paste code from the internet, rather than try to BS me into thinking they've read TAOCP.

I've not read Sartre, but Huck Finn is one of my favorite books. As a completely amateur writer myself, Twain just makes me downright jealous with his wit and style.

Bill the Lizard said...

Elf,
I think the most helpful part of Design Patterns is that it provides a vocabulary for things we're already doing. It also gives good hints as to when it's appropriate to use each pattern.

I have found the parts of CLRS that I've actually read to be helpful. It might just be that the book contains too much information for my brain to hold all at once. I guess that's why I've kept the book. :)

Anonymous said...

Interesting list and comments. My take:

1) Don't often see Petzold's "Code" cited. Great read.

2) SICP. Worked (and I mean *worked*) through about 90% of it for fun (nerd alert). It's simply a great book, and like most great works, it's not for everyone. That said, I think everyone should try once to get through the first 50 pages or so, just to see what all the uproar is about. As one commenter noted, the exercises are an integral part of the learning experience. If you don't do them, you're wasting your time.

3) Not on your list: "Concepts, Techniques, and Models of Computer Programming", Van Roy and Haridi

http://www.amazon.com/Concepts-Techniques-Models-Computer-Programming/dp/0262220695/ref=sr_1_3?ie=UTF8&s=books&qid=1229361863&sr=8-3

This is sometimes compared to SICP. Haven't read the whole thing but I'm a big fan so far.

Bill the Lizard said...

Anonymous,
Speaking of nerd alerts, I had exactly 42 comments and you ruined it! :)

I came from an EE background originally, then went back to school to get a CS degree. Petzold's "Code" was exactly the book I needed. It's a fantastic read for anyone in either discipline.

I'm going to have to bump SICP up on my queue. With so many recommendations, I really feel like I'm missing out.

Alan Crowe said...

Graham's books, ANSI Common Lisp, and On Lisp, are excellent (though I've not read all of On Lisp). After those I started reading SICP. SICP is nicely organised in five large sections. They would have done well to revert to older conventions, naming the sections "Books" and the subsections "Chapters".

I worked through Book One:Building Abstractions with Procedures, Book Two:Building Abstractions with Data, Book Three: Modularity, Objects, and State. Eventually I arrive at the bit I was really interested in Book Four: Metalinguistic Abstraction, and I gave up.

Lisp's fully parenthesised prefix notation is pretty crap if you are planning on typing all your code in by hand, but it is OK because that is never the plan. You are supposed to write read-macros adlib whenever repetitive blocks of code would benefit from a denser notation with more punctutation and parsing. You are supposed to write macros to raise the abstraction level above raw Lisp.

I gave up on SICP because they were not using macros. The authors have something against them. The unrelently low level of the code was getting tedious and irritating. I bought Lisp In Small Pieces, read 19 pages, then struck out on my own, writing a headcase macro to factor out the repetition from the SICP code, and an interpreter. Don't be confused by the fact it is only 52 lines, it really works.

This convinced me that the SICP approach of Lisp without macros really was a mistake. It is too large a mistake for the book to be considered a classic.

Richard Minerich said...

All of your books programmers don't read were in my Computer Science curriculum.

Bill the Lizard said...

Alan Crowe,
Thanks for sharing that experience with us. It brings to mind an interesting point. The books in the second list that I wrote about are all very theoretical, while the books in the first list are all much more practical (at least, I think that's close to the point you were trying to make about SICP). Could that be the reason for the popularity of the books on the first list?

Bill the Lizard said...

Rick Minerich,
They probably all should be, particularly if it was a graduate program. I'm not sure how many schools use TAOCP, but I know that the other four are widely used.

In contrast, the other list is mostly ignored by universities. I think those books are more widely read by practitioners (Software Engineers) than by theoreticians (Computer Scientists).

Paco Alexander said...

I read more of the second list than the first.

Bill the Lizard said...

Paco,
That could be because it takes longer to digest the books in the second list. I know I could read the entire first list in the time it would take me to read either TAOCP or CLRS. :)

Regardless, I suspect you are in the minority.

Jean-Francois Poilpret said...

Well, the fact that a book has been bought does not mean it has been / will be read. You have no idea of how many books I have on bookshelf that I either have never started or never finished reading simply because of a lack of time.

On the other hand, Amazon is not the only provider of books in the world. On my shelf, most of the IT books have been bought at the bookshop.

Last but not least, many "old" developers (like me) have kept important books (bought at times Amazon did not exist...) that still hold good now; when these old folks started development, "bibles" such as "Code Complete" did not exist, and at the time these bibles have been edited, old folks did not need them anymore.

Bill the Lizard said...

Jean-Francois,
"Well, the fact that a book has been bought does not mean it has been / will be read."

I know that all too well. Whenever I come home from the bookstore with four books my wife asks "Which three do you think you'll read?"

sal said...

How about books programmers buy but don't actually read:

The Art of War by Sun Tzu
Any of the CJ Date Database books
Any of the XP programming books

Bill the Lizard said...

sal,
The first two are good examples.

I'd have to see what you mean by "XP books" before I can agree with that, though. I consider TDD:By Example to be an XP book (TDD is an offshoot, but still falls under the XP umbrella).

sal said...

Any of the Extreme Programming " " books like Kent Beck's Extreme Programming Explained. At least half the time, the copy sitting on the shelf has a pristine spine indicating it hasn't been opened let alone read.

Anonymous said...

If you are unsure about what you are saying, then I typically look at the Amazon rating. If 20+ people have rated a book as a 4+ in points, I have never been disappointed personally after the purchase. I use the Amazon rating system and # of users who rated it as the basis in addition to actually seeing the book in the store to verify if it's a good buy or not.

Bill the Lizard said...

sal,
I can't speak for any of Beck's other books, as I haven't read (or bought) them. :)

Matt said...

Of all the times where I got the solution of how to do something programming related from a book, I bet the majority of the time that book was from the Deitel & Deitel series.

Bill the Lizard said...

Pete Michner,
I think you just nailed my point right on the head. For every CLRS or TAOCP there are a hundred books with the same information that speak to a wider audience. It would be nice if everyone recommended those books (or Wikipedia articles) that they actually use, rather than trying to appear smarter by saying "If you haven't read Knuth, you're a bad programmer" (quote paraphrased from a reddit comment).

Anonymous said...

The only book worth reading on your "actually read" list is K&R, and even then there are better C books. As for your "claimed" list: CLRS and knuth are more reference books these days; very few people need the dragon book in it's entirety; Stroustrup is only meant to be read when you're on the toilet constipated; and all design patterns are for morons.

Anonymous said...

I'm surprised nobody's recommended "Working Effectively with Legacy Code" yet. It's a very accessible book, even if you're not working on legacy code.

I find it to be useful as a list of difficult pieces of code to unit test, and how to make them testable.

Bill the Lizard said...

Jason,
Thanks for the recommendation. That's not a book that I've read, so I'll have to add it to my queue.

Unknown said...

I love the design patterns book because the authors communicate simply and teach well. Many books remain unread because the authors are poor teachers. Take Stroustrup. Great knowledge, lousy teacher. God help the poor student who's first book is "the c++ programming language".
http://tinyurl.com/dmbunv
It's like trying to learn carpentry from a book about the chemistry of wood glue.

But I think the gof book isn't read because it's really just a library of patterns. With the exception of the first chapter, the book is meant to be a reference.

And really there's nothing more to retain from the book than:
1) "Design to an interface not an implementation"
2)"favor object composition over inheritance."

So Simple.

Jahanzeb said...

Good post. Cannot agree with you more on the Design Patterns (GoF) book. I've notices that most of the people who recommend this book haven't read it (or if read then only partially). TAOCP also falls in same category.
From the first list -1 for "The Pragmatic Programmer", this book is too much overrated (or may be I am too dumb to get what is special about it). And also I don't think most programmers have read "Code: The Hidden Language of Computer Hardware and Software" and "Test Driven Development: By Example". (or at least I haven't, and didn't have it in my future read-list too, though will revise my list now).

Bill the Lizard said...

Jahanzeb,
I've heard more than a few experienced developers express a similar feeling toward both The Pragmatic Programmer and Code Complete, and I can understand why. First, the two books are very similar to one another, so I often tell people that they really only need to read one or the other. If you read them both you're not going to find a lot of new material when you read the second one. Second, some of the advice probably seems pretty obvious to someone who has several years of programming experience. I'd highly recommend either book to anyone just graduating college with a CS degree, or otherwise entering the field, but someone with a few more years of experience might not find much new information in either book. To someone just entering the field, though, either book can ramp up the knowledge base rather quickly.

I'd recommend TDD: By Example to anyone interested in unit testing, no matter their experience. It starts out pretty simple, giving some fairly basic examples in Java and JUnit, but it ramps up fairly quickly. In the second half of the book you build a unit-test framework in Python.

Petzold's Code is a different kind of book entirely from the others. It starts out with the most basic computing concept possible, switches, and shows you how complex machines are built from them. I think it would be a very enlightening book for anyone interested in any kind of programming, or computers in general. This is one of the few books that makes it onto my "read it again" list.

Jahanzeb said...

I completely agree on what your views. Even for someone with 3-4 years of experience like me, these books don't offer much. Most of the things would be either too obvious or will have already learned from experience by then. These are definitely for freshers. Still, Code Complete didn't disappoint me as much as Pragmatic Programmer did, don't know exactly why, even though that I read it BEFORE reading Code Complete.

Jeffrey Hamby said...

"If more people took the time to read the original Gang of Four, you'd see fewer people trying to cram 17 patterns into a logging framework. The very best part of the GoF book is the section in each chapter that explains when it is appropriate to use a pattern."


I always took the GoF book to be more of a reference for thoughts on OO rather than a "how it should be done" book. I've seen firsthand programmers trying to stuff patters they read about into their application rather than the opposite. My take was that it reinforces patterns that developers create in their applications rather than patterns developers should learn and use.

So yes, I've read it. However you may not agree that I understood it :)

Bill the Lizard said...

Jeffrey,
I partly agree and partly disagree. I agree that you shouldn't be trying to stuff patterns into your design just because they appear in GoF. However, I also think there's no harm in reading GoF from cover-to-cover just to get an idea of what's in there. Anyone doing this, though, needs to pay particular attention to the sections on when a pattern is applicable so that they don't fall into the habit of "pattern stuffing."

I like the idea that the book reinforces what a developer may have already learned on their own. I've found that this kind of reinforcement learning saves me a lot of time that I might otherwise have spent deliberating over whether my design was good or not. There's always more than one way to solve any problem, but having my idea validated by someone else at least lets me know when I probably haven't stumbled on the worst solution.

rbxbx said...

I'm not sure which list it belongs on, but perhaps The Little Schemer?

I've made it about halfway through (all whopping 200ish pages :\) and found it to be a fun exercise up to this point... maybe it's more one of those books that teaches you to think a certain way more so than directly teaching you CS concepts.

Word.

Bill the Lizard said...

rbxbx,
That's another book that I own a copy of, but I've never read either. I'll add it to my list of things to read after SICP, and I'll try to remember to make a recommendation on which one should be read first.

Gautam said...

I agree, pragmatic programmer is definitely a good book to read.

Leif Eriksen said...

One not mentioned (that I can see) is Generic Programming and the STL: Using and Extending the C++ Standard Template Library by Matt Austern - almost a mathematical text in the way it builds up on concept after concept. Even if you never use C++ in anger, it will make you a better programmer, I believe, by making you think about your code, whatever language, with Generic Programming concepts in mind

I like GoF - read it three times, get more out of it each time

I've read about 50% of Dragon - never easy but worth it for the grounding

TDD:BE was great - truly made me a better programmer

I own TAoCP - never read it, tried, made my eyes hurt

I've read TC++PL - total idiotic

Unknown said...

When I interviewed Donald Knuth for my book Coders at Work, I asked him whether he thought most programmers should read his books. His reply: "I sometimes wonder if I can read them."

Anonymous said...

Code Complete is god awfully boring. I wouldn't wish reading it on any new programmer.

Cory said...

Wait programmers still read books?

Dan Lewis said...

I would do The Little Schemer first, then SICP. The Little Schemer is extremely interactive and covers some of the same ground faster.

Everyone should read Mastering Regular Expressions.

How about Refactoring, by Fowler? It is on my to-read list.

Bill the Lizard said...

gigamonkey,
Coincidentally, I just picked up a copy of your book about two weeks ago. If I ever decide to revisit this topic I think it will go in the first list. :)

Bill the Lizard said...

Anonymous,
Beginning programmers are exactly who should be reading Code Complete. It takes a lot of knowledge gained through years of experience and condenses it down to a book you can read in a few weeks. If you're an experienced developer, then I wouldn't be at all surprised if you already know much of that material. I'd be just as surprised, though, if anyone could read it and not learn something.

Bill the Lizard said...

Dan Lewis,
Ah, too late! I'm already most of the way through the first chapter of SICP. I do want to read the whole "Schemer" series when I finish, though.

Which list would you add "Mastering Regular Expressions" to? :)

Jason Marsters said...

Nowadays I'm so busy I barely have enough time to read a blog article, let alone read a book or have a normal life.

I really want to take up SICP though as soon as I get more time....

Anonymous said...

Why C++ for Dummies does not appear in the 2nd list? Is good :)

John said...

I don't think I've read many programming books cover to cover. I usually don't read sequentially but pick out sections of interest.

I haven't got any books from the first list, but from the second I have TAOCP (vol 1-3 only), CLRS and the Dragon Book (green and red).

Larry Felton Johnson said...

Speaking of TAOCP, I conducted a podcast interview with Donald Knuth this past Wednesday (it's posted at
http://www.blogtalkradio.com/larryfeltonj/2010/05/28/interview-with-donald-knuth-1 )

Volume Four is now available as a series of paperbacks, and the hardcover should be out by the end of the year.

I'll admit I've never finished reading TAOCP, but I've used it as a reference a good bit, and I do know what MMIX is :-)

Bill the Lizard said...

Larry Felton Johnson,
Great interview! Thanks a lot for providing the link.

Anonymous said...

"Unless you have at least a Masters degree in Computer Science (and in Algorithms specifically), I doubt you've read more than a few selected chapters from Introduction to Algorithms"

Man, you must be hanging out with a crappy crowd. I read the book up to the last part for my intro to DS course (2nd year course for beginners) and will finish it's last part for my algorithms course (3rd year course). And that's just for my undergrad. In grad course for algorithms you use other stuff. The Intro *does* get used, but mostly for its optional sections which go into more esoteric subjects.

About the book itself - it is designed for beginners in mind. No prior knowledge is assumed. It's very readable and shouldn't present much trouble for people who are mathematically mature. The only real challenge there is doing some of the problem sets.

Anonymous said...

I have to agree. That intro to algorithms book is amazing. It helps a lot to use in real life because these days almost all the algorithms described are already made in every major language thanks to the open source community.

I too had to read most of that book 10 years ago. Still, every year I reread sections of it just so I feel afresh with algorithm analysis. It basically covers what people should know about underlying data structures.

Yes, you can be a talented developer without reading this book. But it's like repairing cars - you can change a radiator without knowing how it cools down a car, but if you do this for 8 hours a day and every day, why wouldn't you want to know what's going on underneath the hood.

Slightly off topic - I just left a company that had an anti-CS attitude (although not voluntarily). I was often told my interview questions were too "computer sciencey" - whatever that means. Developers here often tried to hold an attitude that if you somehow learn "on the streets" that you're a more straightforward programmer. After talking closer to some of these people, you realize they're just being self conscious about not learning what are actually simple algorithms. There's no rocket science here - it's computer science and it's a lot of fun. People who don't learn this stuff only stay effective coders by becoming API memorizers and learn to solve problems with trial and error instead.

Vedang said...

Great post and the discussion in the comments is real fun.

Interestingly, I own all the books mentioned in your "don't read" list (except TAoCP) and I haven't read a single one through and through :). (I don't _claim_ to have read them either :P) This is because I treat them as reference books. (Want to brush up on Red-Black trees? Pull out CLRS) Why would it be wrong of me recommend it to someone else as an excellent reference book?

As far as book recommendations go, The Little Schemer has to be the most mind bending experience I've had. I came to it without any 'functional' background, and it was very easy to grok upto page 150-ish. The last 50 pages were like hitting a brick wall. It is one of those rare books which taught me a completely new way of thinking.

Bill the Lizard said...

Vedang,

Thanks! "The Little Schemer" is definitely the next book on my reading list after I finish SICP. It's come highly recommended to me before, and I'm curious to see how different the teaching style is between the two books.

Anonymous said...

CLRS is used in many colleges. students may not read it cover to cover, but they often work through a lot of it. i did.

Unknown said...

This sounds like... me?! :).

Bill, you're onto something sir. I like this post. I do have a few computer books myself and I definitely agree that some of the classical books are typically "just there in the bookshelf".

Let me add a few more to that list!

Advanced Programming in the UNIX Environment.

The whole TCP/IP Illustrated series

Some of Tanenbaum books (distributed systems) except the OS one, I believe that is the only Tanenbaum book that people do read cover to cover.

Norvig AI!

Anonymous said...

CLRS is used in many colleges. students may not read it cover to cover, but they often work through a lot of it. i did.

Rahul said...

I completely agree with you here. A lot of people have the tendency to advise others about reading a particular book, which they haven't read themselves. I particularly like the book "Clean Code". Its written in very simple way and everything in the book is useful for a programmer.

Anonymous said...

I have read 7/10 of the first list and substitutes for the others. It never ceases to amaze me that the average programmer reads less than one book per year.

In the second list

1. Algorithms. Haven't read it but read other comparable books. It doesn't look that advanced to me.

2. Dragon book. Yes, read all that and implemented most of it. It is overkill for simple text processing but good for more complex things.

3. Art of CP. Yes I agree use it as a reference not a reader. It is very dense. Would take ages to read right through.

4. Design patterns, I did actually read all of this. It is the most boring book in the history of computer science. The fact is that design patterns are 90% due to flaws and limitations in your language (eg Java!). Most of them go away in a decent language. DRY: Don't Repeat Yourself.

5. C++. Read all of this when learning C++. Not good for a beginner. As opposed to K&R for C. Still, why would you want to learn C++? It is pure brain damage.

Ron Tomlinson said...

>stop recommending books to others that you haven't read yourself

Taking it a step further: stop recommending a text unless you prefer it to another you have read in the same field and can explain why.

http://lesswrong.com/lw/3gu/the_best_textbooks_on_every_subject/

Pranav Bhat said...

I agree. SICP should be in there some where. I also completely agree with TAOCP - it will take anyone a life to read the series.

Anonymous said...

This is the post that I didn't have the balls to write myself.

Anonymous said...

CS undergrad at big 10 school here, we use CLRS for Algorithms Pt I and Pt II, definitely not a graduate-level textbook.

We use SICP for introduction to data structures as well.

Anonymous said...

Another book : 1984

Anonymous said...

Ironically the only books I own are those in the 2nd list.

David said...

Totally agree on CLRS being programmers don't really read list.

I find CLRS book as a very hard book to read.
Many exercises in that book (excluding those with star) are hard problems.
Also, some chapters are not that much useful when it comes to everyday programming depending on your fields.

The book also requires a lot of background in discrete math, probability, and proving.
It's not a book which a beginner with no such background knowledge can read smoothly.

Alex Chamberlain said...

Seriously, recommending Lippman as an introductory C++ text? The only thing worse would be Dietel and Dietel. I tend to think "beginner's C++ book" is an oxymoron, but the only thing that comes close is Stephen Prata's C++ Primer Plus.

Bill the Lizard said...

Alex Chamberlain,

That book might be another good language reference, but a good C++ book for beginners it is not. I stand by my recommendation.

Spotify premium code generator said...

think GEB probably goes in the first list. It's a pretty accessible book, even for non-programmers.

Anonymous said...

The only book I have read in both of the list is CLRS. There were some selected chapters from this book in my under graduate coursework but I got so much interested in algorithms that I read it completely and decided to pursue a research career in algorithms and theoretical computer science. Now I am pursuing doctorate in complexity theory. For me this was THE BOOK.

isomorphismes said...

Admitting what you haven't read takes guts.

Anonymous said...

I lol'd that CLRS was the first one on the list. Thats the textbook for my Algorithms class right now, it is very dense and not for 100 level students

Anonymous said...

You have nailed it, this guy seems to recommend so many books but I doubt he had read all of them e.g. this one.

Anonymous said...

@Anonymous, I agree with you. He seems to have knowledge of Java only, but recommend book on every topic, inlcuidng algorithms. I only trust his Java recommendation.

PBonthemove said...

i red scott adams hitchhickers guide to the galaxy multiple times.
(and as a programmer i dont care much about other books in general).

Anonymous said...

CLRS is a *graduate* level book?! At my college, it was the sophomore textbook. Oi. And we used the Dragon Book for the junior-level compiler course. What books do other colleges use at the undergraduate level?

I've read Design Patterns, too, but I wouldn't hold it against someone for not reading it. It's not a great book. The concepts are all fairly obvious, if you've ever tried writing an object-oriented program in a Smalltalk/Simula-like language. At the time of its publication, it was mostly useful as a dictionary, to give names to the patterns that everybody were using already. Now that these names are common, I'm not sure the book serves any purpose at all.

Charlie Flowers said...

>> scott adams hitchhickers guide to the galaxy

Great book, but you mean "Douglass Adams". And it's an interesting one because it seems most programmers have read it.

brp said...

As a non-CS student, I was able to read SICP and work all the exercises through chapter four in about a year, so it is a great intro text for the *motivated* student.... but I doubt most programmers (or CS guys) need it, or have the patience for all the exercises. Each chapter builds on the others (so it is terrible as a reference), but the beginning chapters are slow enough that it would bore a CS grad, and the problems require enough new insights that a mediocre student won't get them.

Combine that with the fact MIT-scheme doesn't work on Windows or Ububtu anymore....

brp said...

As a non-CS student, I was able to read SICP and work all the exercises through chapter four in about a year, so it is a great intro text for the *motivated* student.... but I doubt most programmers (or CS guys) need it, or have the patience for all the exercises. Each chapter builds on the others (so it is terrible as a reference), but the beginning chapters are slow enough that it would bore a CS grad, and the problems require enough new insights that a mediocre student won't get them.

Combine that with the fact MIT-scheme doesn't work on Windows or Ububtu anymore....

Unknown said...

I read the Dragon Book from cover to cover (1st Edition). I was enchanted by it. 30 years later I wrote what is arguably the most advanced parsing library for Python, because of all things I wanted to secure an SQL interface. You never know where life will take you.

I've also read the "The C++ Programming Language" from cover to cover. The language reminds me of an old style English motor cycle - things were bolted on until it worked. Very clever, unpredictable things. The trick in using the language is to get into the designers mind, so you know what parts work well together. His book describes why every part is there. Granted reading about the failures might be a waste of time if you won't use the language heavily - but if you do it will save you a lot of time.

If the first edition "Introduction to Algorithms" is as comprehensive as you say, it should be on my bookshelf. Alas, it was first published decades after I learned the art. I have its equivalent from my era on my bookshelf, which I still refer to from time to time - but I usually don't find what I'm looking for because I did in fact read the thing from cover to cover when at Uni. I data structures and algorithms that manipulate them are the basic bricks and mortar of our craft. Someone not being able to find the page they are looking for in their equivalent of the book is a crime commensurate with a civil engineer not being acquainted with a book on concrete on re-enforcing.

"The Art of Computer Programming (TAOCP)" was written by an anal retentive who appreciated by beautify of details, and knew how to convey it. You got that one right.

James jones said...

I delight in, result in I discovered exactly what I used to be having a look for. You’ve ended my four day long hunt! God Bless you man. Have a nice day. Bye best blog engine for developers

Go Home decor said...

Xin chào bạn. Nếu nhà bạn có phòng khách liền phòng ngủ, phòng khách liền bếp thì hãy tìm mua ngay 1 chiếc vách ngăn CNC gỗ đẹp tại vách nghệ thuật nhé http://vachnghethuat.com, bởi vì vách ngăn vừa tiết kiệm không gian, đủ tạo ra sự riêng tư cho văn phòng, lại có hoa văn trang trí đẹp!
Thankyou so much that info is useful.

mtom said...

I am glad for writing to let you know what a magnificent discovery my friend’s daughter gained reading your site. She even learned many things, most notably what it is like to have a very effective coaching character to make other folks easily know specific impossible subject areas. You undoubtedly surpassed people’s desires. Thanks for offering these good, trustworthy, explanatory and in addition cool tips on that topic to Ethel. python map

mtom said...

We are a group of volunteers and starting a new scheme in our community. Your web site offered us with valuable information to work on. You’ve done a formidable job and our whole community will be thankful to you. free python books

ChrissAlbama said...

Debi has authored or co-authored with Michael five preceding eBooks debi pearl age

Piyush said...

You have written very informative article....this is a very good blog for learning programming...thanks

ggg said...

Great Amazing site i love this
arihant general knowledge 2018

Unknown said...

The merchant account for tech support provides the user to contact Instabill which normally offers the users numerous payment processing solutions for the technical support merchants which may be separated into four categories.
Instabill provide merchant account for tech support to connect to a vast number of domestic,offshore affairs.
https://app.merchantstronghold.com/

office setup said...

norton.com/setup
Download and install your Norton product. Sign In to Norton. If you do not have a Norton account, click Create account and complete the sign up process.

office setup said...

norton.com/setup
Download and install your Norton product. Sign In to Norton.

Anonymous said...

Very Nice Article. I Like Your Article.

Unknown said...

This is really helpful post, very informative there is no doubt about it. I found this one pretty fascinating.

norton.com/setup

norton.com/setup

Davis Johnson said...

It has been a great deal of concern for norton.com/setup products;. and Microsoft Office suite includes Microsoft Word, Excel, PowerPoint, Skype, OneDrive and a lot more. office.com/setup | office.com/setup

Yeh Rishta Kya Kehlata Hai said...

Excellent article. I'm experiencing a few of these issues as well..

williamsam said...

All the latest info and great deals on Norton.com/setup You can find your norton product key in your Norton account just enter www.norton.com/setup which is situated in united state. Norton.com/setup


ameliwilliam09 said...

norton product key has given various methods for securing your private data. It additionally helps the clients in guaranteeing service that they are visiting or getting to an infection free or safe website. norton.com/nu16  setup benefits just as items, you should simply visit Norton.com/setup.

manpreetkour said...

Hello,
I had to peruse your weblog, I thrilled in perusing your blog. there may be a ton of true information to your weblog, I loved knowing it and I figure individuals get a ton of help from this blog. Sam, I have composed this sort of weblog, you can likewise peruse this weblog. I discern you may get a notable deal of assistance from this as well. I consider you like my blog, I consider you purchased a ton of help from this (mcafee.com/activate)
blog.

Website Developer, Digital Marketing, Computer Help said...

downlaod norton
Norton.com/setup

Website Developer, Digital Marketing, Computer Help said...

Norton.com/setup
Norton.com/setup Enter Product key
Norton.com/setup Download
Norton.com/setup Install
Norton.com/setup Activation

technation said...

McAfee download is the key to protect your digital world from malicious web content and cyber threats. Download McAfee activate file via mcafee activate
mcafee download
mcafee antivirus
mcafee total protection
mcafee activate 25 digit codev

mark watson said...

You did an amazing job. I really enjoyed reading this blog. I like and appreciate your work. Thank you for Sharing such an amazing article.

Mcafee.com/Activate

office said...

Office setup is a fairly simple process! It does not require you to do complicated step. Log in to your Microsoft account and enter the product key. Use office.com/setup to setup your Office.
https://www.officekeyoffice.com

office.com/setup
office setup key
office activation key

martinapcexpert said...

I wish to say that this article is an amazing, interesting and nice written. Thanks for sharing this article with us and I would like to look more posts like this.
Norton.com/myaccount

norton.com/setup said...

Wow, amazing blog layout! How long have you been blogging for? you make blogging look easy.

norton.com/setup

mcafee.com/activate

office.com/setup

Smith John said...

install Norton - Norton antivirus is an award-winning computer and mobile security program that helps to block threats, viruses, and unwanted intrusions. You can install Norton on Windows OS, Mac, Android, and iOS devices.

SBYCASINO said...

Sungguh Konten yang sangat menarik.
Saya tidak pernah melihat konten seperti yang ada pada semua blog Anda.
Jangan lupa lihat juga konten saya disini
https://bisnisterkenal.com/judi
Terimakasih.. :)

Jhon Smith said...

Get technical support for Kaspersky Lab products for home & business. Find instructions, video manuals and tools to solve top issues. Issues activating Kaspersky How to find the Kaspersky activation code. Update the scope of your KasperskyLab applications at once from the preferable update source.
kaspersky total security | Kaspersky activation code | Kaspersky activation

lauraine williams said...

Thanks for sharing such great information with us. If you are looking to reading next post.
webroot geek squad | webroot.com/safe

HP Number said...

HP Number are one of the best HP Customer Service Number in USA. Call HP Number to fix common errors in HP Laptop, Desktop, Printer, Tablets, Scanners, Faxes and other devices.

HP Customer Service | HP Printer Assistant | HP Wireless Assistant | HP Support Assistant

lauraine williams said...

You have really great taste on catch article titles, even when you are not interested in this topic you push to read it. Brother printer support

Davis Johnson said...

Get thorough answers for verifying your device from various infections, malware, and other online dangers at one single stage. Learn appropriate direction for downloading, introducing, and enacting the norton setup. The help administrators offer every minute of every day help to convey administrations at whatever point the client required. So as to speak with specialists dial the without toll number of Norton client support and get the best fixes for settling all questions and questions.
norton.com/setup | norton.com/setup |
norton.com/setup | norton.com/setup

Davis Johnson said...

Get one-stop answers for downloading, introducing, and initiating office setup. Get 25 digits alpha-numeric key which has been utilized during the way toward actuating it by dialing the sans toll bolster telephone number. Download Microsoft Office 2007, Office 2010, Office 2013, Office 2016, and Office 365 and interface with the client care administrators for getting dependable and successful answers for every one of your questions and ability to discover the 25-digit alphanumeric key code.

office.com/setup | office.com/setup | office.com/setup

Anonymous said...

One copy of Windows was installed on multiple PCs McAfee Software License Terms specify a certain number of devices

(PCs) on which a single copy of McAfee may be installed. Perhaps, your product key is being used on multiple devices

(PCs). Under such circumstances, you are likely to faceMcAfee Activation Errors.

McAfee.com/Activate

McAfee.com/Activate

norton.com/setup

john smith said...

Microsoft Office setup has a variety of Office products with various features that you can get from office.com/setup. If you want to use Office setup like Outlook, OneDrive, & Skype, then you definitely need a Microsoft Account. Everything that you need for your home, school, and office, then download it from office.com/setup
Office.com/Setup |
norton.com/setup |
mcafee.com/activate |
mcafee activate

McAfee Antivirus- mcafee.com/activate said...

In this blog, all the sentences are framed very well. This post helps me a lot to resolve the problem.
McAfee Sign In - McAfee Antivirus
McAfee Toll-free Number

McAfee Activate

Elieuse said...

Hi
I must say that the writer has given much importance to the content quality and used very simple language that can be easily understood by the readers.
Brother Printer- If brother printer has got you into any sort of trouble such as if you are unable to fix the paper jam or if there is some problem with the installation of the software or if you are facing any problem related to ink then, in that case, connect with the team of experts and get your problem fixed and hence get your printer machine back to normal working.
Visit us Now: Brother Printer HELPLINE Number - 24*7

Elieuse said...

If you need instant resolution to any problem associated with McAfee antivirus set up then in that case it is advisable that you ask help and support at McAfee toll free. The lines are open for the users 24*7 the experts are well trained and are well experienced
McAfee Toll free Number

Technical Support UK said...

Right Your Blog suggestion...
To recover Hotmail account first, go to the Recover Hotmail account page. Then, enter your email address and phone number. Then, click on the Next and Retrieve your verification code and click on Next. Now, enter your password and then click on Change Password. +44 800-368-9168  Trend Micro Support UK

Contact Now:  Trend Micro helpline Number UK

McAfee Antivirus- mcafee.com/activate said...

Hi,
After a deep research, this topic is written by an expert. This post is known for its authenticity. Very simple words have been used for clear understanding.
Visit us Now- 24*7

McAfee Helpline Number UK
McAfee Login

Norton Toll-Free Number
McAfee Help Number

Antivirus_support Solution's said...

Hi,
For fixing issues related to your Brother Printer machine it is advisable that you connect with the experts at Brother UK or they can be also reached at Brother Contact Number. The technical team is available for help all the time that is 24*7.
#brother_printer_Contact
#brother_printer
#brother_printer_drivers
Brother Printer Toll-Free Number

McAfee.com/Activate said...

Antivirus programs like McAfee com activate are basically designed to detect, prevent and remove software virus including malicious software like adware, worms, Trojans and many more. It has become essential to install antivirus software in your computer as it will get infected in no time when you are connected to the internet. Viruses are programmed to damage your device by taking over your computer and preventing users from accessing their data. Antivirus companies have to constantly update their tools as they have to deal with these malware on a daily basis. Spending on an antivirus like McAfee support is essential to identify theft and provide security to your computer as both our personal as well as business data are constantly stored on our devices.

McAfee.com/Activate

McAfee.com/Activate

McAfee.com/Activate

Mike Smith said...

Download, install, and activate, Norton and enter 25 digits alpha-numeric code for secure login. and Download mcafee global threat intelligence (gti) is a comprehensive cloud-based threat intelligence service . also download office.com/setup is the product setup report with this setup file you can introduce to your computer and a part of the bolstered device to utilize microsoft workplace.

norton.com/setup | mcafee.com/activate | mcafee.com/activate | office.com/setup

Eva Weston said...

This blog post helps me a lot to figure out the Bitdefender problems. The sentences are framed very well and if your Norton is troubling you then visit :- Bitdefender helpline Number UK | Bitdefender Technical toll free Number UK

Unknown said...

go to website
you can look here
read more
more 
explanation 
use this link
a knockout post
best site
blog here
her explanation

Techsupport said...

Excellent information on your Article, thanks for taking the time to share with us such a pleasant article.
download hp printer assistant |
hp support assistant windows 10 |

Daisy Jones said...

In this blog, all the sentences are framed very well. This post helps me a lot to resolve the problem.

But if you are Looking for Netgear Support, visit on Netgear Support

Daisy Jones said...

I would like to thank you for the efforts you have made in writing this article. I am hoping the same best work from you in the future as well. In fact your creative writing abilities has inspired me to start my own Blog Engine blog now. Really the blogging is spreading its wings rapidly. Your write up is a fine example of it. Visit for wordpress Support Wordpress Contact

Daisy Jones said...

This is my first time i visit here,I found so many interesting stuff in your blog especially its discussion,thanks for sharing. i really appreciate it that you shared with us such a informative post. hp support

Daisy Jones said...

Looking for D-Link Support UK, visit on dlink.support

Office.com/Setup said...

You made such an interesting piece to read, giving every subject enlightenment for us to gain knowledge. Thanks for sharing the such information with us to read this...
Office.com/Setup

Jhony shawn said...

Thank you for sharing excellent opinion. I am impressed by the details that you have going approximately for this website. I have more warn similar this blog. Click asleep to know these instruction
Norton setup |
www.office.com/setup|
Avast customer support number |
Avast help & support Number

Garmin express said...

Garmin Express is a gadget that urges you to supervise and revive your Garmin contraptions. You are required to keep your contraption revived with the latest programming and maps. This will help you in improving and progressively exact information. Garmin Express application is best for reviving your contraption as it sends the notification each time the update is available. For using an authoritative features of Garmin Express, you should visit "garmin.com/express".

garmin.com/express

Hailey Lewis said...

How to Fix AT&T Not Receiving Emails?

AT&T mail account offers its users a wide range of benefits. However, some of its users are getting the issue of AT&T not receiving emails into the account. If you want to get rid of such an issue quickly, call directly one of our AT&T service experts. Our executive members are available round-the-clock to provide you all sorts of help regarding AT&T.

BT Mail Login said...

Hi , Just wanted to say thanks for this fantastic article. Great timing as I start looking into building my site’s channel

BT Email Products:
BT Email is the best email service that is provided by BT with the email addresses which end in @btinternet.com Customers who had an email service with BT for a long time might use an email address which ends @btopenworld.com or @talk21.com BT Email is a safe and secure web-based email service BT Mail
BT Mail - BLOG BT Login

kartu joker said...

Game Slot “Vegas Magic”

Kartu joker— Vegas Magic adalah game slot yang dibuat oleh Pragmatic Play yang bertema pesulap yang sedang beraksi dipanggung disebuah acara di Casino Las Vegas, Amerika Serikat.

Pesulap Las Vegas adalah hiburan pokok industri hiburan di kota itu, dan telah diabadikan berkali-kali di film-film di masa lalu. Pragmatic membuat game slot yang terinspirasi oleh pertunjukan sulap itu, dan dirancang dengan sangat baik. Dengan gambar-gambar dari pesulap dan asistennya yang cantik, dengan harimau, merpati putih dan topi ajaib, tetapi juga tanda-tanda dolar atau pakaian kartu.

agen Sbobet Terpercaya | Judi Sbobet Online said...

You are good blogger, you have good command on topic like this,I want more from you,I have also some Useful Links to share.

Agen Sbobet Terpercaya

office.com/setup said...

Hey Guys ,Are you getting errors when you try to activate your Microsoft office activate subscription? Then read on to get step by step guide to solve Microsoft office activation errors. Protect your windows,Mac and andriod devices. Get and easily run Anti Viruses and Learn how to download, install, and activate your office setup on your computer and other devices by the easiest steps. Just visit our website and Trouble shoot the most commonly occuring errors for microsoft office365 by the easiest steps.. Install, and activate your office setup on your computer and other devices .

office.com/setup
office.com/setup
office.com/setup
office.com/setup
office.com/setup
office.com/setup
What is Microsoft Azure
Not able to access Microsoft Office after Updating Mac OS
How Do I Install And Updates For MS Office 365 on Window XP-office.com/setup
Office setup Administration
How do I fix Microsoft Outlook issues
Office 365 Troubleshooting
Install and download Microsoft Office Setup
Hello world

office.com/setup said...

how Microsoft Office eases our life

buildprogrammer.com said...

wow this post is amazing .. thanks for sharing please see my post also here is my post for
Top 10 best books to learn C Programming

SRFS Teleinfra said...

Get the best LPDA Antenna and other telecom products at an affordable cost. LPDA antenna is a type of radio antenna that is used in various applications including military, commercial, amateur radio communications, and radar. To know more about LPDA Antenna and other telecom products visit here: https://www.srfsteleinfra.in/product/lpda-antenna/