"The Pragmatic Programmer" book notes
Published at 2023-03-16T00:55:20+02:00
These are my personal takeaways after reading "The Pragmatic Programmer" by David Thomas and Andrew Hunt. Note that the book contains much more knowledge wisdom and that these notes only contain points I personally found worth writing down. This is mainly for my own use, but you might find it helpful too.
,.......... ..........,
,..,' '.' ',..,
,' ,' : ', ',
,' ,' : ', ',
,' ,' : ', ',
,' ,'............., : ,.............', ',
,' '............ '.' ............' ',
'''''''''''''''''';''';''''''''''''''''''
'''
Think about your work while doing it - every day on every project. Have a feeling of continuous improvement.
- Be a realist.
- Smell challenges.
- Care about your craft.
- Code can always be flawed, but it can meet the requirements.
- You should be proud of your code, though.
No one writes perfect code, including you. However:
- Paranoia is good thinking.
- Practice defensive programming and crash early.
- Crashing is often the best thing you can do.
- Changes should be reversible.
Erlang: Defensive programming is a waste of time. Let it crash. "This can never happen" - don't practise that kind of self-deception when programming.
Leave assertions in the code, even in production. Only leave out the assertions causing the performance issues.
Take small steps, always. Get feedback, too, for each of the steps the code does. Avoid fortune telling. If you have to involve in it, then the step is too large.
Decouple the code (e.g. OOP or functional programming). Prefer interfaces for types and mixins for a class extension over class inheritance.
- Refactor now and not later.
- Later, it will be even more painful.
Don't think outside the box. Find the box. The box is more extensive than you think. Think about the hard problem at hand. Do you have to do it a certain way, or do you have to do it at all?
Do what works and not what's fashionable. E.g. does SCRUM make sense? The goal is to deliver deliverables and not to "become" agile.
Continuous learning
Add new tools to your repertoire every day and keep the momentum up. Learning new things is your most crucial aspect. Invest regularly in your knowledge portfolio. The learning process extends your thinking. It does not matter if you will never use it.
- Learn a new programming language every year.
- Read a technical book every month.
- Take courses.
Think critically about everything you learn. Use paper for your notes. There is something special about it.
Stay connected
It's your life, and you own it. Bruce Lee once said:
"I am not on the world to life after your expectations, neither are you to life after mine."
- Go to meet-ups and actively engage.
- Stay current.
- Dealing with computers is hard. Dealing with people is harder.
It's your life. Share it, celebrate it, be proud and have fun.
The story of stone soup
How to motivate others to contribute something (e.g. ideas to a startup):
A kindly, old stranger was walking through the land when he came upon a village. As he entered, the villagers moved towards their homes, locking doors and windows. The stranger smiled and asked, why are you all so frightened. I am a simple traveler, looking for a soft place to stay for the night and a warm place for a meal. "There's not a bite to eat in the whole province," he was told. "We are weak and our children are starving. Better keep moving on." "Oh, I have everything I need," he said. "In fact, I was thinking of making some stone soup to share with all of you." He pulled an iron cauldron from his cloak, filled it with water, and began to build a fire under it. Then, with great ceremony, he drew an ordinary-looking stone from a silken bag and dropped it into the water. By now, hearing the rumor of food, most of the villagers had come out of their homes or watched from their windows. As the stranger sniffed the "broth" and licked his lips in anticipation, hunger began to overcome their fear. "Ahh," the stranger said to himself rather loudly, "I do like a tasty stone soup. Of course, stone soup with cabbage -- that's hard to beat." Soon a villager approached hesitantly, holding a small cabbage he'd retrieved from its hiding place, and added it to the pot. "Wonderful!!" cried the stranger. "You know, I once had stone soup with cabbage and a bit of salt beef as well, and it was fit for a king." The village butcher managed to find some salt beef . . . And so it went, through potatoes, onions, carrots, mushrooms, and so on, until there was indeed a delicious meal for everyone in the village to share. The village elder offered the stranger a great deal of money for the magic stone, but he refused to sell it and traveled on the next day. As he left, the stranger came upon a group of village children standing near the road. He gave the silken bag containing the stone to the youngest child, whispering to a group, "It was not the stone, but the villagers that had performed the magic."
By working together, everyone contributes what they can, achieving a greater good together.
E-Mail your comments to paul@nospam.buetow.org :-)
Other book notes of mine are:
2023-03-16 "The Pragmatic Programmer" book notes (You are currently reading this)
2023-04-01 "Never split the difference" book notes
2023-05-06 "The Obstacle is the Way" book notes
2023-07-17 "Software Developmers Career Guide and Soft Skills" book notes
2023-11-11 "Mind Management" book notes
2024-05-01 "Slow Productivity" book notes
2024-07-07 "The Stoic Challenge" book notes
2024-10-24 "Staff Engineer" book notes
Back to the main site