The Adapter

Intent

Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces. (GoF)

Example

Many of the patterns require a consistent interface while implementation is allowed to vary. The Strategy is a good example. If such a pattern is used then client objects are designed to that interface, allowing for additional implementations to be added in the future without changes to the clients (following open-closed). If a new implementation is provided, perhaps a purchased component or an implementing class provided by another team, then it may not fit into the existing pattern. An Adapter can be added to solve this problem. Continue reading “The Adapter”

If you’re having problems sequencing your work items, this is most likely why

There are several concepts needed to do this:

  1. The items to be sequenced must be both the smallest batch of work that can be realized by the customer. They must also include all the work items required for the realization. Note that epics are too large, MVPs are about discovery of what’s of value and features often do not realize value on their own.
  2. A vision on what we’re trying to achieve that the owners of the work being prioritized can agree one. This has to take place at the leadership level.
  3. A way of comparing two items based on cost-of-delay and time to complete.
  4. Being able to implement the items quickly in the order they are sequenced. This provides motivation for the other two. This requires working on smaller sub-batches of this work. Having 3 months of work will not get us to attend to the delays between teams.

Whenever I see people having problems with prioritization, I know one or more of these items are missing.

The Strategy

Intent

Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it. (GoF)

Example

Businesses purchase various equipment, properties, vehicles and so forth as required to operate. The cost of these “assets” can be deducted from the profits of the business, reducing their tax liability. Continue reading “The Strategy”

What’s obvious or quickly learned as it’s pointed out #4

#developer. When you are given a requirement, always ask, “how will I know I’ve done that?” no matter how simple the requirement is. You’ll be surprised at how often you are surprised at the answer.

#productOwner.  When you give a requirement, always add how they will know when they’ve done it. State it as an actual result or example that illustrates the rule. 

I tag each insight with one or more roles that it will relate to. I will provide a link when more information is available.

You can see the accumulated insights here.

The best way to get these as I add to the list is to subscribe (see upper right of this page).

What’s obvious or quickly learned as it’s pointed out #3

#developer. When you finish something look for something else to help folks finish. See Manage Work-in-Process (WIP) by Focusing on Finishing

I tag each insight with one or more roles that it will relate to. I will provide a link when more information is available.

You can see the accumulated insights here.

The best way to get these as I add to the list is to subscribe (see upper right of this page).

The Abstract Factory

Intent

Create an interface for creating sets of dependent or related instances that implement a set of abstract types.

The Abstract Factory coordinates the instantiation of sets of objects that have varying implementations in such a way that only legitimate combinations of instances are ever created.

Example

If an application is to be deployed on a variety of operating systems, it will need the “right one” of a number of different drivers such as Memory access, keyboard, mouse, file system, display, and sound. The right set of drivers for Windows will be different from the set of drivers for Linux, and yet different from those for OSX. Under no circumstances should a Windows display driver be used alongside a Linux memory manager. And so forth. Drivers “go together.” They are a family. Continue reading “The Abstract Factory”

What’s Obvious or Quickly Learned As It’s Pointed Out #2

everyone. Consider the cost of people being too busy. There is a toll of multi-tasking on them, but it also means they are not available to other people. This means one person being overly busy impacts everyone else they interact with. This slows down the work to be done. Our goal is not to have busy people but to get things done quickly. Large delays don’t happen at once. Rather they are the result of a cascading series of small delays.

Continue reading “What’s Obvious or Quickly Learned As It’s Pointed Out #2”

What’s Obvious or Quickly Learned As It’s Pointed Out #1

#everyone. Working on too many things creates both multi-tasking and delays in our workflow. The causes of this include: interruptions, a lack of focus on finishing, have too large work items, product managers focusing on getting things started instead of finishing them and poor organizational structure.

Continue reading “What’s Obvious or Quickly Learned As It’s Pointed Out #1”

Teaching/Learning Business Agility a Step at a Time

I am a big believer that people are more capable and know more than they (and especially many consultants) give themselves credit for. They can tap this knowledge in several ways. One way is to mention insights that people already almost know or even do know, but have never explicitly stated it. The second is to provide new concepts that they can readily verify from their own experience. Continue reading “Teaching/Learning Business Agility a Step at a Time”