Rating: Summary: Thinking about Programming Review: Some reviewers love the book; some hate it, but I think it wonderfully accomplishes its goal of getting us to really *think* about programming. I'm a former professional woodworker and I got a little tired of the woodworking analogies (it really is best to stick with what you know), but this is mere quibbling. I highly recommend the book.
Rating: Summary: What rubbish! Review: I like to consider myself a master craftsman. My craft is that of programming. I live for programming. Programming is rarely from my thoughts. I am constantly thinking of ways to improve my craft. Learn a new skill. Develop a new tool. What went wrong? How can I do better next time?Programming is a rapidly changing craft. A machinist can learn to work a lathe or a milling machine, and expect that his knowledge will stand him in good stead for the rest of his working life. Not so for the craftsman programmer. Ours is a new craft. We are still learning how to do it. Having survived in the game for a decade or two, and having learned dozens of languages, operating systems, database management systems, transaction processing managers, editors, we come to the realisation that this is a hard game. Each of us learns skills that help us cope with all that change. We learn basic programming skills. We go on learning them. We learn to see what is coming, and move in anticipation. We learn what is important, and what is not. We watch those who are successful, and try to emulate them. We watch the unsuccessful with horrid fascination, and try to learn from them also. "There but for the grace of God go I!" I don't know how to make an object oriented design. I can do design sketches. So I start from there. I build my system, dealing with the problems as they arise. I rely on my experience to keep me out of trouble. When I see commonality between two classes, I take the opportunity to refactor and eliminate the commonality. I am quite happy to rewrite any piece of code to make it better. You know what happens? I end up with a well-designed system despite myself. I am an opportunistic programmer. I saw the title of this book, and thought: "That's me!" So I bought it. What a disappointment! It is full of platitudes. It reads like a writer's style manual. It is good to do things this way. It is a bad idea to do it that way. It has no meat to it, no depth. If you want to know more about the topics they discuss, you won't find it in this book. You won't find much of it in the references either. Let me quote a typical example from the section entitled "Text Manipulation". "Pragmatic Programmers manipulate text the same way woodworkers shape wood ... We need a general purpose text manipulation tool ... Text manipulation languages are to programming what routers are to woodworking. They are noisy, messy, and somewhat brute force. Make mistakes with them, and entire pieces can be ruined ... in the right hands, both routers and text manipulation languages can be incredibly powerful and versatile..." What rubbish! The analogy flows on, and is followed with the advice to learn a text manipulation language, and a list of things possible with such a language. There is not one practical example. This continues for section after section. In Appendix A: Resources, the authors say "The only reason we were able to cover so much ground in this book is that we viewed many of our subjects from a high altitude. If we'd given them the in depth coverage they deserved, the book would have been ten times longer." All I can say is that they should have covered ten times fewer subjects, to the depth of coverage they deserved. A journeyman programmer wanting to become a master is advised to study at the side of a master. Buy Kernighan and Pike's The Practice of Programming.
Rating: Summary: generally good Review: Overall, I enjoyed this book. It delivered a thoughtful perspective on software development. I especially appreciated the absence of a quasi-religious methodology as well as their apparent orientation towards Unix. Why only four stars? I never really had any AHAs as I read the book. In other words, the authors make good points, but they're somewhat banal.
Rating: Summary: This book will show you how to save time by spending it Review: As a programmer, I like to think of myself as pragmatic. Programming is the most precise discipline there is and justifies the cynical joke, "How many character changes does it take to turn 'success' into 'failure'? Answer: Only one if you are a programmer." However, pragmatic is a very subjective word, so the obvious question that any reader interested in this book would ask is, "So what criteria do the authors use to define a pragmatic programmer?" In listing the criteria and explaining their reasoning, the authors show their depth of understanding of what is both right and wrong with the current state of the development art. Every keystroke or mouse click that we perform has a consequence, not only today, but in the future. When performing them, we should always be looking ahead to the future, whether that be thinking about how the code will be maintained, how the users will respond to what they find or how your current skill set is expanding or contracting. This eye on the future is the primary theme of the book. The tips are kept simple, which is effective and is consistent with the secondary theme of the book. Complex systems are what we build, but in totality we cannot comprehend them. Only by breaking a project down into manageable parts can we hope to interact with it in an effective manner. Furthermore, the inertia against changes is much less severe when they are small and simple. Whether it be Ockham's razor, Einstein's statement about the simplicity of theories or simply reciting the KISS (Keep It Simple Stupid) mantra, reducing complexity is effective. Some very good analogies are used to explain the principles, with my favorite being the broken window tale. The basic story is simple, abandoned buildings or automobiles on the street remain untouched until a window is broken. Left unrepaired, this sends a message that the object is fair game so within a very short time, vandals destroy the rest. The same thing happens in software development. Once a subpar feature is passed as acceptable, the signal to everyone is clear, and the quality of the remaining work suffers. Granted, most of us in development are severely time challenged and have little to spare to either read or perform code clean ups. However, this is a book where the interest paid over the short and long term will dominate the initial investment. Applying even a few of these principles will help reduce the load in the future as you begin spending less time in all phases of the software cycle. It takes approximately a one percent increase in efficiency to save a half hour a week. This is a book that should be read by all programmers, especially those who wish to control their own destiny.
Rating: Summary: The Habits of Highly Successful Programmers Revealed Review: "This book will help you become a better programmer." So states the very first sentence of the book's preface. Loaded with entertaining anecdotes, real-life examples, stimulating challenges, and exercises (with answers), programmers of all levels will find that The Pragmatic Programmer: From Journeyman to Master does indeed deliver on its rather bold opening statement. Managers will also find great value in the chapters dealing with project issues. The book aims for the "soul" without bogging down in syntactic details, so it is accessible to programmers of C++, Java, Smalltalk, Eiffel, Tcl, etc., alike.
Rating: Summary: Philosophy of programming Review: Take it from a programmer of ten years: The book was fabulous! It provides a philosophy about programming - something they don't teach you in college! The concepts extend to many different facets of information technology. All of the developers in my group are getting copies!
Rating: Summary: A must for professionals ! Review: Working for a software development company, programming is life or death. I am recommending The Pragmatic Programmer to our junior developers so that they will have a great tool to be successful.
Rating: Summary: Don't lend this book out, you won't get it back! Review: As an experienced programmer, project manager and an MCSE, I valued all of the tips and advice in this book. It is written for the seasoned professional to the novice, it is a valuable book for all computer professionals.
Rating: Summary: Experience put into words Review: This book is downright excellent. I recommend it to both novices and masters. Novices learn and masters can refer "students" to particular chapters when trying to convey/sell particular concepts. I have several people I work with that I consider my programming role models. While reading this book, I found myself saying, "Oh, this is something John always preaches," and "Here is a major philosophy Jane follows." At other times, I found myself saying, "This is something I always had a gut feeling about and I'm glad I now have something in print to back me up on it." An excellent book. I read to page 86 in the bookstore before having to leave (and buy) because the store was closing for the night. Check it out. You won't regret it!
Rating: Summary: Good for beginning programmers Review: The Pragmatic Programmer is a mixed bag. It attempts to cover a large number of broad topics, ranging from object-oriented design to algorithm speed to testing strategies. As a result, each topic gets a fairly superficial treatment, only skimming the surface before moving onto something else. My other reservation about the book is that the authors are "Unix geeks", and view the world accordingly. They touch on Windows mostly to urge readers to put a Unix shell on top of it; other platforms like Mac OS are mentioned not at all. Personally, I am tired of "real programmers use the command line", or "Emacs is God" posturing (despite the authors' earnest but flawed attempts to justify these), and felt it detracted from an otherwise useful book. Worse, the authors fail to discuss any tools related to building complex interactive applications, a significant omission from the stated goals and scope of the book. Those complaints aside, the book does contain useful information and ideas, especially for new programmers who often don't have a strong grasp on the bigger picture of software development. The authors offer good insights on topics like design by contract, documentation, and refactoring, which new programmers often fail to appreciate.
|