Art of Software Reuse
  • About
  • Introduction
  • Why Do Reuse Efforts Fail?
    • Common Pitfalls
    • Conway's Law
    • Care About Risks
    • Pursuing Perfection
    • Lack of Domain Focus
    • Entropy
  • Tenets
  • Success Factors
    • Revisit Assumptions
    • Communicate, Constantly
    • Collaborate
    • Review Code
    • Be Domain Driven
    • Target Quick Wins
    • Reduce Friction
    • Document
    • Build for Immediate Use
    • Address Support Needs
    • Managing Complexity
  • Practices
    • Minimise Jargon
    • Leverage Interception Points
    • Delay Commitment
    • Never Waste A Production Incident
    • Be Disciplined
    • Be Demand Driven
    • Continuous Alignment
    • Iterate, Iterate, Iterate
    • Build a Product Line
    • Understand Lack of Reuse
  • Design
    • Wrap Legacy APIs
    • Think Products, Not Applications
    • Identify Common Needs
    • Create Common Connectivity Components
    • Consistent APIs
    • Manage Domain Variations
    • Evolve Functionality Iteratively
    • Offer Reusable Assets with Multiple Interfaces
    • Leverage Services Across Functional Flows
    • Mediate Service Requests & Responses
    • Refactoring
    • Abstract Utility Functions
    • Reduce Technical Debt
    • Facilitate Extensibility
    • Encapsulate Variations Using Patterns
    • Understand Adoption Barriers
    • Ease Testability
    • Supportability
  • Tips
  • Resources
Powered by GitBook
On this page

Was this helpful?

  1. Practices

Be Disciplined

PreviousNever Waste A Production IncidentNextBe Demand Driven

Last updated 5 years ago

Was this helpful?

Instead of looking at systematic reuse a separate analysis, design, and implementation effort that requires lots of time and resources view it as being part of what you do. Practice a few techniques with every project, every single day. When your development activities are aligned with a systematic reuse roadmap your activities are aligned towards delivering today’s needs and positioning you for the future. Think of this as your team’s practice routine before the game. You won’t win if you don’t practice, would you?

Here are some ideas for aligning reuse efforts as part of your everyday development:

  1. When you review user stories look for patterns and similarities with stories from the past. Or stories from other applications in your team or within your shop

  2. When doing design always look to existing legacy assets for ideas and refactoring (see ). You will be surprised how much code you already have that is worth reusing when you change the assumptions and decouple it from the existing code

  3. Be on the look out for opportunities to help other teams with what you own. Got a great algorithm, user interface widget, data service, process flow, content fragment that is reusable? spread the word – establish partnerships with your peers, colleagues, and keep sharing. The good karma is bound to help your team and your organization as a whole by increasing consistency and reducing development time.

  4. Keep overlapping requirements, functionality, and feature variations in mind while you design, implement, and refactor code. If you get ideas for a reusable component add it to your list of refactorings or to-dos. Come back and finish it when there is a real need.

  5. Get your team to . All the code all the time. Code reviews are just about the most effective way to get the most out of reuse – your codebase will continually get leaner and better. Prepare code review check lists for targeted assets (services, features, user interface widgets, classes, etc.) and make sure you use them over and over.

wrapping legacy assets
review existing code