One of the things I learned from @KentBeck years ago was to see cohesion in terms of divergent change rates. If you have a class and there's a set of methods that you tend to change together while leaving others alone, that set of methods could be a separate responsibility.

Once I saw this, I went so far as to write a script to mine classes in Git and find clusters of methods that all seemed to change at the same time.
Often the results were not surprising. You could've see new responsibilities emerging just by looking at the names of methods and variables. But, sometimes this time view of the code was the first indication that a class was trying to split.
Code isn’t special that way. This is all systems stuff. If you have a group of 10 people and 3 of them often change their minds together, you can start to see them as a separate group. They may even start to see themselves as a separate group. Why does this happen?
At its base, it’s because of the tension between N and N^2. As the number of things increases, the number of possible interconnections grows (bounded by N^2). It’s harder for 10 people to coordinate than 3, so we shouldn’t be surprised to see groups from cliques periodically..
..it’s a natural tendency in systems. Sort of “the grain of the wood.”
Code is the same way. It grows through human attention. We’re loosely bounded in the number of concerns we can keep track of at once. But, again, it’s not the number of concerns that is the significant limit, it’s the number of ways that they can interact.
So, we focus, and form little areas of code around concerns even when they aren’t even consciously apparent to us yet. If we ignore our felt-sense of these dynamics we end up with legacy code.
Legacy code.. So, let’s relate this back to divergent change. I think that the core problem of software development is that code and team change at different rates.
If team turnover is faster than code turnover, you have knowledge loss. You need to prop up your code with more tests and documentation, and hope for the best.
There’s only so much that can be done about this problem. People are going to move on. The code that they wrote will remain.
A hardcore development organization would rip out the code of each developer as they leave.. by the roots, and rewrite it so that the knowledge of it is fresh in the remaining team, but I’ve never seen that as a consistent practice.
Code is perceived to have too much value. In reality, the active knowledge of a cohesive team is the value.
Mob programming is one manifestation of this understanding. It's one way to go.
But, to me, the important thing is to understand these costs of coherence and coordination. When we focus on them, we have many possibilities.

More from Business

Following @BAUDEGS I have experienced hateful and propagandist tweets time after time. I have been shocked that an academic community would be so reckless with their publications. So I did some research.
The question is:
Is this an official account for Bahcesehir Uni (Bau)?


Bahcesehir Uni, BAU has an official website
https://t.co/ztzX6uj34V which links to their social media, leading to their Twitter account @Bahcesehir

BAU’s official Twitter account


BAU has many departments, which all have separate accounts. Nowhere among them did I find @BAUDEGS
@BAUOrganization @ApplyBAU @adayBAU @BAUAlumniCenter @bahcesehirfbe @baufens @CyprusBau @bauiisbf @bauglobal @bahcesehirebe @BAUintBatumi @BAUiletisim @BAUSaglik @bauebf @TIPBAU

Nowhere among them was @BAUDEGS to find
Introducing "The Balloon Effect"

Many businesses & creators have experienced a similar pattern of success.

From @MrBeastYT and @MorningBrew to @oatly and @Rovio.

Let's break down what "The Balloon Effect" is and examples of it in real life.

Keep reading 👇


1/ What is "The Balloon Effect"?

It is a particular pattern of growth.

It is not Instagram's growth trajectory.

It is not
https://t.co/5axsTUKek6's growth trajectory.

"The Balloon Effect" is defined by several years of hard work & grit complemented by slow, linear growth.

2/ And then one day, one month, or one quarter...everything changes.

A business hits a tipping point and its trajectory shifts entirely.

Gradual growth turns to exponential growth & your brand and your size explode.

Like a step function.

3/ Now, you're probably wondering.

Why is it called "The Balloon Effect"?

Because filling/popping a water balloon follows the exact pattern I just described (and so many businesses experience).

Long unsexy slog 👉 Exponential tipping point.

4/ Initially, you turn on the faucet & water takes up space in the empty balloon.

Through effort you open the faucet, yet the results are unexciting.

But it's what must be done for water (or growth) to happen at all.

It's not sexy, but it's necessary.

You May Also Like

Oh my Goodness!!!

I might have a panic attack due to excitement!!

Read this thread to the end...I just had an epiphany and my mind is blown. Actually, more than blown. More like OBLITERATED! This is the thing! This is the thing that will blow the entire thing out of the water!


Has this man been concealing his true identity?

Is this man a supposed 'dead' Seal Team Six soldier?

Witness protection to be kept safe until the right moment when all will be revealed?!

Who ELSE is alive that may have faked their death/gone into witness protection?


Were "golden tickets" inside the envelopes??


Are these "golden tickets" going to lead to their ultimate undoing?

Review crumbs on the board re: 'gold'.


#SEALTeam6 Trump re-tweeted this.