(Design) Patterns and Lean-Agile




Lean-Agile Straight Talk show

Summary: Patterns and Lean-Agile In other podcasts, we have talked about the “Three Legs of Software Development”: management processes, developer processes, and technical skills. “Technical skills” involves both Design Patterns and Test-Driven Development. But are design patterns still relevant? Or is that so 1990’s? The answer is “Patterns are more relevant now than they ever have been… and especially for Lean-Agile software development." Why? To answer this question, I am turning to 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 Patterns Thinking, Advanced Software Design and Test-Driven Development. He has thought deeply about patterns and Lean-Agile. A Podcast Series with Scott Bain This begins a series of podcasts with Scott, where you will start to get a sense for what he is thinking . You will also get a great idea of who Scott is – and if you ever get the chance to take a course from him, it is worthwhile! In this series, we will cover: What are design patterns (and what are they not) Are design patterns still relevant? Patterns and change Patterns as part of the language of professional developers Obviously, we can’t go too deeply into patterns in 15 these introductory podcasts. But I want you to have some ideas for what patterns are and why they are important to the Lean-Agile software developer. Below are some of what Scott covers. What are design patterns? Scott prefers to think of “patterns”, not “design patterns”. In the pre-Agile, waterfall-methodology days, we thought of design as a discrete step you did before creating code. That approach never worked very well – change always overwhelmed the system. Thinking about patterns – rather than “design” patterns – allows you to think about your work and the things you do again and again that create value. A pattern is like a “bag” of compiled, collected wisdom that discusses things we do repeatedly to solve a particular kind of problem. We give them labels so that we can remember them and access them more readily. So, there are patterns in analysis, in design, in re-factoring, in testing, in deployment, in implementation. Are patterns still relevant in the Lean-Agile world? Yes! They are even MORE relevant The reason is that in the old days, our biggest expense, our biggest constraint, was the machines and the software. Programmer time was cheap in comparison, so we didn’t mind making people do more if it resulted in more machine efficiency. Today – and the Lean-Agile world recognizes this – it is the reverse. Computers are relatively inexpensive. Software is ubiquitous. And programmers are relatively expensive. Doing what we can to make people more efficient is crucial. And that includes increasing the communication of wisdom from person to person. (You could think of this as part of what I call Knowledge Management) One way to think about this is that, in the 90’s, we did what we could to make things easier for the computer, and if that caused programmers problems, well, that’s OK. Today, that is not OK. That is “waste”. Patterns help us create software that is more maintainable and more robust, at the expense of making the computer do a bit more… and that is great! And this is very consistent with Lean-Agile: eliminating waste, favoring process improvement, valuing local knowledge, and creating robust systems. If at all possible, I’d recommend taking our TDD and our Design Patterns courses, which has helped hundreds of developers gain the understanding they need to work with patterns and how to access the language of professional developers worldwide. The book, Design Patterns Explained, is also a great place to start. Recommendations - Training by Net Objectives Design Patterns Thinking Advanced Software Design Test-Driven Development Recommendations - Reading Design Patterns Explained, 2nd Edition, by Alan Shalloway and Jim Trott Music used in this podca