Discussion about this post

User's avatar
Oliver B.'s avatar

“increase cohesion, eliminate coupling” usually creates more smaller modules. Functionally related is normally just a paraphrase for "most changes are done by one team". So it is more on the line of does one thing in reality vs has one reason to change. Functionally modules create less overhead and since all is done with one team the missing decoupling is of no relevance.

The downside of replacing “functionally related” as the criterion with “increase cohesion, eliminate coupling” as the criterion for design choices is the coding overhead and that the required outcome has to be broken apart in more tasks which requires more pre-planning. The upside is usually easier testing, scalability of development, less time on-boarding of new developers and making it harder for cruft to emerge.

Expand full comment
John Obelenus's avatar

If things are "functionally related" they are/ought to be "coupled". These feel like the same concepts to me. How are they different? If I'm in one area, I don't have to think about another area because it is not related, it is not coupled. I can operate without bumping into it.

“What goes together?”, “What gets separated?”, are the right questions... Because we can't always work on The Whole. We have to be able to separate where our changes our bounded to a context and won't ripple out beyond that.

“How big should elements be?" feels entirely irrelevant. It is as large as it is required to be. No larger.

Expand full comment
22 more comments...

No posts