Books & Videos

Table of Contents

  1. AT THE CODEFACE

    1. Chapter 1 ON THE DEFENSIVE

      1. Toward Good Code
      2. Assume the Worst
      3. What Is Defensive Programming?
      4. The Big, Bad World
      5. In a Nutshell
      6. See Also
      7. Get Thinking
    2. Chapter 2 THE BEST LAID PLANS

      1. What's the Big Deal?
      2. Know Your Audience
      3. What Is Good Presentation?
      4. Brace Yourself
      5. One Style to Rule Them All
      6. House Styles (and Where to Stick Them)
      7. Setting the Standard
      8. Righteous Wars?
      9. In a Nutshell
      10. See Also
      11. Get Thinking
    3. Chapter 3 WHAT'S IN A NAME?

      1. Why Should We Name Well?
      2. What Do We Name?
      3. Name Games
      4. The Nuts and Bolts
      5. A Rose by Any Other Name
      6. In a Nutshell
      7. See Also
      8. Get Thinking
    4. Chapter 4 THE WRITESTUFF

      1. Self-Documenting Code
      2. Techniques for Self-Documenting Code
      3. Practical Self-Documentation Methodologies
      4. In a Nutshell
      5. See Also
      6. Get Thinking
    5. Chapter 5 A PASSING COMMENT

      1. What Is a Code Comment?
      2. What Do Comments Look Like?
      3. How Many Comments?
      4. What Goes Inside Our Comments?
      5. In Practice
      6. A Comment on Aesthetics
      7. Working with Comments
      8. In a Nutshell
      9. See Also
      10. Get Thinking
    6. Chapter 6 TO ERR IS HUMAN

      1. From Whence It Came
      2. Error-Reporting Mechanisms
      3. Detecting Errors
      4. Handling Errors
      5. Raising Hell
      6. Managing Errors
      7. In a Nutshell
      8. See Also
      9. Get Thinking
  2. THE SECRET LIFE OF CODE

    1. Chapter 7 THE PROGRAMMER'S TOOLBOX

      1. What Is a Software Tool?
      2. Why Worry About Tools?
      3. Power Tools
      4. Which Tools?
      5. In a Nutshell
      6. See Also
      7. Get Thinking
    2. Chapter 8 TESTING TIMES

      1. Reality Check
      2. Who, What, When, and Why?
      3. Testing Isn't Hard . . .
      4. The Types of Test
      5. Choosing Unit Test Cases
      6. Design for Test
      7. Look! No Hands!
      8. The Face of Failure
      9. Can You Manage It?
      10. In a Nutshell
      11. See Also
      12. Get Thinking
    3. Chapter 9 FINDING FAULT

      1. The Facts of Life
      2. Nature of the Beast
      3. Pest Extermination
      4. Bug Hunting
      5. How to Fix Faults
      6. Prevention
      7. Wasp Spray, Slug Repellent, Fly Paper . . .
      8. In a Nutshell
      9. See Also
      10. Get Thinking
    4. Chapter 10 THE CODE THAT JACK BUILT

      1. Language Barriers
      2. Making Mountains out of Molehills
      3. Building Builds
      4. What Makes a Good Build System?
      5. The Mechanics
      6. Please Release Me
      7. Jack-of-All-Trades, Buildmaster Of?
      8. In a Nutshell
      9. See Also
      10. Get Thinking
    5. Chapter 11 THE NEED FOR SPEED

      1. What Is Optimization?
      2. What Makes Code Suboptimal?
      3. Why Not Optimize?
      4. Why Optimize?
      5. The Nuts and Bolts
      6. Optimization Techniques
      7. Writing Efficient Code
      8. In a Nutshell
      9. See Also
      10. Get Thinking
    6. Chapter 12 AN INSECURITY COMPLEX

      1. The Risks
      2. The Opposition
      3. Excuses, Excuses
      4. Feeling Vulnerable
      5. Protection Racket
      6. In a Nutshell
      7. See Also
      8. Get Thinking
  3. THE SHAPE OF CODE

    1. Chapter 13 GRAND DESIGNS

      1. Programming as Design
      2. What Do We Design?
      3. What's All the Fuss About?
      4. Good Software Design
      5. How to Design Code
      6. In a Nutshell
      7. See Also
      8. Get Thinking
    2. Chapter 14 SOFTWARE ARCHITECTURE

      1. What Is Software Architecture?
      2. What Is Good Architecture?
      3. Architectural Styles
      4. In a Nutshell
      5. See Also
      6. Get Thinking
    3. Chapter 15 SOFTWARE EVOLUTION OR SOFTWARE REVOLUTION?

      1. Software Rot
      2. The Warning Signs
      3. How Does Code Grow?
      4. Believe the Impossible
      5. What Can We Do About This?
      6. In a Nutshell
      7. See Also
      8. Get Thinking
  4. A HERD OF PROGRAMMERS?

    1. Chapter 16 CODE MONKEYS

      1. Monkey Business
      2. The Ideal Programmer
      3. So What?
      4. The Stupidest of Men
      5. In a Nutshell
      6. See Also
      7. Action Sheet
      8. Get Thinking
    2. Chapter 17 TOGETHER WE STAND

      1. Our Teams—The Big Picture
      2. Team Organization
      3. Teamwork Tools
      4. Team Diseases
      5. Personal Skills and Characteristics for Good Teamwork
      6. Teamwork Principles
      7. The Team Life Cycle
      8. In a Nutshell
      9. See Also
      10. Action Sheet
      11. Get Thinking
    3. Chapter 18 PRACTICING SAFE SOURCE

      1. Our Responsibility
      2. Source Control
      3. Configuration Management
      4. Backups
      5. Releasing Source Code
      6. Wherever I Lay My Source
      7. In a Nutshell
      8. See Also
      9. Get Thinking
  5. PART OF THE PROCESS

    1. Chapter 19 BEING SPECIFIC

      1. What Are They, Specifically?
      2. The Types of Specification
      3. What Should Specifications Contain?
      4. The Specification-Writing Process
      5. Why Don't We Write Specifications?
      6. In a Nutshell
      7. See Also
      8. Get Thinking
    2. Chapter 20 A REVIEW TO A KILL

      1. What Is a Code Review?
      2. When Do You Review?
      3. Performing Code Reviews
      4. Review Your Attitudes
      5. Code Perfection
      6. Beyond the Code Review
      7. In a Nutshell
      8. See Also
      9. Checklist
      10. Get Thinking
    3. Chapter 21 HOW LONG IS A PIECE OF STRING?

      1. A Stab in the Dark
      2. Why Is Estimation So Hard?
      3. Under Pressure
      4. Practical Ways to Estimate
      5. The Planning Game
      6. Keep Up!
      7. In a Nutshell
      8. See Also
      9. Get Thinking
  6. VIEW FROM THE TOP

    1. Chapter 22 RECIPE FOR A PROGRAM

      1. Programming Styles
      2. Recipes: The How and the What
      3. Development Processes
      4. Enough, Already!
      5. Pick a Process
      6. In a Nutshell
      7. See Also
      8. Get Thinking
    2. Chapter 23 THE OUTER LIMITS

      1. Applications Programming
      2. Games Programming
      3. Systems Programming
      4. Embedded Programming
      5. Distributed Programming
      6. Web Application Programming
      7. Enterprise Programming
      8. Numerical Programming
      9. So What?
      10. In a Nutshell
      11. See Also
      12. Get Thinking
    3. Chapter 24 WHERE NEXT?

      1. But What Now?
    4. Appendix Answers and Discussion

      1. Chapter 1: On the Defensive
      2. Chapter 2: The Best Laid Plans
      3. Chapter 3: What’s in a Name?
      4. Chapter 4: The Write Stuff
      5. Chapter 5: A Passing Comment
      6. Chapter 6: To Err Is Human
      7. Chapter 7: The Programmer’s Toolbox
      8. Chapter 8: Testing Times
      9. Chapter 9: Finding Fault
      10. Chapter 10: The Code That Jack Built
      11. Chapter 11: The Need for Speed
      12. Chapter 12: An Insecurity Complex
      13. Chapter 13: Grand Designs
      14. Chapter 14: Software Architecture
      15. Chapter 15: Software Evolution or Software Revolution?
      16. Chapter 16: Code Monkeys
      17. Chapter 17: Together We Stand
      18. Chapter 18: Practicing Safe Source
      19. Chapter 19: Being Specific
      20. Chapter 20: A Review to a Kill
      21. Chapter 21: How Long Is a Piece of String?
      22. Chapter 22: Recipe for a Program
      23. Chapter 23: The Outer Limits
    5. BIBLIOGRAPHY

  1. COLOPHON