←back to thread

52 points birdculture | 7 comments | | HN request time: 0s | source | bottom
1. brandensilva ◴[] No.46182165[source]
I have to agree, it's much easier to remove and consolidate duplicative work than unwind a poor abstraction that is embedded everywhere.

And I think it's easy to see small companies lean on the duplication because it's too easy to screw up abstractions without more engineering heads involved to get it right sometimes.

replies(2): >>46182183 #>>46182630 #
2. locknitpicker ◴[] No.46182183[source]
> I have to agree, it's much easier to remove and consolidate duplicative work than unwind a poor abstraction that is embedded everywhere.

That is basically the core tenet of "Write Everything Twice" (WET)

replies(1): >>46182223 #
3. next_xibalba ◴[] No.46182223[source]
I’ve been working on a new framework for the last five years. White paper dropping soon. It’s called “Write Everything Thrice” (WET). Lmk if want the link to my substack where I’m cooking up more stuff like this.
replies(1): >>46182267 #
4. tomaskafka ◴[] No.46182267{3}[source]
Only if you include an ICO of WETtoken and a line of longevity supplements.
5. StellarScience ◴[] No.46182630[source]
> it's much easier to remove and consolidate duplicative work than unwind a poor abstraction that is embedded everywhere.

It's not easy to deduplicate after a few years have passed, and one copy had a bugfix, another got a refactoring improvement, and a third copy got a language modernization.

With poor abstractions, at least you can readily find all the places that the abstraction is used and imorove them. Whereas copy-paste-modified code can be hard to even find.

replies(2): >>46183116 #>>46183284 #
6. brandensilva ◴[] No.46183116[source]
I feel AI does decent at fixing the dupes and consolidating it as one instance. Abstractions can have far deeper connections and embeddings making it really hard to undo and reform but to each their own on what works for them.
7. bonesss ◴[] No.46183284[source]
With poor abstractions I can improve abstractions and ensure holistic impact because of the reuse. Then I’m left with well factored reusable code full of increasingly powerful abstractions. Productivity increases over time. Abstractions improve and refine over time. Domain understanding is deepened.

With duplicated messes you may be looking at years before a logical point to attack across the stack is even available because the team is duplicating and producing duplicated efforts on an ongoing basis. Every issue, every hotfix, every customer request, every semi-complete update, every deviation is putting pressure to produce and with duplication available as the quickest and possibly only method. And there are geological nuances to each copy and paste exercise that often have rippling effects…

The necessary abstractions often aren’t even immaturely conceived of. Domain understanding is buried under layers of incidental complexity. Superstition around troublesome components takes over decision making. And a few years of plugging the same dams with the same fingers drains and scares off proper IT talent. Up front savings transmutate to tech debt, with every incentive to every actor at every point to make the collective situation worse by repeating the same short term reasoning.

Learning to abstract and modularize properly is the underlying issue. Learn to express yourself in maintainable fashion, then Don’t Repeat Yourself.