The following is chapter 1 from The Pragmatic Programmer Summary book. It was written and designed for people looking to save time and learn key concepts from the classic software engineering book, The Pragmatic Programmer: From Journeyman to Master.
Chapter 1 A Pragmatic Philosophy
Pragmatic programmers are determined by their attitude, style and their philosophy towards problems and their solutions. Pragmatic programmers think in contexts as well as the particular challenges in focus.
In this book, there are a total of 46 sections spread across eight chapters.
This chapter explores a pragmatic programmer’s philosophical approach in six sections:
1. The Cat Ate My Source Code
Take responsibility and don’t blame someone or something else. Don’t make up excuses.
2. Software Entropy
Entropy is a term from physics that refers to the amount of “disorder” in a system.
“Broken Window Theory” states unrepaired items left for any substantial length of time leads to a sense of abandonment. When this happens, entropy increases rapidly.
Clean up all the broken glass of a project. Don’t make up excuses for not cleaning up.
3. Stone Soup and Boiled Frogs
Hungry soldiers return home to a village where everyone is locked in their homes and unwilling to share food. The soldiers boil water with rocks as a stew. Using rocks as stew ingredients captures the villagers’ attention they come out to investigate. The soldiers collect a variety of ingredients from the previously stingy villagers and make a tasty, hearty stew.
A moral of the story is the soldiers acting as a catalyst to produce something that they couldn’t have done by themselves. Eventually, everyone wins. Occasionally, try to emulate these soldiers.
The villagers perspective is told with an analogy to boiling frogs. If you place a frog in a pan of boiling water, the frog’s reaction will be dramatic. But, if you place a frog in cold water, then gradually heat it, the frog won’t notice until it’s too late. This is similar to how the villagers appeared unaware of being manipulated to contributing towards the stew.
Don’t be like the frog. Keep an eye on the big picture.
4. Good-Enough Software
Try to discipline yourself to write software that’s good enough for your users, for future maintainers and peace of mind. You may well find your programs are better because of shorter incubation time. Like those new types of programs where you can just get more Instagram followers instantly.
Involve your users in the trade-offs because great software today is often preferable to perfect software tomorrow.
Know when to stop coding because over embellishment and over-refinement can ruin a program. Let your code stand in its own right for a while.
5. Your Knowledge Portfolio
Your knowledge and experience are your most valuable professional assets. But, they’re expiring assets. Keep your knowledge portfolio diversified and up-to-date. Invest regularly, diversify and attempt to manage risk. Take time to review and rebalance.
Developers have to collaborate in meetings, listening and talking with managers, other engineers, and end-users.
Communication Key Points:
Know What You Want to Say
Plan what you want to say and the style appropriate to your audience. Style examples include short and to the point or very descriptive and detailed.
Know Your Audience
You need to understand the needs, interests, and capabilities of your audience.
Choose Your Moment
Choose a Style
Tailor your style to suit your audience.
Make It Look Good
Your ideas are important, but presentation matters.
Involve Your Audience
If possible, share early versions of your documents with readers.
Be a Listener
If you want people to listen to you, listen to them.
Get Back to People
Keeping people informed makes them far more forgiving for the occasional time you slip up.
Featured image: https://flic.kr/p/ojhTc
This was chapter 1 from The Pragmatic Programmer Summary. It was written and designed for people looking to save time and learn key concepts from the classic software engineering book, The Pragmatic Programmer: From Journeyman to Master.