Qualities Patterns Share: Proper Coupling

Coupling exists when one part of the system is impacted by changes to another part. Where there is too much coupling, changes to a system can be difficult, time-consuming, and often destructive.

That said, coupling is also necessary. When objects collaborate with each other then they must interact, and this always creates some form of coupling among them.

Given that coupling is both needed and can also be problematic, this means that there is both good and bad coupling in a system.

“Loose” is the term most people use when they think the coupling is the way it should be. I prefer the term “intentional” because it means the coupling was created on purpose, and will therefore make sense and be expected to exist. Developers are smart; they never intend bad or excessive coupling.

“Tight” is the term people use to describe poor or excessive coupling, but I prefer the term “accidental.” The coupling we don’t want is the coupling we never intended in the first place; it’s a mistake. When we discover coupling that exists but serves no purpose, we find a way to eliminate it.

Here again, the patterns will help us. The coupling in each pattern is there for a defined reason, is logical and meaningful, and therefore intentional.

How do people react to change?

This begins a new blog series called FLEX Coaches Corner.  I have just started Adopting FLEX online. Each lesson has a ‘coaches corner’ where I present coaching tips for participants.  Each week I’ll put one of these out on Net Objectives Thoughts and collect them as Coaches Clinic.

 

We are told people always resist it, but this is an over-simplification. Consider this excerpt from A Simpler Way. Margaret Wheatley & Myron Kellner-Rogers

Continue reading “How do people react to change?”

Refactoring SAFe to FLEX part 1 of 2

Frameworks should be architected in the same way that software systems are. Both need to be able to evolve without adding complexity, be robust and be clear in how their different components interact. Few frameworks, other than FLEX, however, have what could be called an architecture. Most are collections of value and practices loosely overlaying some principles (which, often enough the framework itself doesn’t follow well).

Continue reading “Refactoring SAFe to FLEX part 1 of 2”

The Foundations of FLEX

When I started writing up Net Objectives’ 14 years of experience in Agile at scale that has now become FLEX I came from a foundation of the following:

  1. FLEX itself is an hypothesis of the best way for an organization to have a customer realize value. As an hypothesis, it should be continuously tested, validated and improved.
  2. How people react to FLEX must be considered to be part of FLEX (this is a basic tenet of systems thinking, albeit often ignored by most frameworks)
  3. FLEX must both attend to how to provide a well-defined start and how to extend the start
  4. It must be based on the value stream so that it doesn’t inadvertently do sub-optimization
  5. Technical skills must be included in the system and should be considered when deciding on a starting point
  6. Although users will extend FLEX you never transcend it in the sense that what it’s based on is always valid. People will just come up with more innovative methods to use known principles

Continue reading “The Foundations of FLEX”

Qualities Patterns Share: Strong Cohesion

Cohesion is a quality indicting alignment. The best way to understand and remember this is to relate the root word “cohere” to the term coherent. Lasers are often called coherent light because all the of the beams of light in a laser are perfectly aligned.

What does this mean in software? It has to do with scoping, and we focus on two version of creating scope: class scope and method scope. Continue reading “Qualities Patterns Share: Strong Cohesion”

Scrum for Software Development

In my earlier post I explained why we needed this. In this one I’ll describe some principles and practices that should be in it

Use some degree of test-first. At a minimum, anytime a request is made the question “how will I know I’ve done that” should be asked

An understanding that delays in feedback, workflow and between getting and using information causes unplanned work

Continue reading “Scrum for Software Development”

Why we need a Scrum for Software Development Teams

Scrum proponents take pride in the fact that Scrum can work anywhere, in any domain. But keeping it in its generic form leaves big gaps in the practices people should be using.

The result of this is often that people have to reinvent things and don’t have ready access to concepts that would guide their adoption. These challenges are exacerbated when the immutable aspects of Scrum need to be modified a little. What often happens is people try to follow Scrum, often referring to the Scrum Guide and what they learned in their CSM class. They should be using Scrum as an open framework as it’s intended.

Continue reading “Why we need a Scrum for Software Development Teams”

FLEX’s launch this week is a harbinger of the next wave of Agile

The Adopting FLEX online workshop gets into full gear next week. I believe this is the start of the next wave of Agile on many levels

Since ’05 I’ve been working on overcoming several challenges:

  1. people need a specific start but there is no one-size fits all
  2. expanding an approach tends to add complexity to it
  3. on-experts often can’t tell if a change is good or not but need this ability in order to be able to improve on their own
  4. providing optional practices so people don’t have to reinvent the wheel, but do this without causing confusion
  5. provide a simple model for Agile product management that aligns both business stakeholders and development groups
  6. provide training in an economical way that doesn’t stop people doing their day jobs and actually enables more interaction while learning

FLEX solves these challenges by incorporating approaches various Net Objectives consultants have done over the last 20 years. FLEX is an expert system that guides consultants in how to help an organization improve by both providing guidance and creating a shorter workshop tailored for the organization that will implement FLEX.

I am excited to have a group of people working with me on taking this into the future.

Learn more here

Qualities, Principles, Practices

I’m going to be using the terms quality, principles, and practices quite a bit, so it might be useful to explain how I am using them, just for the sake of clarity.

By quality, I am referring to an aspect of design that is desirable or, if missing, is a deficit. In general, the qualities I look for make it easier to change things, since maintenance is the major expense in most systems.

By principle, I mean general guidance about design, concepts that can inform our decisions in many different ways depending on circumstances. Principles are almost never perfectly achievable, but they are always important to keep in mind. The Golden Rule is a principle that we try to follow in polite society. That’s the sort of thing I mean. Continue reading “Qualities, Principles, Practices”