Alan Shalloway
Lead Author of Design Patterns Explained, Essential Skills for Agile Developer
Blog
It’s Déjà vu All Over Again
Posted Thursday, June 13, 2013
Several years ago I tried to discuss the need for Lean when Scrum was being used on projects with more than one team. Ken Schwaber didn’t want to hear this and eventually threw me off the Scrum Development Yahoo discussions group. I admit, I was talkmore »In Defense of Kanban
Posted Saturday, June 8, 2013
As many folks know, Net Objectives does both Scrum and Kanban. Admittedly, our Scrum is very much like Scrumban (or Scrum done under the context of Lean) but it is still an implementation of Scrum. Scrum, as it normally manifests itself, has several cmore »The Differences Between Lean Manufacturing and Lean Software Development
Posted Saturday, June 8, 2013
Since lean comes from manufacturing, many question its validity for software developers. Our own experience is that Lean in software is very important. This blog covers three areas: The essential paradigm shift of lean and why it applies even more to more »Day 20 of 100 Consider Tests First
Posted Wednesday, June 5, 2013
Continuing with the 100 Things You Must Know to Be Effective In Software Development Many consider doing Test-Driven Development but think it is too much work or will lead to future challenges. Many folks find that their tests become unsustainable more »Day 19 of 100 Know the Power of Teams
Posted Sunday, June 2, 2013
Continuing with the 100 Things You Must Know to Be Effective In Software Development This blog is also in preparation for a webinar I am doing this Wednesday called: How to Start an Agile Implementation. I wrote a blog about a year ago called Why Scrummore »Day 18 of 100 Learning What You Don't Know You Don't Know
Posted Sunday, June 2, 2013
Continuing with the 100 Things You Must Know to Be Effective In Software Development I'm writing this and the next day's blog, "The Importance of Teams and How to Create Them" (posting later today) in preparation for a webinar I am doing this Wednesdaymore »Presentations
Design Patterns Workshop
This class goes underneath design patterns to understand the principles behind the patterns. Patterns are a manifestation of 3 principles: Find what varies and encapsulate it Design to public methods Prefer delegation over inheritance This session demore »Taking Software Development to the Next Level
Things have changed considerably in the last 15 years for software development. In every area of the organization – development, QA, management and the business side. Between design patterns, TDD, ATDD, refactoring, emergent design, eXtreme Programming,more »Avoiding Over and Under Design
The question of how much design to do up-front on a project is an engaging one. Too much design often results in overkill, complexity, and wasted work. Too little design results in insufficient system structures that require rework, additional complexitmore »Integrating Systems Thinking into Enterprise Agile With the Lessons of Lean
While Scrum and XP have become very popular in agile development shops, most companies adopting them run into problems beyond just a few teams. These challenges often fall into a common set of patterns, which points to a lack of systems thinking—the procemore »Pattern Oriented Design: Taking Design Patterns to the Next Level
This seminar starts by teaching the basics of design patterns. However, instead of focusing on patterns as solutions, we’ll investigate the thought process that created the patterns in the first place. While patterns are often described as “solutions to more »De-Mystifying Kanban: Understanding Its Many Faces
There is a lot of confusion about what Kanban is. Some of this is due to the fact that many people who have never used Kanban have been deriding it – saying it is a mechanistic team management method that doesn’t respect people. The fact that Kanban is qmore »This class goes underneath design patterns to understand the principles behind the patterns. Patterns are a manifestation of 3 principles:
- Find what varies and encapsulate it
- Design to public methods
- Prefer delegation over inheritance
This session describes how to think in terms of the principles of patterns to be able to discover patterns in your designs and to create new quality designs when patterns aren’t present.
After presenting the fundamental lessons of design patterns the class proceeds into how patterns can be used both in an upfront manner or in an agile manner. The tutorial continues by comparing and contrasting seemingly different design methods:
- test driven development
- pattern oriented design
- refactoring from poor designs
- commonality variability analysis
- designs based on code qualities with standard object-oriented approaches
Things have changed considerably in the last 15 years for software development. In every area of the organization – development, QA, management and the business side. Between design patterns, TDD, ATDD, refactoring, emergent design, eXtreme Programming, Agile, Scrum, Lean and Kanban, new methods have dramatically enlarged our knowledge about how to develop software.
While some still claim software development is complex and we should be using black-box frameworks, this talk presents the idea that we now know enough to dramatically increase the productivity of the industry. The issue is no longer not knowing how to develop great software. The challenge is getting people to incorporate known practices into their development methods. Getting behavioral change is much more complicated than understanding what the change needs to be.
This talk introduces three concepts that we can use to help us take software development to the next level: • The Technology Gap – the difference between what we know and what we do • Trim Tabs – the concept that some activities have more than leveraged impact but change the environment within which we work • The Pickup Sticks Model - for deciding the order of introducing new concepts While there is a creative aspect to software development, there is a science to it as well. We must embrace this dual nature and increase our capabilities. The time is now.
The question of how much design to do up-front on a project is an engaging one. Too much design often results in overkill, complexity, and wasted work. Too little design results in insufficient system structures that require rework, additional complexity, and wasted effort. How can we know what the right balance is? Alan Shalloway shows how to use the advice from Design Patterns coupled with the attitude of not building what you don’t need from Agile. The trick is in observing potential variation, how it may affect you, and then how to isolate these risks in a simple manner.
Alan describes the essence of emergent design – that is, starting with a simple design and letting it evolve as the requirements evolve. He also demonstrates how to refactor to better designs and how this is different from refactoring bad code.
While Scrum and XP have become very popular in agile development shops, most companies adopting them run into problems beyond just a few teams. These challenges often fall into a common set of patterns, which points to a lack of systems thinking—the process of understanding how things influence one another within a larger whole.
Alan Shalloway shares his ideas on how the agile community can move beyond its team-centric approach to adopt a more holistic, systems-based approach. Systems thinking creates new opportunities to create substantially larger development teams—Alan calls them “pan-teams.” These teams work interdependently with a common vision and context. Pan-teams enhance the motivations for the teams and individuals to collaborate as a normal part of their daily work thus reducing the amount of forced collaboration. Although not a panacea, systems thinking provides a better platform to solve enterprise-wide challenges because your organization learns to approach problem-solving holistically and avoid the trap of unintended consequences
This seminar starts by teaching the basics of design patterns. However, instead of focusing on patterns as solutions, we’ll investigate the thought process that created the patterns in the first place. While patterns are often described as “solutions to recurring problems in a context” that’s really only the first step to understanding what patterns really are.
Patterns are really a thought process to solving problems. The patterns themselves, as individual design elements, are interesting and somewhat useful. But, it is when you learn to think in a pattern-oriented way that they deliver the vast majority of their value to you. Patterns are the result of following a few principles – find what varies, encapsulate it and design to an interface that hides the variation – as well as a few additional supporting practices. This seminar will lay these out.
There is a lot of confusion about what Kanban is. Some of this is due to the fact that many people who have never used Kanban have been deriding it – saying it is a mechanistic team management method that doesn’t respect people. The fact that Kanban is quickly growing and gaining a reputation for success where other Agile methods have had challenges belies that categorization.
But what is Kanban? Even when listening to Kanban thought leaders one will hear different answers. 1) it’s a power agile management system based on lean-flow. 2) it’s a transition management method to assist teams to achieve continuous learning. 3) It’s a way to create visibility for executives to improve their product portfolio management. I can almost here Gilda Radner and Dan Aykroyd on Saturday Night Live describing New Shimmer!
This talk discusses how Kanban actually is a multi-faceted method that assists process, transition and collaboration. Kanban is not a mere tool, or even a set of practices. It’s a mindset that attends to people, their culture, and the systems they find themselves working in. The talk presents a few of the basics of Lean-Flow and theory of constraints that it is based on as well as some of the psychological aspects of people adopting new methods.
While this talk is intended for those considering adopting Kanban, those currently using Scrum will find it helpful as many of the principles and practices of Kanban fit well into the Scrum framework.
Learning Objectives • Kanban as a transition method • Kanban as a team practice • Kanban as a collaborative tool between executives, management and teams • Why does Kanban work • How one can improve Scrum with the Kanban mindset • The principles of Kanban • Why Kanban works • Why Scrum works






