Most Helpful Customer Reviews
13 of 14 people found the following review helpful:
5.0 out of 5 stars
An Inmate's View of Life in an IT Dungeon, December 19, 2003
This review is from: Software Exorcism: A Handbook for Debugging and Optimizing Legacy Code (Expert's Voice) (Hardcover)
Software Exorcism is a mind-dump by an experienced maintenance programmer. Bill Blunden lists all the horrendous coding techniques he's come across in commercial software, while offering detailed tips on debugging and optimizing code. The very useful code examples are written in C++, C or assembly language, mostly on an Intel platform. The aim of the book is to help computer science and engineering students jump the chasm to corporate life by giving them the real-life vocabulary and practices that they can expect to meet over the first few years of their professional life. Much of what they will learn is to forget most of what they've been taught in college -- from terse variable names to an infatuation with recursive routines. Amongst the challenges that Blunden expands upon are the realities of corporate and office politics. Here are all the gory details of the name-and-blame game, information hiding and "Sysyphean" tasks aimed at pressuring people to quit. Ultimately, Blunden concludes, software engineering, as a career path, has become a "quaint anachronism" and programming is "strictly a short-term occupation". If he's right, then it's a pity that this book probably won't be seen by most CS students until they're ready to graduate after paying all that tuition. Also recommended: Facts and Fallacies of Software Engineering by Robert L. Glass
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
5 of 5 people found the following review helpful:
3.0 out of 5 stars
A good book, but not a great one., January 24, 2009
This review is from: Software Exorcism: A Handbook for Debugging and Optimizing Legacy Code (Expert's Voice) (Hardcover)
Bill Blunden is clearly an experienced maintenance programmer. He is also someone who has clearly worked in the snake-pit of the commercial world. He has a lot to say on how to approach the maintenance of legacy code. He is right on the money when comparing the debugging process to the use of the scientific method, although I think, for the benefit of those new to the idea, he could have gone into greater depth on how experiments should be constructed. (Basically, you've got to know what the results mean BEFORE you run the experiment.) Also, he is correct in his advice on when to optimize software: only after you've used a profiling tool to identify the bottlenecks. In my experience, humans are bad at guessing where the bottlenecks are; let the computer do it.
If you've been sensing a "but" coming, here it is: he seems to have stopped paying attention to developments in C++ sometime in the mid-90's. Of the sins committed in his C++ examples (of fixes, not of bad code) are: failure to use the C++ standard library, throwing pointers to exceptions, not deriving exceptions from std::exception and failing to use the built-in bool type in favor of C-style TRUE and FALSE. Also, most of the techniques he mentions in he section on CPU optimization are things that optimizing compilers have done since the early 80's (or earlier).
The strength of this book is in the sections on debugging and dealing with legacy code. He deals well with the political side of this profession. I have not seen this dealt with elsewhere. Less useful are the sections on the techniques of optimization.
He calls software engineering a "young man's game" because the efforts required to keep up with the latest fads in software becomes prohibitive after a while; all those new kids just out of school will already know this stuff and will work for less to boot. I am a professional software engineer. I have a long experience with software maintenance. Like any professional, I feel that it's part of the job to keep up with current practice. Does that mean following every fad? No. It does mean learning about those things that have survived fad-dom. That's why I bought this book.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
6 of 8 people found the following review helpful:
5.0 out of 5 stars
This one is REALLY good, April 8, 2005
This review is from: Software Exorcism: A Handbook for Debugging and Optimizing Legacy Code (Expert's Voice) (Hardcover)
Don't give this one to your programming team, they probably won't get it. Don't give it to this year's star programmer, for the same reason. Wait until you find that one kid that always has one more answer than everyone else, and especially the one that has one more question than everyone else. Give that kid this book.
This book is about all that ugly stuff that people take pride in ignoring because it's "low level" and they're way too cool to do anything low. Memory has costs, CPU cycles have costs, they're wasted in different ways, and recovered in different ways. You find out which is which in different ways. That's what this book is about. Basically, it's all that stuff that was too pragmatic for your CS professors and too theoretical for the Computer Eng. teachers - i.e., what you needed and never got.
This book addresses memory usage, stack frames, processor cache, loop fusion and strength reduction, all in down-and-dirty examples. It talks about debuggers, source control, and bug management - the facts of daily business life that coursework rarely addresses.
If a junior zoomer masters what this book has in it, s/he might survive one of my favorite interview questions: Given only a C compiler, no assembler, and full compiler documentation, unwind the stack. If you don't know what "unwind" is, go away; if you read this book, we'll talk.
//wiredweird
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
|