Thursday, June 14, 2012
The Pragmatic Programmer: From Journeyman to Master - Book Review
The Pragmatic Programmer is a must book for any developer wishing to take his profession to the next level.
The book shows you a way of thinking that will make your coding more robust, quicker, more stable and overall better quality.
The key concepts in the book are (affected by my own views):
- Learn and try new things, IDEs, Journals, magazines, books, blogs, tools, programming languages.
- Take responsibility for your code, communicate your problems, listen to the customer's desires, don't be afraid to be wrong, don't be too proud to accept criticism.
- Know what you're doing, don't guess and don't put out any fires, fix the underlying problems.
- Write good enough code, you can aim for perfect, but remember that as much as we want to, no one writes bug-free code, that doesn't say you shouldn't test and check your code.
- DRY (don't repeat yourself), be it code, documentation, etc'
- Decouple your modules.
- Write flexible code, for example, make it relatively easy to switch from mysql to postregsql.
- Learn the difference between Tracer bullets and prototypes and how and when to use each one.
- Learn to use mini-languages, scripting languages in your code, so if something changes often, is should be easy to maintain.
- Learn to estimate, data sizes, coding time, design, algorithm performance etc'.
- Learn to use tools of the trade, IDE, command line, scripting languages, code generators, pick a few and learn most if not all their features so you'll be more productive with your tools.
- Use source code control (SVN, VSS, GIT etc'), as long as you know what's been done in your code, it will be easier to solve and trace bugs, who did what for learning opportunities etc'.
- Learn to debug, visualize data, visualize program flow, throwing exceptions, error handling, know what's happening, not just what's causing the problem.
- Check resource usage.
- Design for concurrency, learn what threads are, how do they work, accessing local memory, shared memory, locks, collections, queues, what is a memory barrier, racing conditions, deadlocks, lock-free implementations.
- Understanding the O() notation.
- Better understanding of the design process, specifications, analysis.
- How to be a team of pragmatic programmers, no broken windows, no boiled frogs, DRY, good communication ,decoupling and automation.
- Automate everything, builds, tests, deployment, code generation.
- Testing - validation, verification, performance, test data.
The Pragmatic Programmer: From Journeyman to Master
Posted by Dror Gluska at 10:02 PM