Skip to content

Instantly share code, notes, and snippets.

@prakashmurthy
Last active November 29, 2019 14:03
Show Gist options
  • Save prakashmurthy/a0d89bee96af1a076aa0 to your computer and use it in GitHub Desktop.
Save prakashmurthy/a0d89bee96af1a076aa0 to your computer and use it in GitHub Desktop.
Links to the pages on the `97 Things Every Programmer Should Know` wiki. Maintaining this gist to keep track of the ones I have read.
  1. [Act with Prudence](http://programmer.97things.oreilly.com/wiki/index.php/Act with Prudence)

    Notes: Act with prudence and not accrue technical debt by accomplishing things in a quick and dirty manner.

  2. Apply Functional Programming Principles

  3. Ask "What Would the User Do?" (You Are not the User)

    Notes: We as programmers don't see things the same way as the users do. Need to get better at seeing past one's own experience / perceptions, and learn to see things the way users do. Best way to gather requirements is to watch users do the same activity - better than asking them about it.

  4. [Automate Your Coding Standard](http://programmer.97things.oreilly.com/wiki/index.php/Automate Your Coding Standard)

  5. [Beauty Is in Simplicity](http://programmer.97things.oreilly.com/wiki/index.php/Beauty Is in Simplicity)

  6. [Before You Refactor](http://programmer.97things.oreilly.com/wiki/index.php/Before You Refactor)

    Notes: Good set of suggestions for dealing with legacy code. I think I have not followed a couple of suggestions there in an upgrade project I completed recently.

  7. [Beware the Share](http://programmer.97things.oreilly.com/wiki/index.php/Beware the Share)

  8. [The Boy Scout Rule](http://programmer.97things.oreilly.com/wiki/index.php/The Boy Scout Rule)

Notes: Agreed. I need to get better at refactoring code + writing clean code in the first place.

  1. [Check Your Code First before Looking to Blame Others](http://programmer.97things.oreilly.com/wiki/index.php/Check Your Code First before Looking to Blame Others)

  2. [Choose Your Tools with Care](http://programmer.97things.oreilly.com/wiki/index.php/Choose Your Tools with Care)

  3. [Code in the Language of the Domain](http://programmer.97things.oreilly.com/wiki/index.php/Code in the Language of the Domain)

  4. [Code Is Design](http://programmer.97things.oreilly.com/wiki/index.php/Code Is Design)

  5. [Code Layout Matters](http://programmer.97things.oreilly.com/wiki/index.php/Code Layout Matters)

    Notes: OK. I use vim auto formatting ... :-)

  6. [Code Reviews](http://programmer.97things.oreilly.com/wiki/index.php/Code Reviews)

  7. [Coding with Reason](http://programmer.97things.oreilly.com/wiki/index.php/Coding with Reason)

  8. [A Comment on Comments](http://programmer.97things.oreilly.com/wiki/index.php/A Comment on Comments)

    Notes: Comments are not evil by themselves.

  9. [Comment Only What the Code Cannot Say](http://programmer.97things.oreilly.com/wiki/index.php/Comment Only What the Code Cannot Say)

    Notes: A far better treatment of the topic than the previous one; with a much more nuanced handling of the issues. Code Only What the Code Cannot Say

  10. [Continuous Learning](http://programmer.97things.oreilly.com/wiki/index.php/Continuous Learning)

  11. [Convenience Is not an -ility](http://programmer.97things.oreilly.com/wiki/index.php/Convenience Is not an -ility)

  12. [Deploy Early and Often](http://programmer.97things.oreilly.com/wiki/index.php/Deploy Early and Often)

  13. [Distinguish Business Exceptions from Technical](http://programmer.97things.oreilly.com/wiki/index.php/Distinguish Business Exceptions from Technical)

  14. [Do Lots of Deliberate Practice](http://programmer.97things.oreilly.com/wiki/index.php/Do Lots of Deliberate Practice)

  15. [Domain-Specific Languages](http://programmer.97things.oreilly.com/wiki/index.php/Domain-Specific Languages)

  16. [Don't Be Afraid to Break Things](http://programmer.97things.oreilly.com/wiki/index.php/Don't Be Afraid to Break Things)

  17. [Don't Be Cute with Your Test Data](http://programmer.97things.oreilly.com/wiki/index.php/Don't Be Cute with Your Test Data)

  18. [Don't Ignore that Error!](http://programmer.97things.oreilly.com/wiki/index.php/Don't Ignore that Error!)

  19. [Don't Just Learn the Language, Understand its Culture](http://programmer.97things.oreilly.com/wiki/index.php/Don't Just Learn the Language, Understand its Culture)

  20. [Don't Nail Your Program into the Upright Position](http://programmer.97things.oreilly.com/wiki/index.php/Don't Nail Your Program into the Upright Position)

  21. [Don't Rely on "Magic Happens Here"](http://programmer.97things.oreilly.com/wiki/index.php/Don't Rely on "Magic Happens Here")

  22. [Don't Repeat Yourself](http://programmer.97things.oreilly.com/wiki/index.php/Don't Repeat Yourself)

  23. [Don't Touch that Code!](http://programmer.97things.oreilly.com/wiki/index.php/Don't Touch that Code!)

  24. [Encapsulate Behavior, not Just State](http://programmer.97things.oreilly.com/wiki/index.php/Encapsulate Behavior, not Just State)

  25. [Floating-point Numbers Aren't Real](http://programmer.97things.oreilly.com/wiki/index.php/Floating-point Numbers Aren't Real)

  26. [Fulfill Your Ambitions with Open Source](http://programmer.97things.oreilly.com/wiki/index.php/Fulfill Your Ambitions with Open Source)

  27. [The Golden Rule of API Design](http://programmer.97things.oreilly.com/wiki/index.php/The Golden Rule of API Design)

  28. [The Guru Myth](http://programmer.97things.oreilly.com/wiki/index.php/The Guru Myth)

  29. [Hard Work Does not Pay Off](http://programmer.97things.oreilly.com/wiki/index.php/Hard Work Does not Pay Off)

  30. [How to Use a Bug Tracker](http://programmer.97things.oreilly.com/wiki/index.php/How to Use a Bug Tracker)

  31. Improve Code by Removing It

Summary : Extra code snowballs over time into a large piece of work that requires maintenance. Avoid adding code unnecessarily. YAGNI.

  1. [Install Me](http://programmer.97things.oreilly.com/wiki/index.php/Install Me)

  2. [Inter-Process Communication Affects Application Response Time](http://programmer.97things.oreilly.com/wiki/index.php/Inter-Process Communication Affects Application Response Time)

  3. [Keep the Build Clean](http://programmer.97things.oreilly.com/wiki/index.php/Keep the Build Clean)

  4. [Know How to Use Command-line Tools](http://programmer.97things.oreilly.com/wiki/index.php/Know How to Use Command-line Tools)

  5. [Know Well More than Two Programming Languages](http://programmer.97things.oreilly.com/wiki/index.php/Know Well More than Two Programming Languages)

  6. [Know Your IDE](http://programmer.97things.oreilly.com/wiki/index.php/Know Your IDE)

  7. [Know Your Limits](http://programmer.97things.oreilly.com/wiki/index.php/Know Your Limits)

  8. [Know Your Next Commit](http://programmer.97things.oreilly.com/wiki/index.php/Know Your Next Commit)

  9. [Large Interconnected Data Belongs to a Database](http://programmer.97things.oreilly.com/wiki/index.php/Large Interconnected Data Belongs to a Database)

  10. [Learn Foreign Languages](http://programmer.97things.oreilly.com/wiki/index.php/Learn Foreign Languages)

  11. [Learn to Estimate](http://programmer.97things.oreilly.com/wiki/index.php/Learn to Estimate)

  12. [Learn to Say "Hello, World"](http://programmer.97things.oreilly.com/wiki/index.php/Learn to Say "Hello, World")

  13. [Let Your Project Speak for Itself](http://programmer.97things.oreilly.com/wiki/index.php/Let Your Project Speak for Itself)

  14. [The Linker Is not a Magical Program](http://programmer.97things.oreilly.com/wiki/index.php/The Linker Is not a Magical Program)

  15. [The Longevity of Interim Solutions](http://programmer.97things.oreilly.com/wiki/index.php/The Longevity of Interim Solutions)

  16. [Make Interfaces Easy to Use Correctly and Hard to Use Incorrectly](http://programmer.97things.oreilly.com/wiki/index.php/Make Interfaces Easy to Use Correctly and Hard to Use Incorrectly)

  17. [Make the Invisible More Visible](http://programmer.97things.oreilly.com/wiki/index.php/Make the Invisible More Visible)

  18. [Message Passing Leads to Better Scalability in Parallel Systems](http://programmer.97things.oreilly.com/wiki/index.php/Message Passing Leads to Better Scalability in Parallel Systems)

  19. [A Message to the Future](http://programmer.97things.oreilly.com/wiki/index.php/A Message to the Future)

  20. [Missing Opportunities for Polymorphism](http://programmer.97things.oreilly.com/wiki/index.php/Missing Opportunities for Polymorphism)

  21. [News of the Weird: Testers Are Your Friends](http://programmer.97things.oreilly.com/wiki/index.php/News of the Weird: Testers Are Your Friends)

  22. [One Binary](http://programmer.97things.oreilly.com/wiki/index.php/One Binary)

  23. [Only the Code Tells the Truth](http://programmer.97things.oreilly.com/wiki/index.php/Only the Code Tells the Truth)

  24. Own (and Refactor) the Build

  25. [Pair Program and Feel the Flow](http://programmer.97things.oreilly.com/wiki/index.php/Pair Program and Feel the Flow)

  26. [Prefer Domain-Specific Types to Primitive Types](http://programmer.97things.oreilly.com/wiki/index.php/Prefer Domain-Specific Types to Primitive Types)

  27. [Prevent Errors](http://programmer.97things.oreilly.com/wiki/index.php/Prevent Errors)

  28. [The Professional Programmer](http://programmer.97things.oreilly.com/wiki/index.php/The Professional Programmer)

  29. [Put Everything Under Version Control](http://programmer.97things.oreilly.com/wiki/index.php/Put Everything Under Version Control)

  30. [Put the Mouse Down and Step Away from the Keyboard](http://programmer.97things.oreilly.com/wiki/index.php/Put the Mouse Down and Step Away from the Keyboard)

  31. [Read Code](http://programmer.97things.oreilly.com/wiki/index.php/Read Code)

  32. [Read the Humanities](http://programmer.97things.oreilly.com/wiki/index.php/Read the Humanities)

  33. [Reinvent the Wheel Often](http://programmer.97things.oreilly.com/wiki/index.php/Reinvent the Wheel Often)

  34. [Resist the Temptation of the Singleton Pattern](http://programmer.97things.oreilly.com/wiki/index.php/Resist the Temptation of the Singleton Pattern)

  35. [The Road to Performance Is Littered with Dirty Code Bombs](http://programmer.97things.oreilly.com/wiki/index.php/The Road to Performance Is Littered with Dirty Code Bombs)

  36. [Simplicity Comes from Reduction](http://programmer.97things.oreilly.com/wiki/index.php/Simplicity Comes from Reduction)

  37. [The Single Responsibility Principle](http://programmer.97things.oreilly.com/wiki/index.php/The Single Responsibility Principle)

  38. [Start from Yes](http://programmer.97things.oreilly.com/wiki/index.php/Start from Yes)

  39. [Step Back and Automate, Automate, Automate](http://programmer.97things.oreilly.com/wiki/index.php/Step Back and Automate, Automate, Automate)

  40. [Take Advantage of Code Analysis Tools](http://programmer.97things.oreilly.com/wiki/index.php/Take Advantage of Code Analysis Tools)

  41. [Test for Required Behavior, not Incidental Behavior](http://programmer.97things.oreilly.com/wiki/index.php/Test for Required Behavior, not Incidental Behavior)

  42. [Test Precisely and Concretely](http://programmer.97things.oreilly.com/wiki/index.php/Test Precisely and Concretely)

  43. Test While You Sleep (and over Weekends)

  44. [Testing Is the Engineering Rigor of Software Development](http://programmer.97things.oreilly.com/wiki/index.php/Testing Is the Engineering Rigor of Software Development)

  45. [Thinking in States](http://programmer.97things.oreilly.com/wiki/index.php/Thinking in States)

  46. [Two Heads Are Often Better than One](http://programmer.97things.oreilly.com/wiki/index.php/Two Heads Are Often Better than One)

  47. Two Wrongs Can Make a Right (and Are Difficult to Fix)

    Notes: Interesting case to be aware of.

  48. [Ubuntu Coding for Your Friends](http://programmer.97things.oreilly.com/wiki/index.php/Ubuntu Coding for Your Friends)

  49. [The Unix Tools Are Your Friends](http://programmer.97things.oreilly.com/wiki/index.php/The Unix Tools Are Your Friends)

  50. [Use the Right Algorithm and Data Structure](http://programmer.97things.oreilly.com/wiki/index.php/Use the Right Algorithm and Data Structure)

  51. [Verbose Logging Will Disturb Your Sleep](http://programmer.97things.oreilly.com/wiki/index.php/Verbose Logging Will Disturb Your Sleep)

  52. [WET Dilutes Performance Bottlenecks](http://programmer.97things.oreilly.com/wiki/index.php/WET Dilutes Performance Bottlenecks)

  53. [When Programmers and Testers Collaborate](http://programmer.97things.oreilly.com/wiki/index.php/When Programmers and Testers Collaborate)

  54. [Write Code as If You Had to Support It for the Rest of Your Life](http://programmer.97things.oreilly.com/wiki/index.php/Write Code as If You Had to Support It for the Rest of Your Life)

  55. [Write Small Functions Using Examples](http://programmer.97things.oreilly.com/wiki/index.php/Write Small Functions Using Examples)

  56. [Write Tests for People](http://programmer.97things.oreilly.com/wiki/index.php/Write Tests for People)

  57. [You Gotta Care about the Code](http://programmer.97things.oreilly.com/wiki/index.php/You Gotta Care about the Code)

  58. [Your Customers Do not Mean What They Say](http://programmer.97things.oreilly.com/wiki/index.php/Your Customers Do not Mean What They Say)

@blundell
Copy link

Your links are dead

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment