A Pragmatic Philosophy of a Programmer
Tags: programming, pragmaticprogramming, coding, lifelessons
Published: 2020-03-23 05:00:25

---
title: A Pragmatic Philosophy of a Programmer
published: true
description: A review from The Pragmatic Programmer, 20th Anniversary Edition
tags: Programming, Pragmatic Programming, Coding, Life Lessons
---

Programming is somewhat similar to our life journey. There is no absolute answer for every situation. We learn and grow by time and experiences.
Take a step back from packed schedules and deadlines, rethink what is truly essential for us. That is how philosophy comes into play.

1. It’s your life —
With the convenience brought by technology, we can decide how we work, how we live. To a certain extent, who we want to be. As a programmer, care about your craft. Think about what legacy you would like to leave behind. It’s all about your life and your personal growth. Our crafts reflect who we are. Be proactive!

2. The cat ate my source code —
单丝不成线，独木不成林
(A single thread can’t make a cord nor a single tree a forest. — Chinese Proverb)

No one can succeed without a team.
It is so obvious that one man show is definitely not a good idea if we would like to succeed.
No one is perfect and no one has all knowledge with oneself. We need to work in a team. Be frank, admit our weakness, putting our strength together. Trust is the simplest yet crucial element to bond everyone in a team. Create an environment where you can say your mind, present your ideas comfortably.
Don’t blame each other or give lame excuses when things go wrong. Provide workable and reasonable solutions instead. Take our responsibilities, be reliable and trustworthy.

3. Software Entropy —
Just imagine that we are a group of people sailing in the same boat when we work on the same project. A leak on a boat which is similar to wrong decisions or code made in a project (aka software rot or technical debt), leads everyone into danger.
It is our responsibility to fix it. Do not keep broken windows unrepaired even if the deadline is near. If it is not a serious one, flag it at least and fix it later.

4. Stone soup and boiled frogs —
Most of us tend to stay in our comfort zones in most of the time, without realizing that changes can help us to improve. Think out of the box and aware with the situations around. Be a catalyst for changes. Talk wisely and make changes gradually. We will grow and share the fruits one day.

5. Good Enough Software —
画蛇添足 (Draw legs on snake) ~ Chinese Idiom
https://www.chinesereadersguild.com/chinese-idiom-story-hua-she-tian-zu/
Meaning: Ruining a thing by adding something unnecessary
Identify the expectation based on timeline and the resources given. Give the best for programmers, end users and future code maintainers. Nothing is always perfect. We need to know when to stop. Do not kill the good programme with over refinement.

6. Your Knowledge Portfolio —
An investment in knowledge always pays the best interest. ~ Benjamin Franklin
Don’t put all your eggs in one basket ~ Idiom
Invest regularly with diversities. Grab opportunities to learn under different environments. Learn a new language, try to understand the reason one paradigm is being introduced. It may enlighten you to think out of the box. Read technical and non technical books. Try to be skeptical and analyze what you have heard or read about.

7. Communications —
A great idea without effective communications is like an orphan. Know your audience, listen to and involve them in the conversations. Choose the right moment and be clear on what you are trying to convey. Keep a good documentation for reference.
Please bear in mind that becoming a pragmatic programmer is a process. It takes time and persistence to bear fruits.
Happy exploring!

P/S: A review from The Pragmatic Programmer, 20th Anniversary Edition