97 Things Every Programmer Should Know HD PDF

This article along with all titles and tags are the original content of AppNee. All rights reserved. To repost or reproduce, you must add an explicit footnote along with the URL to this article!
Any manual or automated whole-website collecting/crawling behaviors are strictly prohibited.
Any resources shared on AppNee are limited to personal study and research only, any form of commercial behaviors are strictly prohibited. Otherwise, you may receive a variety of copyright complaints and have to deal with them by yourself.
Before using (especially downloading) any resources shared by AppNee, please first go to read our F.A.Q. page more or less. Otherwise, please bear all the consequences by yourself.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

97 Things Every Programmer Should Know is co-written by 73 different authors working in the software industry. The content is some of their experiences summed up in their work. Based on their practical experience in various aspects of software engineering, they expressed their own opinions and put forward their own insights. These experiences cover many aspects such as user requirements, system analysis and design, coding practices, coding style, bug management and project management. Programmers from all fields can find content of interest to them, so this book is suitable for reading by programmers at different levels.

The great thing about this book is that it doesn’t just apply to Java programming. Of course, some chapters cover Java, but there are other topics as well. Things like understanding your container environment, how to deliver software faster and better, and not hiding your development tools apply to any language development. Even better, some chapters apply equally to real-life issues. Breaking problems and tasks into small pieces is good advice for solving any problem; building a diverse team is important for all collaborators; going from loose pieces to a finished piece looks like a jigsaw player’s train of thought , but also applies to different job roles.

Each chapter is only a few pages long, and there are 97 chapters in total, so you can easily skip chapters that don’t apply to you. Whether you have been writing Java code, have only learned a little Java, or have not yet started learning Java, this will be a good book for geeks interested in code and the software development process. Its greatest value lies in the inspiration it can bring, rather than the specific practices it says. Finally, I strongly recommend that you read this book again every once in a while, so that you will have different gains.

This is a collection post for the title of 97 Things Every Programmer Should Know. AppNee shared the 3 versions of this book here: 97 Things Every Programmer Should Know, 97 Things Every Programmer Should Know – Extended, and 97 Things Every Programmer Should Know (GitBook version). They were written or organized by Kevlin Henney, Shirish Padalkar, and Dmitry Semigradsky respectively.

97 Things Every Programmer Should Know – Extended is the extended version of 97 Things Every Programmer Should Know. 97 Things Every Programmer Should Know contains amazing collection of essays about programming practices, while this book is a collection of additional 68 essays available at the site but doesn’t appear in Kevlin’s book.

// Table Of Contents //

97 Things Every Programmer Should Know
  1. Act with Prudence
  2. Apply Functional Programming Principles
  3. Ask “What Would the User Do?” (You Are not the User)
  4. Automate Your Coding Standard
  5. Beauty Is in Simplicity
  6. Before You Refactor
  7. Beware the Share
  8. The Boy Scout Rule
  9. Check Your Code First before Looking to Blame Others
  10. Choose Your Tools with Care
  11. Code in the Language of the Domain
  12. Code Is Design
  13. Code Layout Matters
  14. Code Reviews
  15. Coding with Reason
  16. A Comment on Comments
  17. Comment Only What the Code Cannot Say
  18. Continuous Learning
  19. Convenience Is not an -ility
  20. Deploy Early and Often
  21. Distinguish Business Exceptions from Technical
  22. Do Lots of Deliberate Practice
  23. Domain-Specific Languages
  24. Don’t Be Afraid to Break Things
  25. Don’t Be Cute with Your Test Data
  26. Don’t Ignore that Error!
  27. Don’t Just Learn the Language, Understand its Culture
  28. Don’t Nail Your Program into the Upright Position
  29. Don’t Rely on “Magic Happens Here”
  30. Don’t Repeat Yourself
  31. Don’t Touch that Code!
  32. Encapsulate Behavior, not Just State
  33. Floating-point Numbers Aren’t Real
  34. Fulfill Your Ambitions with Open Source
  35. The Golden Rule of API Design
  36. The Guru Myth
  37. Hard Work Does not Pay Off
  38. How to Use a Bug Tracker
  39. Improve Code by Removing It
  40. Install Me
  41. Inter-Process Communication Affects Application Response Time
  42. Keep the Build Clean
  43. Know How to Use Command-line Tools
  44. Know Well More than Two Programming Languages
  45. Know Your IDE
  46. Know Your Limits
  47. Know Your Next Commit
  48. Large Interconnected Data Belongs to a Database
  49. Learn Foreign Languages
  50. Learn to Estimate
  51. Learn to Say “Hello, World”
  52. Let Your Project Speak for Itself
  53. The Linker Is not a Magical Program
  54. The Longevity of Interim Solutions
  55. Make Interfaces Easy to Use Correctly and Hard to Use Incorrectly
  56. Make the Invisible More Visible
  57. Message Passing Leads to Better Scalability in Parallel Systems
  58. A Message to the Future
  59. Missing Opportunities for Polymorphism
  60. News of the Weird: Testers Are Your Friends
  61. One Binary
  62. Only the Code Tells the Truth
  63. Own (and Refactor) the Build
  64. Pair Program and Feel the Flow
  65. Prefer Domain-Specific Types to Primitive Types
  66. Prevent Errors
  67. The Professional Programmer
  68. Put Everything Under Version Control
  69. Put the Mouse Down and Step Away from the Keyboard
  70. Read Code
  71. Read the Humanities
  72. Reinvent the Wheel Often
  73. Resist the Temptation of the Singleton Pattern
  74. The Road to Performance Is Littered with Dirty Code Bombs
  75. Simplicity Comes from Reduction
  76. The Single Responsibility Principle
  77. Start from Yes
  78. Step Back and Automate, Automate, Automate
  79. Take Advantage of Code Analysis Tools
  80. Test for Required Behavior, not Incidental Behavior
  81. Test Precisely and Concretely
  82. Test While You Sleep (and over Weekends)
  83. Testing Is the Engineering Rigor of Software Development
  84. Thinking in States
  85. Two Heads Are Often Better than One
  86. Two Wrongs Can Make a Right (and Are Difficult to Fix)
  87. Ubuntu Coding for Your Friends
  88. The Unix Tools Are Your Friends
  89. Use the Right Algorithm and Data Structure
  90. Verbose Logging Will Disturb Your Sleep
  91. WET Dilutes Performance Bottlenecks
  92. When Programmers and Testers Collaborate
  93. Write Code as If You Had to Support It for the Rest of Your Life
  94. Write Small Functions Using Examples
  95. Write Tests for People
  96. You Gotta Care about the Code
  97. Your Customers Do not Mean What They Say
97 Things Every Programmer Should Know – Extended
  1. Abstract Data Types
  2. Acknowledge (and Learn from) Failures
  3. Anomalies Should not Be Ignored
  4. Avoid Programmer Churn and Bottlenecks
  5. Balance Duplication, Disruption, and Paralysis
  6. Be Stupid and Lazy
  7. Become Effective with Reuse
  8. Better Efficiency with Mini-Activities, Multi-Processing, and Interrupted Flow
  9. Code Is Hard to Read
  10. Consider the Hardware
  11. Continuous Refactoring
  12. Continuously Align Software to Be Reusable
  13. Data Type Tips
  14. Declarative over Imperative
  15. Decouple that UI
  16. Display Courage, Commitment, and Humility
  17. Dive into Programming
  18. Don’t Be a One Trick Pony
  19. Don’t Be too Sophisticated
  20. Don’t Reinvent the Wheel
  21. Don’t Use too Much Magic
  22. Done Means Value
  23. Execution Speed versus Maintenance Effort
  24. Expect the Unexpected
  25. First Write, Second Copy, Third Refactor
  26. From Requirements to Tables to Code and Tests
  27. How to Access Patterns
  28. Implicit Dependencies Are also Dependencies
  29. Improved Testability Leads to Better Design
  30. In the End, It’s All Communication
  31. Integrate Early and Often
  32. Interfaces Should Reveal Intention
  33. Isolate to Eliminate
  34. Keep Your Architect Busy
  35. Know When to Fail
  36. Know Your Language
  37. Learn the Platform
  38. Learn to Use a Real Editor
  39. Leave It in a Better State
  40. Methods Matter
  41. The Programmer’s New Clothes
  42. Programmers Are Mini-Project Managers
  43. Programmers Who Write Tests Get More Time to Program
  44. Push Your Limits
  45. QA Team Member as an Equal
  46. Reap What You Sow
  47. Respect the Software Release Process
  48. Restrict Mutability of State
  49. Reuse Implies Coupling
  50. Scoping Methods
  51. Simple Is not Simplistic
  52. Small!
  53. Soft Skills Matter
  54. Speed Kills
  55. Structure over Function
  56. Talk about the Trade-offs
  57. There Is Always Something More to Learn
  58. There Is No Right or Wrong
  59. There Is No Such Thing as Self-Documenting Code
  60. The Three Laws of Test-Driven Development
  61. Understand Principles behind Practices
  62. Use Aggregate Objects to Reduce Coupling
  63. Use the Same Tools in a Team
  64. Using Design Patterns to Build Reusable Software
  65. Who Will Test the Tests Themselves?
  66. Work with a Star and Get Rid of the Truck Factor
  67. Write a Test that Prints PASSED
  68. Write Code for Humans not Machines

// Download URLs //

By Format Download Size
97 Things Every Programmer Should Know
Kevlin Henney PDF 2.14 MB
97 Things Every Programmer Should Know – Extended
Shirish Padalkar PDF 676 KB
97 Things Every Programmer Should Know (GitBook version)
Dmitry Semigradsky Online n/a

(Homepage)

If some download link is missing, and you do need it, just please send an email (along with post link and missing link) to remind us to reupload the missing file for you. And, give us some time to respond.
If there is a password for an archive, it should be "appnee.com".
Most of the reserved downloads (including the 32-bit version) can be requested to reupload via email.