Lean-Agile is about Collaboration... Patterns Make it Happen

October 31, 2006 — Posted by Jim Trott

Listen to the podcast Patterns give devs a language for collaboration

Lean-Agile puts a premium on collaboration. We always talk about increasing the bandwidth of communication: between customer and developer, between members of a development team, between your team and other teams, and, indeed, between various generations of a team (why did they do it that way?) Gone are the day of a programmer sitting alone in cubicle; most developers find themselves as part of a team.

Now, it has always been easy for developers to talk about implementation. We have coding structures and algorithms. All very precise and widely understood. But it has been very difficult to talk about design. Sure, we have UML diagrams and specifications and requirements documents. But, they don't really get to the essence of the thought behind a particular design. That is where patterns come in. Patterns give us a language to talk about design ideas.

Each pattern is a shorthand for a bucket of forces and principles and constraints and the costs involved in the pattern. When I say I used a Decorator here, you can know what is expected and we can talk about why it was chosen and the rationale for what went into its particular implementation. We can discuss the tradeoff of this approach vs. that approach based on the pattern's cost. This is how professionals talk to each other.

But not only within a team, patterns allow you to access the knowledge of a larger community of professional developers. If you are working on a particular design and discover part way through, "this looks like a Bridge", then you can turn to the Bridge pattern and see what else it is telling you should be there. It can accelerate your rate of development by predicting the elements that must be in your design.

Now this works as long as you can see a pattern as the shorthand and remove yourself from a particular coding implementation. Too many patterns courses and books dwell too much on the implementation, and you lose the essence of - and thus the real power behind - the pattern.

A central repository of patterns

Now, for patterns to become a useful language, everyone has to have a common understanding of what they are about, what they mean. There is a large number of patterns and they grow as we learn more about them. What is needed is a central repository where we can talk together about the patterns. There are other pattern repositories, but none of them talk about patterns in the way Scott is talking about them: as a language, as a collection of forces and language elements.

All of this has led Scott to create an open repository with this in mind: https://www.netobjectives.com/PatternRepository/. This is a community-based repository, sponsored by Net Objectives. You can read for free. Or if you want to contribute, you can register and become an editor, much like the wikipedia does.

Net Objectives is sponsoring this because it brings value to the community. And that is one of the central tenets of Net Objectives.

Emergent Design

To complement this work, Scott is working on a book about Emergent Design, which covers two points

  • Designs emerge
  • The need for developing a professional language

This book is out for review, to good response right now. The book helps get people ready. The repository then grows the community. He is also working on a course on these ideas.

A Podcast Series with Scott Bain

This podcast continues a series of conversations with Scott Bain, a senior consultant and one of the premier experts in patterns and test-driven development. He teaches and coaches three Net Objectives courses: Design PatternsThinking, Advanced Software Design and Test-Driven Development. He has thought deeply about patterns and Lean-Agile.

In this introduction, we cover:

  • What are design patterns (and what are they not)
  • Are design patterns still relevant?
  • Patterns, TDD, and change
  • Patterns as part of the language of professional developers
  • Getting an Agile team started in patterns

In the future, I will try to get Scott back to work through an example.

Recommendations - Resources

  • The Net Objectives Pattern Repository. This repository is sponsored by Net Objectives, a Seattle-based organization dedicated to training, coaching, and consulting on software design, agile methodologies, test-driven development, lean software process, and scrum. You are free to use this material for your edification and study, and, optionally, you may contribute your views on patterns and forces in software development by signing up for a free membership. The site manager is Scott Bain
  • For other online resources provided by Net Objectives, please visit Net Objectives Resources area.

Recommendations - Training by Net Objectives

Recommendations - Reading

Music used in this podcast:

For more information, contact info@netobjectives.com or visit us at https://www.netobjectives.com

Blog Type: 
Podcast
Subscribe to our blog Net Objectives Thoughts Blog

Share this:

About the author | Jim Trott

Jim Trott is a senior consultant for Net Objectives. He has used object-oriented and pattern-based analysis techniques throughout his 20 year career in knowledge management and knowledge engineering. He is the co-author of Design Patterns Explained: A New Perspective on Object-Oriented Design, Lean-Agile Software Development: Achieving Enterprise Agility, and the Lean-Agile Pocket Guide for Scrum Teams.



        

Blog Authors

Al Shalloway
Business, Operations, Process, Sales, Agile Design and Patterns, Personal Development, Agile, Lean, SAFe, Kanban, Kanban Method, Scrum, Scrumban, XP
Cory Foy
Change Management, Innovation Games, Team Agility, Transitioning to Agile
Guy Beaver
Business and Strategy Development, Executive Management, Management, Operations, DevOps, Planning/Estimation, Change Management, Lean Implementation, Transitioning to Agile, Lean-Agile, Lean, SAFe, Kanban, Scrum
Israel Gat
Business and Strategy Development, DevOps, Lean Implementation, Agile, Lean, Kanban, Scrum
Jim Trott
Business and Strategy Development, Analysis and Design Methods, Change Management, Knowledge Management, Lean Implementation, Team Agility, Transitioning to Agile, Workflow, Technical Writing, Certifications, Coaching, Mentoring, Online Training, Professional Development, Agile, Lean-Agile, SAFe, Kanban
Ken Pugh
Agile Design and Patterns, Software Design, Design Patterns, C++, C#, Java, Technical Writing, TDD, ATDD, Certifications, Coaching, Mentoring, Professional Development, Agile, Lean-Agile, Lean, SAFe, Kanban, Kanban Method, Scrum, Scrumban, XP
Marc Danziger
Business and Strategy Development, Change Management, Team Agility, Online Communities, Promotional Initiatives, Sales and Marketing Collateral
Max Guernsey
Analysis and Design Methods, Planning/Estimation, Database Agility, Design Patterns, TDD, TDD Databases, ATDD, Lean-Agile, Scrum
Scott Bain
Analysis and Design Methods, Agile Design and Patterns, Software Design, Design Patterns, Technical Writing, TDD, Coaching, Mentoring, Online Training, Professional Development, Agile
Steve Thomas
Business and Strategy Development, Change Management, Lean Implementation, Team Agility, Transitioning to Agile
Tom Grant
Business and Strategy Development, Executive Management, Management, DevOps, Analyst, Analysis and Design Methods, Planning/Estimation, Innovation Games, Lean Implementation, Agile, Lean-Agile, Lean, Kanban