Summary of Seven Strategies Series

I finished my “Seven Strategies” series of 72 blog posts with seven strategies for implementing each of the nine practices from my book, Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your Software. These posts are filled with practical advice for implementing the nine core practices from Scrum, Extreme Programming, and Lean.

Here are the posts, enjoy!

Why Practice 1: Say What, Why, and for Whom Before How

  1. Be the SME
  2. Use Development for Discovery
  3. Help Developers Understand Why and for Whom
  4. Describe What You Want Not How to Get It
  5. Answer Questions Quickly
  6. Remove Dependencies
  7. Support Refactoring

Why Practice 2: Build in Small Batches

  1. Measure Time-to-Value
  2. Measure Time Spent Coding
  3. Measure Defect Density
  4. Measure Time to Detect Defects
  5. Measure Customer Value of Features
  6. Measure Costs of Not Delivering Features
  7. Measure Efficiency of Feedback Loops

Why Practice 3: Integrate Continuously

  1. Use Version Control for Everything
  2. One-Click Builds End-to-End
  3. Integrate Continuously
  4. Define Acceptance Criteria
  5. Write Testable Code
  6. Keep Test Coverage Where it is Needed
  7. Fix Broken Builds Immediately

Why Practice 4: Collaborate

  1. Try It, You’ll Like It
  2. Engage Driver and Navigator
  3. Swap Roles Frequently
  4. Put in an Honest Day
  5. Try All Configurations
  6. Let Teams Decide on the Details
  7. Track Progress

Why Practice 5: Create CLEAN Code

  1. Get Crisp on the Definition of Quality
  2. Share Common Quality Practices
  3. Let Go of Perfectionism
  4. Understand Trade-Offs
  5. Hide How with What
  6. Name Things Well
  7. Keep Code Testable

Why Practice 6: Write the Test First

  1. Get Clear on the Benefits of What You are Building
  2. Know Who it’s for and Why They Want it
  3. Automate Acceptance Criteria
  4. Specify Edge Cases
  5. Use Examples
  6. Split Behaviors on Acceptance Criteria
  7. Make Each Test Unique

Why Practice 7: Specify Behaviors with Tests

  1. Instrument Your TestsUse Helper Methods
  2. Use Helper Methods
  3. Show What’s Important
  4. Test Behaviors, Not Implementations
  5. Use Mocks to Test Workflows
  6. Avoid Over-Specifying Tests
  7. Use Accurate Examples

Why Practice 8: Implement the Design Last

  1. Understand Object-Oriented Design
  2. Understand Design Patterns
  3. Understand Test-Driven Development
  4. Understand Refactoring
  5. Focus on Code Quality
  6. Be Merciless
  7. Practice Good Development Habits

Why Practice 9: Refactor Legacy Code

  1. Refactor to Learn an Existing System
  2. Refactor to Make Small Improvements
  3. Refactor to Retrofit Tests in Legacy Code
  4. Refactor to Clean Up as You Go
  5. Refactor to Redesign When You Know More
  6. Refactor to Clean Up Before Moving On
  7. Refactor to Learn What Not to Do


Roberto Di Paolo

I support your IT projects in Japan. (Disclaimer: I use AI but not on LinkedIn. Everything I post is in my own wording without using any AI or bot)

4 å¹´

Excellent advice and food for thought. Thanks for this post!

要查看或添加评论,请登录

David Scott Bernstein的更多文章

  • Green Tests and Red Tests

    Green Tests and Red Tests

    In practice, I found that there are times that I want a bit more test coverage than I get from just doing test-first…

  • Radiators and Silos

    Radiators and Silos

    In the old days of corporate America, the way you got ahead was through hard work and perseverance. You strove to…

    1 条评论
  • Makers and Menders

    Makers and Menders

    I’ve been getting back into some research interests of mine that require data acquisition from a variety of sensors so…

  • Core Developer Practices

    Core Developer Practices

    Every field of engineering has a core set of practices that they follow and software engineering is no different. But…

    1 条评论
  • Still XP After All These Years

    Still XP After All These Years

    Are you humming in your head Paul Simon’s “Still Crazy After All These Years”? I am. And it does seem crazy.

  • The Importance of Continuous Integration

    The Importance of Continuous Integration

    Perhaps the most important yet easiest to implement of all the software development practices in Agile is continuous…

  • The Importance of Technical Practices (Again)

    The Importance of Technical Practices (Again)

    Software development has undergone many revolutions over the last few decades. The way we build software today is…

  • Refactor to Learn What Not to Do

    Refactor to Learn What Not to Do

    One of the things that I was not expecting when I started refactoring other people’s code was that I started to see…

    4 条评论
  • Refactor to Clean Up Before Moving On

    Refactor to Clean Up Before Moving On

    Of course, the best time to refactor code is while it’s fresh in your mind, right after having worked with it. Once I…

  • Refactor to Redesign When You Know More

    Refactor to Redesign When You Know More

    One of the reasons that I’m such a proponent of doing emergent design or just-in-time design, is that this is how we…

    2 条评论

社区洞察

其他会员也浏览了