Yeah!!! : ) Another job done for 2007!!! I finally finished reading the book "The Pragmatic Programmer" (after holding on to it for almost a year now! -.-" which I felt bad indeed!!!). But this doesn't mean that it is a bad book at all...in fact it is a very informative one (but only to programmers and programmers who 'cares' and 'want to become better')!
Brief Review and My Thoughts on the Book:
The book is definitely about how to become not just a 'good' but a 'professional' programmer! The book contains various tips and ideas on ways to make a programmers' life more efficient and prevention from tripping up in a software project.
It goes from talking about the general ways to improve coding; how to approach and begin a project; to expanding your software tools to make your programming life easier; testing of the software and user satisfaction.
Speaking from a SE (Software Engineer) grad point of view, a lot of the things mentioned in the book are already known & taught to us e.g. decoupling and cohesion of modules, testing should be done along side of coding. But after reading the book, I feel that it was able to emphasize these importance concepts to me, making it more 'believable' in practise.....encouraging their application in real life projects.
Notable Tips from the Book:
Some of the notable tips for me from the book (extracted and referencing from the book):
- DRY - Don't Repeat Yourself
"Every piece of knowledge must have a single, unambiguous, authorative representation within a system." Duplication should not arise not only in the code, documentation (code + technical), functionality of the system and even information and even 'interdeveloper' where the same function gets implemented in duplication. - Eliminate effects between unrelated things
"We want to design components that are self-contained: independent and with a single, well-defined purpose. Then you know that you can change one without having to worry about the rest." - Fix the problem, Not the Blame
"It doesn't really matter whether the bug is your fault or someone else's - it is still your problem and it still needs to be fixed." - Don't Panic When Debugging
"Take a deep breath and think about what could be causing the bug." - You Can't Write Perfect Software
"Software can't be perfect. Protect your code and users from the inevitable errors." - Configure, Don't Integrate
"Implement technology choices for an application as configuration iptions, not through integration or engineering." - Separate Views from Models
"Gain flexibility at low cost by designing your application in terms of models and views." This does not mean the MVC model from web development....the same concept can be applied to any application at its entirety...where the whole system support the concept of multiple views of the same data model, or common viewers on many different data models, or even multiple controllers to support various input mechanisms on the same view. - Don't Program by Coincidence
"Rely only on reliable things. Beware of accidental complexity, and don't confuse a happy coincidence with a purposeful plan." i.e. don't program by 'fluke'! Understand why something happened in such a way! - Test Your Software, or Your Users Will
"Test ruthlessly. Don't make your users find bugs for you." - Gently Exceed Your Users' Expectations
"Come to understand your users' expectations, then deliver just that little bit more." But don't overdo it....as it may be so overdone that it does not match their original concepts.
Conclusions:
Overall the book does have a lot of recommendations and ideas on how a programmer can improve their programming life. Although at places I found it to be boring to read (probably because I read it right before my sleeping time! -.-"), but I think it is definitely beneficial for all programmers to who want to better themselves to read this book. I think the book would fit better as a reference book, where you take the book out for a read when you are 'lack of motivation'.