Because I read both books around the same time and they have quite a bit in common, I'm going to compare and contrast this book with Tina Fey's BossypBecause I read both books around the same time and they have quite a bit in common, I'm going to compare and contrast this book with Tina Fey's Bossypants.
Both books deal with the lives of writers producing television shows, so it's easy to compare them.
Fey's book is lighthearted, self-deprecating, and extremely funny. Gurvitz's book, on the other hand, is angry, bitter, and completely unfunny.
Now, I'm not saying it's unfunny BECAUSE it's angry and bitter. I love angry bitterness as much as the next guy, I love Lewis Black, Louis C.K., and many other dark comics. Ian Gurvitz's book isn't unfunny because it's mean, it simply happens to be both.
Considering that the book is written by a comedy writer, as well as the fact that Gurvitz is clearly trying to be funny, it says a lot that this book induced nary a single laugh from me. Fey's book, on the other hand, had me laughing out loud while reading it in public on numerous occasions.
The reason this is so interesting to me is that Fey's book is largely about success - she was the head writer on a few seasons of Saturday Night Live, and went on to be the head writer of 30 Rock, an excellent comedy show. She's one of the most successful female television writers today, and her story is one of triumph.
Gurvitz's book, however, is largely about rejection and failure. Constantly his work is being rejected - in fact a sizable portion of the book is devoted to him trying to get some pilot scripts sold, only to be told over and over that his shows are too dark and bitter. He concludes from this that television producers are stupid assholes, but I can't help but wonder if maybe they were telling him to lighten the scripts up in a desperate attempt to eek some comedy from him.
30 Rock is one of the funniest shows on TV. Gurwitz is responsible for obnoxious multi-camera sitcoms such as Wings, Becker, and the abominable "The Exes" (the creation of which provides much of the book's content). 30 Rock's jokes are clever, while Wings, Becker, and The Exes all aim for broad audiences with run-of-the-mill humor. It's interesting to read two perspectives on Hollywood TV. Fey is genuinely funny and talks a lot about those to whom she owes her success, while Gurvitz is a humorless prick who blames everyone else for his failures.
Every chapter opens with Gurvitz talking about the news at the time of writing, which almost always centers on George Bush or the Michael Jackson trial. The jokes he makes in these openers are the sorts of things that aren't even fit for Jay Leno's monologues. The humor is so predictable and embarrassing, it's amazing that Gurvitz actually has good taste in humor, talking about other TV shows that he finds genuinely funny.
One of my favorite parts of the book is how Gurvitz talks about how there aren't that many original TV show ideas, but it's all about execution. He's right, Friends was just "young people in the city" which had the same basic plot as dozens of other TV shows, but Friends was a huge success because of how well it was executed. Later in the book he discusses some of his ideas for TV shows that he's trying to sell to various networks, including a show about prostitutes. None of the networks go for it, but towards the end of the book he talks about how a network just picked up a show about a group of call-girls, noting with a tinge of bitterness that it was almost the exact same idea he pitched the very same network earlier. Most people, especially those who had realized the "execution is everything" point he made earlier, would take this as valuable criticism of their writing ability, but instead Gurwitz refuses to realize this, and blames the network for being dumb.
The book is very interesting, with lots of insider information about how TV shows are written and produced. Extracting these facts can be informative and entertaining, but it's a shame that it's surrounded by Gurvitz's relentless bitterness. I'm sure he wants the reader to feel like Hollywood just turns people bitter, but I came away from the book feeling like Gurvitz just kind of sucks as a writer and blames the world for it. The painful humor of his book and the TV shows he's so proud of writing solidify this view for me.
If you're willing to wade through Gurvitz's self-pity and misdirected anger, the book is a mildly interesting read, though I don't recommend the audiobook, as it's read by the author and even he is clearly bored to death with his own words, reciting his prose with a detached monotone....more
"The Career Programmer" is meant to be a dispensation of wisdom from a sage, a book that gives younger programmers keen insights from someone who has"The Career Programmer" is meant to be a dispensation of wisdom from a sage, a book that gives younger programmers keen insights from someone who has been in the industry for a long, long time. Unfortunately, it comes across as an anachronism, like the book time-traveled out of the 80's. While reading it, I felt compelled to double-check the publication year, and was absolutely astonished that it was printed in 2006. The "wisdom" of the book is so hopelessly out of date with the current state of software development that I cannot recommend it to absolutely anyone.
Duncan's view of software development is straight out of Dilbert. Managers are idiots that hold all the power, programmers are just lackeys that do what they are told. In his world, "shit rolls downhill" and programmers are at the bottom of the hill. Duncan has 10 years of experience in the industry, which is his basis for his advice. Well, I also have 10 years of experience and I have never, ever worked in a place as dysfunctional as what he describes as typical. Perhaps I am extremely lucky or just extremely talented, but I doubt either of those are true, and every one of my friends who programs for a living would likely agree with me about Duncan's worldview. If I found myself at a company like those Duncan describes, I'd leave immediately and get a new job, I certainly wouldn't build a 10-year career stringing those experiences together.
As an example of what I'm talking about, Duncan describes that programmers are expected to "do whatever it takes" to get the job done, which "means now would be a great time to rent out your house because you're not going to be seeing much of it until after the deadline. You will code, eat, and do everything but bathe in your cube for as many consecutive hours as you can manage to stay conscious." In my 10-year career, I have worked late on exactly 3 occasions, each lasting no longer than one week. On these occasions, I was home by 9pm. On 2 of those 3 occasions, my team and I worked late not because it was expected of us, but because we had messed up and supplied a commitment we shouldn't have, and we felt honor-bound to meet it. Any other work outside of office hours has typically been a midnight deployment, and the expectation has always been that I'd be sleeping in and coming in late the following day. Pointy-haired bosses have never demanded I work late to meet a deadline. In my experience, programmers that habitually work late are the worst programmers, constantly digging themselves into spaghetti code nightmares that result in them working late.
He goes on to talk about vague requirements with tight deadlines. He even states "It's almost completely unheard of in our business for management to ask us for a system without attaching a timetable of some sort." This is utter nonsense, and can come only from a programmer who has had absolutely no experience with agile development. This kind of death march was common in a time when people were all-Waterfall, but in the post-agile-manifesto world, this kind of thing is vanishingly rare. Almost every project I've worked on has either had a fixed delivery date with variable scope, or fixed scope with a variable delivery date; very rarely are both dimensions fixed.
Duncan confirms that his view of the world is based in Waterfall when he talks in Chapter 2 about how management often shortchanges the "Analysis and Design Phase" - terminology right out of Waterfall. Chapter 4 talks about gathering requirements in an official requirements gathering phase, and getting them "set in stone". He argues that a formal requirements document gives you "ammunition further down the road when someone comes along and wants you to add additional features." This kind of thing is dinosaur-talk, people who know what they are doing don't write code this way. We gather small numbers of isolated requirements in user stories, and get those stories finished. In real life, software requirements are GOING to change - pretending you can get requirements set in stone to protect yourself later on is simply divorced from real life. It's far better to embrace a process that allows for that kind of shift, as virtually any professional software developer I've met in the last 10 years would attest.
The book constantly references the "maintenance programmer," the notion of a programmer that takes over maintaining the system after the Serious Developers have built it. This type of development is such a glaring antipattern I can hardly imagine someone mentioning it in any positive context in 2006. The programmers that write the system should maintain it, end of story. All programming is maintenance programming, developing a system and throwing it over the wall is a recipe for long-term disaster. Everyone but Duncan seems to know this.
The real clincher for me was Duncan's chapter on Effective Design Under Fire. Duncan acknowledges that there are many "excellent books on the software design process lining your shelves" but that he has "rarely been in a shop in which management gave the developers even a fraction of the time necessary to fully implement these methodologies." First of all, writing well-crafted, maintainable, high-quality code is not management's call, it's YOURS as a professional. To shirk your professional responsibility because of deadlines is to be professionally negligent. Duncan confirms my worst suspicions when he states "I'm about to ... destroy my reputation in the eyes of credible and respectable professionals everywhere. However, I've got deadlines to meet, and I've always been more interested in that than looking respectable."
Combine this attitude with Duncan's belief in the "maintenance programmer" and the fact that he spent most of his 10-year career as a contractor and a pretty clear portrait is painted: Christopher Duncan comes off as someone who writes garbage code and then bounces to another job before having to maintain it. Duncan seems like literally the worst type of programmer: the guy who doesn't worry about writing quality code because there's Just No Time and then believes it's someone else's job to clean up after his mess. Based on this book, I'm pretty sure I would hate working with Duncan, and I would never hire anyone that cited this book as any sort of inspiration. The attitudes in The Career Programmer are absolute poison for a good software engineering team.
When Duncan is explaining some tactics for good design, he advocates Big Design Up Front (wrong) but just to rush it as much as possible (doubly wrong). He argues for prototyping systems before actually building them (usually wrong) but describes prototypes that are fully-functional UIs (wrong) with nonfunctional implementations (wrong). If you're going to build a prototype, you should build a steel-thread prototype with a garbage UI - there is literally no point to the kind of prototype Duncan describes except to mislead your stakeholders about the progress of the system. His view couldn't be more wrong.
Duncan acknowledges that accurate estimates are essential. He devotes a chapter to improving your estimation technique which boils down to "just to be on the safe side and make sure we have a little cushion in case things go wrong, we multiply [our estimates] by two and give it to the project manager." The project manager then goes on to "multiply the numbers he was given by two and turn the estimate in" (page 113). Duncan's strategy for estimates is to pad all estimates by a factor of 4. Why 4? Why not 2, 3, or 8? What a completely unprofessional stab in the dark. How is possible to be this criminally unaware of scrum, sprints, story points, and velocity in 2006? For crying out loud, as our industry has matured and improved, even Scrum is out of date in favor of a more metrics-oriented planning within a Kanban framework - Duncan is 2 process methodologies behind the times.
On page 145, Duncan advocated using Hungarian notation for variable naming, at which point the book devolved into self-parody. The book is well-written and entertaining, so at a technical level it is good, but the advice is presents is the worst possible.
Look, I don't mean to be too harsh on Christopher Duncan. He was a Windows C++ programmer who spent most of his career developing software that shipped on CDs. Towards the end of his career, he saw a sudden shift toward the Web for delivery, and attempted to learn Web-related technologies, then promptly quit the industry and became a full-time speaker and author. Maybe if Duncan had stayed in the industry, he would have matured and grown along with the rest of us rather than stay stuck in his antiquated notions of professional software development. But the fact of the matter is, he didn't, and the world has changed without his awareness. To publish a book full of outdated wisdom as though it had any applicability to today seems borderline careless. I shudder thinking of young programmers reading his book for career advice, taking it to heart, and then joining a team I'm on. Is it illegal to screen out any job applicants who like it?
Everything about this book is wrong. If you want a book full of good advice for programmers, read The Pragmatic Programmer (Thomas, Hunt). If you want a book about how to best handle the design of your system, read Emergent Design (Bain). For a book on how to manage your career, read The Passionate Programmer (Fowler). If you need a book about estimation, Agile Estimating and Planning (Cohn) and if you need one for requirements gathering, User Stories Applied (Cohn) or Agile Software Requirements (Leffingwell) if you're really serious. And for the love of all that is holy, if you want a book on how to conduct yourself professionally, read The Clean Coder (Martin).
Do not, under any circumstances, read this book. It will bore and annoy you at best, and ruin you at worst. ...more
The Art of Deception is one of two books by famous hacker Kevin Mitnick, the other being "The Art of Intrusion". Intrusion focuses primarily on physicThe Art of Deception is one of two books by famous hacker Kevin Mitnick, the other being "The Art of Intrusion". Intrusion focuses primarily on physical or technological hacks, while this book focuses almost exclusively on social engineering attacks.
A number of problems prevented this book from being very good. The main problem is simply that Mitnick did not have enough material to fill an entire book. This book would have been better if it were shorter and simply one section in a larger book about security. A great deal of the book feels like padding, the anecdotes about various social engineering attacks seem repetitive and pointless - reading just one is often enough, but Mitnick consistently indulges himself with identical tale after identical tale.
I'm not entirely sure who the audience for this book could really be. It doesn't seem like it's for technical people, because the book goes out of it's way to define what things like "http" mean. The book claims to be geared toward nontechnical people or businesspeople, but the fact of the matter is that the subtle differences between a lot of the social engineering attacks will be missed by nontechnical people. To your average joe, 20 or so of the stories in the book will seem identical, testing the patience of the reader.
The book is also frustrating in its design. It's constructed as a book to help managers and businesspeople manage security at their companies. Every story about a social engineering attack is followed by a "Mitnick Message" where Kevin explains how to prevent the attack from happening to you. In reality, however, the real focus is the story itself - the attackers are consistently painted as the hero of the story, with the hapless victims being drawn as naive morons. It's clear that Mitnick admires the attackers in these tales, and the "Mitnick Message" feels like it's been forced into the book to keep up the ruse that the book is intended for anyone other than wannabe hackers. Mitnick's advice is a restated form of "verify the identity of the caller" in nearly every instance.
The book is, to put it simply, a bore. Reading it was a challenge, and I had to fight the frustration to skim or skip sections nonstop. The Art of Intrusion is far more interesting, and I recommend it over this book without reservation. There is value for businesspeople to read this book, but I imagine it will present a significant challenge to their patience.
As an aside, Mitnick offers terrible advice regarding passwords. He argues that passwords should not consist of a constant combined with a predictable variable, such as "kevin01", "kevin02", "kevin03". I agree. He also says that users should not write down their passwords and tape the paper to their monitor or under their keyboards. I agree again. He also, unfortunately, argues that passwords should expire every month. Well, that's terrible advice. Passwords need to be something people can remember, or they have to write them down. If they are going to be memorable, they can't change constantly. If they change constantly and must still be memorable, people have no choice but to add some predictable pattern to a memorable portion of a password. In short, of options A) Don't write passwords down B) Don't use a simple increment in a password C) Change passwords monthly, security administrators can pick any two. To try for all three is delusion....more
A novel has a number of different elements that go into what you could call "the writing." Digital Fortress is a fascinating case study on writing becA novel has a number of different elements that go into what you could call "the writing." Digital Fortress is a fascinating case study on writing because I see it as a failure in every single one of these areas. The actual storytelling, the factual information, and the message of the book are all embarassing, which makes Digital Fortress officially the worst book I've ever read.
This is the first (and only) Dan Brown book I've ever read, and I can only hope that The Da Vinci Code is put together better than Digital Fortress, otherwise I utterly fail to see what makes him so popular. The book is divided into over 100 tiny chapters, each one switching to one of three or four settings with different sets of characters. The prose is short, often used exclusively to set a scene or describe short actions of characters. Basically, Dan Brown wrote a screenplay for a film, but published it as a novel. The entire book is written and paced as if it were meant to be a Hollywood film, but it would be a terrible one. Entire chapters consist of "talking heads" where it's just two people in a room exchanging dialogue, often with "so-and-so chuckled," prepended. One character is described as "slender" five times. Jesus, grab a thesaurus.
The dialogue is usually very forced and awkward, with Brown explaining things to his audience in the most heavy-handed of ways. This is particularly egregious at the start of the book, where Susan (our main character) has entire conversations with her boss where she brings up every possible objection to the plot the reader might be having, only to have her boss explain why that's not an issue and we can happily move past it. This is particularly frustrating because (potential spoiler here) Susan suggests a number of explanations for things, which her boss dismisses and explains why they cannot possibly be the case, only to have it turn out in a twist ending that they were true all along.
The dialogue is often so cheesy that any film that actually used it would be laughable - especially the "climax" of the book, where a techie is calling out a countdown as the tension mounts for our characters. "Two minutes left!", "They're past the first firewall!" and such. It's beyond corny.
The worst aspect of the book in terms of writing is when the book switches to following David Becker. He's been sent to Spain to recover a ring, and "tedious" would be understatement of the decade. These are such a painful chore to endure that it was a struggle not to simply skim them. You can honestly read the first and last paragraph of each of these chapters and miss nothing. In each chapter, David talks to the person who last saw the ring, finds out they do not have it, and is then pointed in the direction of the next person who has seen it last. Then the next chapter follows the same structure. It's torture.
I know it's fiction, I know it's a book, but Dan Brown clearly did no research into cryptography before writing this garbage. Someone even midly versed in computer security and cryptography will find most of the concepts in the book laughable. I began dog-earing pages in the book whenever I found something so absurd that it made me laugh out loud, and wound up with about 40 folded pages.
The entire premise of the book is that the NSA has a top-secret computer, TRANSLATR, that can crack anything by simply brute-force guessing passwords in massive parallel. This is idiotic, and the book even acknowledges that this is impossible, then claims it happened anyway. Susan explains to her boss that the longest TRANSLATR has ever taken was an hour, but "that had a ridiculous long key, ten thousand bits". Ten thousand bits huh? No, it's alright, there are about a million processors in TRANSLATR, so it should be able to brute-force that key in one millionth of the time. Oh, that's still trillions of years? Well, surely they can't say anything even more ridiculous, certainly not on the very same page. Oh, nevermind, half a paragraph later it talks about TRANSLATR breaking a million-bit key in 3 hours. If a million bit key takes 3 hours, a ten-thousand bit key would take a few seconds. What's TRANSLATR doing with those million processors in all of that time? And how in the hell is TRANSLATR supposed to be able to brute-force decrypt any encrypted file if it doesn't even know which encryption algorithm was used?
All of that was on a single dog-eared page of my book. The titular Digital Fortress is a new encryption algorithm invented by a man named Tankato, which cannot be broken, even by brute force. He has encrypted the source code to Digital Fortress USING Digital Fortress, and is threatening the NSA with releasing the key. What exactly would the key do if nobody knew the decryption algorithm? On another dog-eared page, Susan's boss asserts with total confidence that the key is only 64-bit, despite the fact that he doesn't know the key or the algorithm used. Another explains that this same boss got into some hot water by trying to release an open source encryption algorithm called Skipjack with a secret back door for the NSA that only a single person in the world was able to discover (who was then hired). I guess Dan Brown's understanding of open source is pretty much as bad as his understanding of cryptography and mathematics.
Susan is described as basically the most brilliant cryptologist in the entire universe, and yet her workstation password is 5 characters long. One person explains that another pass-code is "64-bits" but that "nobody can memorize all 64 characters." The most groan-worthy was an explanation of a report indicating that TRANSLATR has cost the NSA $999,999,999 trying to decrypt Digital Fortress: "Looks like a divide-by-zero [...] when the denominator is zero, the quotient goes to infinity. Computers hate infinity, so they type all nines."
There are dozens and dozens of additional examples, which I would love to mention here because they are hilariously dumb, but I'd start to get into spoilers for the book and I'd rather not, so I'll leave it at that. It's a shame, because these factual inaccuracies actually get more exagerrated and hilarious as the book goes on. In short, Brown is drastically underqualified to write a book about cryptography.
The Message and Politics:
Never before have I read a book where I wanted so badly for the main characters to completely fail. I was rooting for the "bad guys" the entire time. The main plot of the book is that Tankato has this algorithm which the NSA can't decrypt. The NSA has been able to spy on every email message for years since creating TRANSLATR, and this algorithm would completely cripple the NSA's operations. An entire chapter is devoted to explaining why it's so important the NSA be able to decrypt all communications without warrants, because of all of the lives that doing so saves.
The Electronic Frontier Foundation is the main thorn in the side of our main characters, pouncing on our heroes for putting backdoors in algorithms and spying on Americans. The EFF is painted as something akin to a light terrorist organization, and every line in the book that mentions them does so with disdain.
Tankato is "blackmailing" the NSA, telling them to tell the world about TRANSLATR or he will release the key, stopping the NSA forever. Most of the book is spent with Susan trying to track down the information needed to obtain one of the keys that will decrypt Digital Fortress, with David trying to track down the other.
I guess the reader is supposed to really root for them, but I kept hoping they'd fail. I wanted Digital Fortress to become available to the world, preventing the NSA from spying on everyone with reckless abandon. I was with Tankato the whole time, hoping he'd be victorious in exposing the NSA and publishing a new encryption algorithm. As for the EFF, I'll let the EFF T-shirts I got as a gift for donating hundreds of dollars to the organization and the EFF sticker emblazoned on my car speak for themselves. The EFF are not the bad guys in my book, and the NSA in this book is.
One character at the NSA (Hale) seems to be the lone voice of reason, criticizing the NSA for putting backdoors in algorithms and spying on citizens. Naturally, he is painted as a complete asshole and a traitor to his country. Just to make sure the reader hates him and ignores his sensible objections to the NSA's actions, a few paragraphs are devoted to him fantasizing about raping our female main character. And speaking of gender, despite the fact that Susan is a brilliant cryptologist and mathematician, it his her boyfriend (whom she taught the basics of crypto while dating) that figures out not one, not two, not three, but ALL FOUR of the required crypto-clues during the book's climax to save the day.
Brown comes back from the brink of right-wingnuttiness by the end of the book a bit, and I won't say much about it because I don't want to spoil anything, but ending the book by basically saying "no, these guys were maybe kind of wrong all along sort of" doesn't change the fact that, as a reader, I did not want the protagonists to succeed. This makes it hard to remain engaged, which gets back to the book's failings as narrative fiction.
I hated, hated, hated this book. I hated everything about it. And yet, I have to admit that it was entertaining. It's the same reason I watch "Batman and Robin" whenever it comes on TV. It's an awful movie, and I hate nearly every frame of it, but it's so hilariously terrible that it's entertaining as hell. I could barely put the book down, eager to see what inane thing Brown would write in the next chapter (though David Becker's chapters were never entertaining).
Take the cheesiest, corniest part of the television show "24" or "CSI" - the ones that take place inside of headquarters and have characters telling others to "enhance" digital photographs and "backtrace through a visual basic gooey" - if those parts are your favorite parts of the show, you will absolutely love Digital Fortress. But if you know anything about math, computers, programming, security, storytelling, writing, privacy rights, or the constitution, you will probably find Digital Fortress alternating between being a laughable embarrassment and a tedious bore.
I have never wanted so badly to punch a book in the face. ...more
I enjoy Michael Shermer and have read a number of his books, but I felt that "The Science of Good and Evil" was one of his weakest.
The book essentialI enjoy Michael Shermer and have read a number of his books, but I felt that "The Science of Good and Evil" was one of his weakest.
The book essentially attempts to answer the question of "why are people moral", but the introduction to the book implied, at least to me, that the book would be a bit deeper.
The early portion of the book seemed to say that Shermer would provide some kind of a moral framework for objective morality - a morality that could be used by secularists (such as myself) to definitively say that an action is right or wrong at an objective level, rather than simply being according to my personal code of ethics. I was very excited to see what Shermer had to offer in this regard, because I consider it one of the few chinks in the armor of a secular worldview.
Ultimately, I think the book is a failure because it fails to provide such a thing. The book, after framing its contents in this way, seems to simply argue that we have developed a naturalistic sense of right and wrong through evolution, and that this system of morality is good enough for those purposes. This is nothing I haven't heard before, and it was extremely disappointing to me.
The book is extremely short, only taking me two sessions to get through, and I think it simply scratches the surface of a complex issue. It argues for naturalistic morality as scientific morality, but simply doesn't provide much in the way of deep analysis of a complex topic. Other Shermer books are better, and the material contained in this book is probably nothing new to someone with a secular worldview who has read these kinds of books before....more
This book covers a great deal of material: Martin talks about the basic practices of agile software development, the principles of good object-orienteThis book covers a great deal of material: Martin talks about the basic practices of agile software development, the principles of good object-oriented design, and common OO design patterns.
This book is, in my opinion, a career-changer. Having a single book that teaches what it essentially means to move from being a programmer to a real software craftsman is invaluable. I'd recommend this for any experienced programmer who wants to transition to a more professional approach to writing high quality, maintainable code.
In this book, Martin avoids a problem that plagued Clean Code - most of the code examples here are short, making it less problematic that they lack any kind of formatting to aid readability. My main problem with the book was that I personally don't think C++ code ever "looks" good, so examples that illustrated how to clean C++ code weren't as impactful for me as the Java examples. I think I would have preferred the C-based code to be in C# instead.
Overall, this is an excellent book that really helped me grow into a software craftsman. Occasionally, some of the code examples drag on a bit long, and occasionally the examples look overengineered (a common problem when using code short enough to illustrate a single thing), but the book is so good otherwise that it's worth slogging through the occasional rough patches....more
Refactoring to Patterns essentially attempts to merge together two types of books: books on code design (such as the GoF Patterns book, Head First DesRefactoring to Patterns essentially attempts to merge together two types of books: books on code design (such as the GoF Patterns book, Head First Design Patterns, Patterns of Enterprise Application Architecture, etc) and books on engineering principles (such as the eXtreme Programming series and, most of all, Fowler's Refactoring).
In this, it succeeds. Refactoring to Patterns really makes explicit the relationship between agile programming practices and OO design. It draws a connection precisely where two concepts are connected but where few books tread. Kerievsky isn't a Patternista either, he makes it clear that Patterns are often overkill for some types of problems, and he always mentions both the benefits and costs of a pattern being discussed.
The main problem with the book is that it exists to create a connection that I think most people can create on their own. If you've read Refactoring and a Design Patterns book, I don't think there's a lot to be gained here. Often I found myself reading the writeup of a pattern, looking at its diagram, and skimming the "How To" section. I'd often skip the example entirely, as it was clear by that point that I knew exactly how to refactor to a pattern.
The book claims that its goal is to make it clear not just HOW to implement a pattern (which GoF does a great job of), but WHY. What does the code look like when it's in a state that it should be refactored to a design pattern? Kerievsky does a decent job with this goal, but often I wondered if it would have been better for him to go into more examples and detail on that subject, and spend less time taking the reader step-by-step through the actual refactoring itself. Those pages often felt like padding in a book struggling to reach 300 pages.
If you feel comfortable implementing Design Patterns but unsure of when it's appropriate to use them, this would be a good book, though I have a hard time believing there isn't a better one out there (though to be fair, I can't think of one). Otherwise, I don't think there's much to glean from the book - often pages were spent spelling out refactoring steps that anyone with some experience with Patterns probably already understands....more