Abstraction is not very compatible with concurrency, so as well as your your beautiful abstract API, you also need some ‘cut through the layers’ functions to return the underlying classes you need to synchronise on. Now you have a right mess that’s incredibly hard to understand, infuriating to debug, and impossible to refactor. Best you can do is put another layer of abstraction on top. Repeat every six months.
I recently started a new job. We use Java. There’s a class that does a few things based on explicit arguments only to decide whether to use an FTP or file output, and you supply all parameters yourself. A whole ass Rube Goldberg machine that could be replaced by a single line of Files.writeString.
Also, there’s a great video on YT “Stop writing classes” that is incredibly relevant.
They look so painfully awkward, like a parent should be telling them to knock it off or something.
At least one of them is a pedophile, so you’re probably not wrong
Junior devs not abstracting anything and now the app is unmaintainable
Exactly, have fun trying to get test coverage without dependency injection
with patch("some_file.requests.get", side_effect=SomeException("oh no")): result = func_using_requests()Though not every language makes mocking as easy, and multiple responsibilities in a single function can quickly get messy.
Is it any more maintainable with four levels of abstraction?
Depends on the abstractions
There’s a middle ground
2 layers of abstraction is the gold standard
Just got out of a discussion with a supplier. We can do what we needed by connecting to the database. Instead we have to go through four layers of different tech to arrive at the same point in the database otherwise it’s not compliant. That the supplier needs to sell a license for those layers is purely coincidental.
Obviously don’t have the full context, but rarely is it ever advisable to give third parties direct access to a database. There are many reasons for this, like, for example, the fact that doing so makes schema migrations practically impossible.
Always favor composition over inheritance if you can.
Can confirm.
Hell yeah, peertube has the video: https://peerate.fr/w/2ktPxQgBvDHdHWzogVTRvH
they really made their domain pee rate dot france huh
Lol that’s a nice catch
Edit: maybe “peer at eFrance” or something that makes more sense in french.
I don’t get it.
Does it have something to do with a certain place in France smelling of piss?
It’s… glorious.
Don’t link to or participate on Lemmy.ml, join the boycott today!
Cross-posted as part of ongoing boycotting/protest efforts to reduce the influence of .ml comms and indirectly, the instance as a whole, to help vitilize and drive non-.ml comms and make it an easier decision for other instance admins to defederate because of the behavior and attitudes of the .ml instance admins (see megathread link above)
Some highlights from the link:
“If you don’t support Russia then you just don’t understand geopolitics” ~dessalines, main .ml admin, head dev https://lemmy.world/post/27352415
“See! nobody died IN Tiananmen Square, just AROUND it, so it doesn’t count!!” ~ Davel, .ml admin https://lemmy.world/post/30673342
“NK is actually good and anything counter to that is Western propaganda!” ~dessalines, main .ml admin, head dev https://lemmy.world/post/31595035
Showing support for Ukraine on .ml is worthy of a site ban - dessalines, main .ml admin, head dev https://lemmy.world/post/32775563
Nutomics continued transphobia https://lemmy.world/post/29222558
DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS!!!
COPILOTS, COPILOTS, COPILOTS, COPILOTS!!!
There, I updated it for you and I hate it.
you missed the best part
AAAAHHHHRRRRGGGHHHHHHHAAAAAAAA! sweat pouring off balmer as his body goes into shock from the pain
Why should I want simplicity? I want to make unnecessarily complex programs to gatekeep those pesky junior programmers.

That’s how you get that job security…
I think what they meant is that making it complex gets you job security
Abstraction layers is simplicity given a complex enough bottom.
I’ve been around long enough to question this kind of advice. It depends, in so many ways, on the goals, strategies, and platforms.
A complex bottom may have difficulty mating with a simple top
UwU
Me making my devs create a base exception for handling all exceptions that contain messages for display in the UI. Which has a parent base exception we use for all our exceptions which of course has Exception for it’s parent.
I hate our codebase but I’m so close to killing off 15 year old vb.net code. If the left me alone and I had the time I spent in meetings or 20 mins between meetings everything on our roadmap for the next year would have been done 2 years ago.
that image is from the whitest gif of all time
Americans love to make everything about skin color…
We tried to get a black dev onboard, but she refused adding 4 layers of abstraction.
Where did the gif come from







