> For the complete documentation index, see [llms.txt](https://97-things-every-x-should-know.gitbook.io/97-things-every-programmer-should-know/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://97-things-every-x-should-know.gitbook.io/97-things-every-programmer-should-know/en/summary.md).

# Summary

* [Introduction](/97-things-every-programmer-should-know/en.md)

1. [Act with Prudence](/97-things-every-programmer-should-know/en/thing_01.md)
2. [Apply Functional Programming Principles](/97-things-every-programmer-should-know/en/thing_02.md)
3. [Ask "What Would the User Do?" (You Are not the User)](/97-things-every-programmer-should-know/en/thing_03.md)
4. [Automate Your Coding Standard](/97-things-every-programmer-should-know/en/thing_04.md)
5. [Beauty Is in Simplicity](/97-things-every-programmer-should-know/en/thing_05.md)
6. [Before You Refactor](/97-things-every-programmer-should-know/en/thing_06.md)
7. [Beware the Share](/97-things-every-programmer-should-know/en/thing_07.md)
8. [The Boy Scout Rule](/97-things-every-programmer-should-know/en/thing_08.md)
9. [Check Your Code First before Looking to Blame Others](/97-things-every-programmer-should-know/en/thing_09.md)
10. [Choose Your Tools with Care](/97-things-every-programmer-should-know/en/thing_10.md)
11. [Code in the Language of the Domain](/97-things-every-programmer-should-know/en/thing_11.md)
12. [Code Is Design](/97-things-every-programmer-should-know/en/thing_12.md)
13. [Code Layout Matters](/97-things-every-programmer-should-know/en/thing_13.md)
14. [Code Reviews](/97-things-every-programmer-should-know/en/thing_14.md)
15. [Coding with Reason](/97-things-every-programmer-should-know/en/thing_15.md)
16. [A Comment on Comments](/97-things-every-programmer-should-know/en/thing_16.md)
17. [Comment Only What the Code Cannot Say](/97-things-every-programmer-should-know/en/thing_17.md)
18. [Continuous Learning](/97-things-every-programmer-should-know/en/thing_18.md)
19. [Convenience Is not an -ility](/97-things-every-programmer-should-know/en/thing_19.md)
20. [Deploy Early and Often](/97-things-every-programmer-should-know/en/thing_20.md)
21. [Distinguish Business Exceptions from Technical](/97-things-every-programmer-should-know/en/thing_21.md)
22. [Do Lots of Deliberate Practice](/97-things-every-programmer-should-know/en/thing_22.md)
23. [Domain-Specific Languages](/97-things-every-programmer-should-know/en/thing_23.md)
24. [Don't Be Afraid to Break Things](/97-things-every-programmer-should-know/en/thing_24.md)
25. [Don't Be Cute with Your Test Data](/97-things-every-programmer-should-know/en/thing_25.md)
26. [Don't Ignore that Error!](/97-things-every-programmer-should-know/en/thing_26.md)
27. [Don't Just Learn the Language, Understand its Culture](/97-things-every-programmer-should-know/en/thing_27.md)
28. [Don't Nail Your Program into the Upright Position](/97-things-every-programmer-should-know/en/thing_28.md)
29. [Don't Rely on "Magic Happens Here"](/97-things-every-programmer-should-know/en/thing_29.md)
30. [Don't Repeat Yourself](/97-things-every-programmer-should-know/en/thing_30.md)
31. [Don't Touch that Code!](/97-things-every-programmer-should-know/en/thing_31.md)
32. [Encapsulate Behavior, not Just State](/97-things-every-programmer-should-know/en/thing_32.md)
33. [Floating-point Numbers Aren't Real](/97-things-every-programmer-should-know/en/thing_33.md)
34. [Fulfill Your Ambitions with Open Source](/97-things-every-programmer-should-know/en/thing_34.md)
35. [The Golden Rule of API Design](/97-things-every-programmer-should-know/en/thing_35.md)
36. [The Guru Myth](/97-things-every-programmer-should-know/en/thing_36.md)
37. [Hard Work Does not Pay Off](/97-things-every-programmer-should-know/en/thing_37.md)
38. [How to Use a Bug Tracker](/97-things-every-programmer-should-know/en/thing_38.md)
39. [Improve Code by Removing It](/97-things-every-programmer-should-know/en/thing_39.md)
40. [Install Me](/97-things-every-programmer-should-know/en/thing_40.md)
41. [Inter-Process Communication Affects Application Response Time](/97-things-every-programmer-should-know/en/thing_41.md)
42. [Keep the Build Clean](/97-things-every-programmer-should-know/en/thing_42.md)
43. [Know How to Use Command-line Tools](/97-things-every-programmer-should-know/en/thing_43.md)
44. [Know Well More than Two Programming Languages](/97-things-every-programmer-should-know/en/thing_44.md)
45. [Know Your IDE](/97-things-every-programmer-should-know/en/thing_45.md)
46. [Know Your Limits](/97-things-every-programmer-should-know/en/thing_46.md)
47. [Know Your Next Commit](/97-things-every-programmer-should-know/en/thing_47.md)
48. [Large Interconnected Data Belongs to a Database](/97-things-every-programmer-should-know/en/thing_48.md)
49. [Learn Foreign Languages](/97-things-every-programmer-should-know/en/thing_49.md)
50. [Learn to Estimate](/97-things-every-programmer-should-know/en/thing_50.md)
51. [Learn to Say "Hello, World"](/97-things-every-programmer-should-know/en/thing_51.md)
52. [Let Your Project Speak for Itself](/97-things-every-programmer-should-know/en/thing_52.md)
53. [The Linker Is not a Magical Program](/97-things-every-programmer-should-know/en/thing_53.md)
54. [The Longevity of Interim Solutions](/97-things-every-programmer-should-know/en/thing_54.md)
55. [Make Interfaces Easy to Use Correctly and Hard to Use Incorrectly](/97-things-every-programmer-should-know/en/thing_55.md)
56. [Make the Invisible More Visible](/97-things-every-programmer-should-know/en/thing_56.md)
57. [Message Passing Leads to Better Scalability in Parallel Systems](/97-things-every-programmer-should-know/en/thing_57.md)
58. [A Message to the Future](/97-things-every-programmer-should-know/en/thing_58.md)
59. [Missing Opportunities for Polymorphism](/97-things-every-programmer-should-know/en/thing_59.md)
60. [News of the Weird: Testers Are Your Friends](/97-things-every-programmer-should-know/en/thing_60.md)
61. [One Binary](/97-things-every-programmer-should-know/en/thing_61.md)
62. [Only the Code Tells the Truth](/97-things-every-programmer-should-know/en/thing_62.md)
63. [Own (and Refactor) the Build](/97-things-every-programmer-should-know/en/thing_63.md)
64. [Pair Program and Feel the Flow](/97-things-every-programmer-should-know/en/thing_64.md)
65. [Prefer Domain-Specific Types to Primitive Types](/97-things-every-programmer-should-know/en/thing_65.md)
66. [Prevent Errors](/97-things-every-programmer-should-know/en/thing_66.md)
67. [The Professional Programmer](/97-things-every-programmer-should-know/en/thing_67.md)
68. [Put Everything Under Version Control](/97-things-every-programmer-should-know/en/thing_68.md)
69. [Put the Mouse Down and Step Away from the Keyboard](/97-things-every-programmer-should-know/en/thing_69.md)
70. [Read Code](/97-things-every-programmer-should-know/en/thing_70.md)
71. [Read the Humanities](/97-things-every-programmer-should-know/en/thing_71.md)
72. [Reinvent the Wheel Often](/97-things-every-programmer-should-know/en/thing_72.md)
73. [Resist the Temptation of the Singleton Pattern](/97-things-every-programmer-should-know/en/thing_73.md)
74. [The Road to Performance Is Littered with Dirty Code Bombs](/97-things-every-programmer-should-know/en/thing_74.md)
75. [Simplicity Comes from Reduction](/97-things-every-programmer-should-know/en/thing_75.md)
76. [The Single Responsibility Principle](/97-things-every-programmer-should-know/en/thing_76.md)
77. [Start from Yes](/97-things-every-programmer-should-know/en/thing_77.md)
78. [Step Back and Automate, Automate, Automate](/97-things-every-programmer-should-know/en/thing_78.md)
79. [Take Advantage of Code Analysis Tools](/97-things-every-programmer-should-know/en/thing_79.md)
80. [Test for Required Behavior, not Incidental Behavior](/97-things-every-programmer-should-know/en/thing_80.md)
81. [Test Precisely and Concretely](/97-things-every-programmer-should-know/en/thing_81.md)
82. [Test While You Sleep (and over Weekends)](/97-things-every-programmer-should-know/en/thing_82.md)
83. [Testing Is the Engineering Rigor of Software Development](/97-things-every-programmer-should-know/en/thing_83.md)
84. [Thinking in States](/97-things-every-programmer-should-know/en/thing_84.md)
85. [Two Heads Are Often Better than One](/97-things-every-programmer-should-know/en/thing_85.md)
86. [Two Wrongs Can Make a Right (and Are Difficult to Fix)](/97-things-every-programmer-should-know/en/thing_86.md)
87. [Ubuntu Coding for Your Friends](/97-things-every-programmer-should-know/en/thing_87.md)
88. [The Unix Tools Are Your Friends](/97-things-every-programmer-should-know/en/thing_88.md)
89. [Use the Right Algorithm and Data Structure](/97-things-every-programmer-should-know/en/thing_89.md)
90. [Verbose Logging Will Disturb Your Sleep](/97-things-every-programmer-should-know/en/thing_90.md)
91. [WET Dilutes Performance Bottlenecks](/97-things-every-programmer-should-know/en/thing_91.md)
92. [When Programmers and Testers Collaborate](/97-things-every-programmer-should-know/en/thing_92.md)
93. [Write Code as If You Had to Support It for the Rest of Your Life](/97-things-every-programmer-should-know/en/thing_93.md)
94. [Write Small Functions Using Examples](/97-things-every-programmer-should-know/en/thing_94.md)
95. [Write Tests for People](/97-things-every-programmer-should-know/en/thing_95.md)
96. [You Gotta Care about the Code](/97-things-every-programmer-should-know/en/thing_96.md)
97. [Your Customers Do not Mean What They Say](/97-things-every-programmer-should-know/en/thing_97.md)
