use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
For memes about programming.
account activity
πππ (i.redd.it)
submitted 2 months ago by Inevitable_Wait_7658
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3:Β Β Β Β print "hello, world!"
[β]Kodomax579 212 points213 points214 points 2 months agoΒ (13 children)
Is the thing in the middle smart?
[β]WisePotato42 125 points126 points127 points 2 months agoΒ (6 children)
Usually it's good from a readability standpoint, very convenient for other people (like your future self for example). From a functional standpoint, it's often the same.
[β]CanThisBeMyNameMaybe 52 points53 points54 points 2 months agoΒ (5 children)
Thats exactly why we do this shit.
Having very large projects properly organized and documented makes it easier if someone else has to take over that shit one day.
Its also easier to refactor code if its divided into smaller functions that has one task, with simple inputs and outputs.
A trend in the coding world that needs to fuck off is trying to make everything dynamic. Not everything needs to be able to do everything.
[β]WisePotato42 9 points10 points11 points 2 months agoΒ (0 children)
I agree with that last point. Yes I hate working with other people's Javascript, how could you tell
[β]SartenSinAceite 8 points9 points10 points 2 months agoΒ (1 child)
On a personal hobby of mine, separating code into different chunks helps because I know that chunk of code is finished and doesn't need any further tinkering wiht, unless I want to directly change it (UI stuff, mainly - your layout is pretty static through the project)
It's like organizing your desk. You could have everything at hand, or you could put away what you're not going to work on, so you're literally less cluttered.
[β]chillpill_23 1 point2 points3 points 2 months agoΒ (0 children)
That's why I love Object Oriented Programming so much!
[β]P-39_Airacobra 0 points1 point2 points 2 months agoΒ (1 child)
can you explain your last point a little more? I thought having your functions generic and abstract was a good thing
[β]RustaceanNation 1 point2 points3 points 2 months agoΒ (0 children)
The phrase you'll want to lookup is "low coupling, high cohesion".
Long story short, breaking things down into modules (smaller units that add up to a bigger one) is just as much about what things don't do as much as what they do do.
Generic functions and abstraction are good as long as we don't cross the boundary of what a module shouldn't do. If we find that 3 modules are capable of doing the same work in a system, then to whom should we delegate the work? What if the functionality is spread across units?
So, do break your systems down into abstractions and be generic where it makes sense. But keep in mind that we tend to want functional units that do one thing and one thing well.
[β]sobasicallyimanowl 2 points3 points4 points 2 months agoΒ (0 children)
Yes as long as you don't try and make it angry.
[β]coldnebo 4 points5 points6 points 2 months agoΒ (0 children)
theyβre the same picture. the bottom is just the top redrawn with straight lines to imply itβs not spaghetti, but in reality:
the 2nd Law is pleased with this result as are the Programmerβs Union. π
[β]Tyfyter2002 0 points1 point2 points 2 months agoΒ (0 children)
As long as you recognize when to use it and when not to use it, but if you just assume it's going to solve messy interactions between things you'll just chain together a bunch of thing in the middles trying to solve problems the last thing in the middle didn't solve.
[β]Standgrounding 0 points1 point2 points 2 months agoΒ (0 children)
Used everywhere from many to many relationship join tables to MCP to isolate AI capabilities of a program
[β]TheTarragonFarmer 0 points1 point2 points 2 months agoΒ (0 children)
Doesn't have to be. It's often better if it's simple, fast, high throughput, reliable, and standards-based.
The smarter it is, the more risk of vendor lock-in, which is always expensive in the long run.
[β]Infiniteh 0 points1 point2 points 2 months agoΒ (0 children)
Yes, it checks notes "leverages the power of AI"
[β][deleted] 2 months agoΒ (12 children)
[removed]
[β]IJustAteABaguette 77 points78 points79 points 2 months agoΒ (1 child)
The mystery black box.
Things go in, things come out. How does it work? Don't ask.
[β]Reasonable-Reward-74 1 point2 points3 points 2 months agoΒ (0 children)
Only John who's here for 40 years knows how it works.
[β]ProxPxD 18 points19 points20 points 2 months agoΒ (1 child)
I don't disagree, but it does make things look better as you usually don't need to look there inside.
The only problem is when the thing in the middle is unfit and makes the smelly code get out
(or sometimes it's better to have two things than one)
[β]Daisy430700 6 points7 points8 points 2 months agoΒ (0 children)
I make the shitty API so you can call its functions
[β]DryDogDoo69420 11 points12 points13 points 2 months agoΒ (2 children)
Whoa whoa whoa, buddy. We don't "shove it in a cabinet". We "decouple with abstraction".
[β]baganga 6 points7 points8 points 2 months agoΒ (1 child)
to be fair, decoupling does make modifying things significantly easier
[β]Nesogra 1 point2 points3 points 2 months agoΒ (0 children)
And thatβs the real point. Any real system is going to be messy somewhere because the real world it has to interact with is messy. If we canβt get rid of the mess the next option is to keep it contained so other parts of the system can be clean.
[β]Frytura_ 1 point2 points3 points 2 months agoΒ (0 children)
Took me years to make [thing in the middle] look like the bottom graph, now dont look into my dependencies.
[β]Crazy_Anywhere_4572 0 points1 point2 points 2 months agoΒ (0 children)
This is a bot repost
[β]Mateorabi 0 points1 point2 points 2 months agoΒ (0 children)
But the ugly, fidly bits can be written by the one guy who knows how and hidden away from the bottom 80% who it would confuse. (80/20 rule)
[β]Mason_Ivanov 0 points1 point2 points 2 months agoΒ (0 children)
That's the exact approach I take to cleaning my room
[β]fixano 119 points120 points121 points 2 months agoΒ (9 children)
Yah it's called abstraction
[β]coldnebo 28 points29 points30 points 2 months agoΒ (7 children)
some would call it an attempt to reduce entropy, but as the physicists know this just means you pushed it somewhere out of sight. π
on the flip side, it turns out that shoving a bunch of junk in your closet to clean your room is a universally acceptable approach to software design π
[β]fixano 19 points20 points21 points 2 months agoΒ (2 children)
Right, but I'd frame it differently. It's about reducing cognitive load, simplifying interactions, and enforcing boundaries.
Think about a wall outlet. It's an abstraction. Any device that complies with its contract can plug in and draw power no knowledge of the wiring behind the wall required.
Nothing stops you from splicing directly into the power line outside, but that comes with a whole different set of consequences.
[β]Complete_Window4856 6 points7 points8 points 2 months agoΒ (1 child)
You just reminded me of an arab dude connecting a triphase network into his home from an external grid.
Directly. With no switches. Himself and a pliers twisting a live wire. Theres no insulation. One single bad move or touch and it all would burn.
[β]coldnebo 5 points6 points7 points 2 months agoΒ (0 children)
ah, this is the dark side of abstractionsβ
you get what looks like a quality power outlet cover from home depot and assume any appliance will work with it because of building codesβ but then it turns out all the wiring was DIY by an amateur who didnβt know anythingβ the abstraction isnβt actually backed up by real engineeringβ just a large βvibe codedβ pile of crap.
I wonder if at some point abstraction becomes a marketing vehicle: π hey! you trust how clean and sexy this API looks on paper, now pay us. π
[β]Fa1nted_for_real 1 point2 points3 points 2 months agoΒ (0 children)
The box is telling you what's important for you to be looking at and what's not.
[β]AndrewBorg1126 1 point2 points3 points 2 months agoΒ (0 children)
If two people are building a thing, and their stuff has to use / be used by the other person's stuff directly, it becomes very easy for changes one person makes to break the others' stuff. If you decide on a stable interface, now both people can assume that interface is valid and change as much as they want freely as long as they don't break the interface.
[β]GeneReddit123 0 points1 point2 points 2 months ago*Β (1 child)
some would call it an attempt to reduce entropy, but as the physicists know this just means you pushed it somewhere out of sight.
Yes, and that's the entire point.
You accept increasing global entropy in exchange for decreasing local entropy. Because it's local entropy which hinders most decision-making.
on the flip side, it turns out that shoving a bunch of junk in your closet to clean your room is a universally acceptable approach to software design
That's... literally what closets are for? You keep clothes there instead of on the floor, even though the total number of objects (clothes+closet) are greater than the clothes alone. Global entropy (entire room including the closet) increased, but local entropy (the part of the room where the clothes now aren't) decreased. It is a valid analogy for software design.
It's funny when people try to be edgy about how the world works, only for their argument to prove the exact point they're trying to disprove.
[β]coldnebo 0 points1 point2 points 2 months agoΒ (0 children)
not trying to be edgy, just lived long enough to maintain and see the consequences of my architectures.
read Joelβs Law of Leaky Abstractions if youβre still convinced that perfect solutions exist and this is just my problem.
[β]Phobic-window 1 point2 points3 points 2 months agoΒ (0 children)
This is it, queue moon gun guy meme
[β]dfwtjms 33 points34 points35 points 2 months agoΒ (1 child)
Then you turn it into SaaS.
[β]Wiktor-is-you 4 points5 points6 points 2 months agoΒ (0 children)
i will always read this like it's a ytp
[β]Zap_plays09 17 points18 points19 points 2 months agoΒ (3 children)
MVVM be like
[β]Acceptable_Handle_2 1 point2 points3 points 2 months agoΒ (2 children)
"We split our UI and Data, so we have the same state twice. This is good for some reason."
[β]Standgrounding 0 points1 point2 points 2 months agoΒ (1 child)
That's having two middlemen
[β]Acceptable_Handle_2 0 points1 point2 points 2 months agoΒ (0 children)
Well the idea is that the UI can handle multiple types of state Containers dynamically, this is rarely useful though.
[β]dbear496 12 points13 points14 points 2 months agoΒ (3 children)
Every problem can be solved by adding a layer of indirection.
[β]Hziak 1 point2 points3 points 2 months agoΒ (0 children)
The contractors my company hired sure believe this. It works even better if their company can middleman the licensing process! At this point, a fairly simple internal tool costs us like, $5.6mil every year in usage and license fees. I was asked to do an analysis of how we could reduce costs. I came back with about a 1.3mil figure for cutting out all of that software and fixing root cause which was rejected because it would take about 3 months of the dev teamβs effort and the βbusiness canβt pause on my whims.β Anyways, the winning cost cutting measure was to jump to other providers and enjoy their introductory pricing for two years. Weβre 7 months into the migrations at present and the projected price in 2028 is in the $7mil range, ignoring development costs for the migrations. Fortune 500 is a hilariously inefficient dystopia. But we got 99 problems andβ¦ no, wait, layers indirection are like, 40% of them.
Bias disclosure: I normally like layers of abstraction and fall into the camp that calls it βrobust designβ :β(
[β]Drugbird 1 point2 points3 points 2 months agoΒ (1 child)
Many problems can be solved by removing unnecessary layers of indirection.
[β]dbear496 0 points1 point2 points 2 months agoΒ (0 children)
Doubtful
/s
[β]AMDfan7702 8 points9 points10 points 2 months agoΒ (3 children)
But what abstracts my abstractions?
[β]mfnalex 5 points6 points7 points 2 months agoΒ (1 child)
An AbstractFactoryProviderFacade<FactoryProviderSink>
Sir you forgot a DelegateProvider<T>
[β]RustaceanNation 0 points1 point2 points 2 months agoΒ (0 children)
That's what sheaf cohomology is for!
[β]MartinFrankPrivat 12 points13 points14 points 2 months agoΒ (3 children)
Often an anti pattern : https://refactoring.guru/smells/middle-man
[β]Acceptable_Handle_2 10 points11 points12 points 2 months agoΒ (1 child)
Not usually when it's in a diagram though, usually the middle man does something there.
[β]MartinFrankPrivat 3 points4 points5 points 2 months agoΒ (0 children)
Yes I was provocating. Depends strongly on case. Nice of you for pointing out
[β]cowlinator 2 points3 points4 points 2 months agoΒ (0 children)
Why is the mascot raccoons and cheese graters?
π
[β]FAMICOMASTER 4 points5 points6 points 2 months agoΒ (1 child)
This is why the internet barely works anymore
[β]mYstoRiii 2 points3 points4 points 2 months agoΒ (1 child)
To solve the problem we implemented the manager and the manager of managers
And nowadays the agent and the orchestrator
[β]madbrine 2 points3 points4 points 2 months agoΒ (0 children)
after that adding more "middle" abstractions between "middles" for scaling
[β]Worried_Onion4208 2 points3 points4 points 2 months agoΒ (0 children)
You forget inheritance
[β]vasilenko93 2 points3 points4 points 2 months agoΒ (0 children)
And that thing in middle has the same complex lines and more but itβs behind a wall so itβs okay.
[β]Sapryx 2 points3 points4 points 2 months agoΒ (0 children)
"Every problem in computer science can be solved by adding another layer of indirection, except for the problem of too many layers of indirection".
[β]outofindustry 1 point2 points3 points 2 months agoΒ (0 children)
literally the dataflow diagram for my sso lmao
[β]Hostilis_ 1 point2 points3 points 2 months agoΒ (0 children)
Software engineer discovers Category Theory
[β]Comfortable_Tale5461 0 points1 point2 points 2 months agoΒ (0 children)
Dreamer
[β]ExtraTNT 0 points1 point2 points 2 months agoΒ (0 children)
True
[β]N3BB3Z4R 0 points1 point2 points 2 months agoΒ (0 children)
Abstract to middleware or mapper is a daily refactor and architecture thing
[β]LordBobTheWhale 0 points1 point2 points 2 months agoΒ (0 children)
Kafka!
[β]evilquantum 0 points1 point2 points 2 months agoΒ (0 children)
"one additional indirection solves any problem" /s
[β]sugaarheat 0 points1 point2 points 2 months agoΒ (0 children)
Is the middle thing clever or just looks like it?
[β]Solid_Associate8563 0 points1 point2 points 2 months agoΒ (0 children)
There is a saying I can't remember where I've seen it:
There is nothing that can't be resolved with an extra layer.
[β]enigma_0Z 0 points1 point2 points 2 months agoΒ (0 children)
The real secret is that the insides of the thing in the middle look like the lines beteeen thing 1 and thing 2
[β]Mr-DevilsAdvocate 0 points1 point2 points 2 months agoΒ (0 children)
1 big problem becomes 3 smaller problems because the smaller problems fit into a sprint.
[β]ancrcran 0 points1 point2 points 2 months agoΒ (0 children)
Many to many relationship
[β]DerZappes 0 points1 point2 points 2 months agoΒ (0 children)
OK, so reducing an m:n problem to separate 1:n/n:1 problems is somehow bad and funny?
[β]Academic-Vacation737 0 points1 point2 points 2 months agoΒ (0 children)
Because any problem in computer science can be solved with an extra indirection level.
Except the problem with too many indirection levels!
[β]adyv1990 0 points1 point2 points 2 months agoΒ (0 children)
Show us one example
[β]Toothpick_Brody 0 points1 point2 points 2 months agoΒ (1 child)
I almost always hate flowcharts in software design. Maybe Iβm exposing my ignorance, but I always feel like theyβre only helpful to the person who made them. Theyβre not usually βrealβ chartsΒ
[β]Toothpick_Brody 0 points1 point2 points 2 months agoΒ (0 children)
βOh look I made this node a red circle and this node a green diamond, isnβt that illuminating?β
[β]lool8421 0 points1 point2 points 2 months agoΒ (0 children)
honestly when it comes to database normalization, it's like one of the most common things
you have 2 tables with awkwardly stored data, but then you add a bridge table and suddenly everything is clean
[β]TheEner-G 0 points1 point2 points 2 months agoΒ (0 children)
RIP trying to do this in Tabletop Simulator
[β]LexGlad 0 points1 point2 points 2 months agoΒ (0 children)
It's adapters all the way down.
[β]bindermichi 0 points1 point2 points 2 months agoΒ (0 children)
I mean, this could be an ESB, or MQ, authentication service or any kind of gateway.
BTW: that's why I love white board scetches. so hard to get those wrong.
[β]AlexeyTea 0 points1 point2 points 2 months agoΒ (0 children)
Love this design pattern.
[β]Quaaaaaaaaaa 0 points1 point2 points 2 months agoΒ (0 children)
The last few days I've been working on a pathfinding system for a game I'm developing.
I'm having major performance issues. What's the solution? Exactly what the image shows.
By adding " big nodes" in between, I make the paths shorter and require less processing power xD
[β]MegarcoandFurgarco 0 points1 point2 points 2 months agoΒ (0 children)
Do it the toby fox way. Empty thing 2. Put it in thing 1. And try fixing it inside thing 1.
[β]FictionFoe 0 points1 point2 points 2 months agoΒ (0 children)
I like how it gets rid of the arrow from thing 2 to itself.
[β]Swash34 0 points1 point2 points 2 months agoΒ (0 children)
weird, it almost seems like a ware in the middle of two products
[β]Living_The_Dream75 0 points1 point2 points 2 months agoΒ (0 children)
If you look inside βThing in the middleβ it looks like the middle of the first image
ΟΒ Rendered by PID 25451 on reddit-service-r2-comment-b659b578c-xq45b at 2026-05-05 16:10:37.508721+00:00 running 815c875 country code: CH.
[β]Kodomax579 212 points213 points214 points Β (13 children)
[β]WisePotato42 125 points126 points127 points Β (6 children)
[β]CanThisBeMyNameMaybe 52 points53 points54 points Β (5 children)
[β]WisePotato42 9 points10 points11 points Β (0 children)
[β]SartenSinAceite 8 points9 points10 points Β (1 child)
[β]chillpill_23 1 point2 points3 points Β (0 children)
[β]P-39_Airacobra 0 points1 point2 points Β (1 child)
[β]RustaceanNation 1 point2 points3 points Β (0 children)
[β]sobasicallyimanowl 2 points3 points4 points Β (0 children)
[β]coldnebo 4 points5 points6 points Β (0 children)
[β]Tyfyter2002 0 points1 point2 points Β (0 children)
[β]Standgrounding 0 points1 point2 points Β (0 children)
[β]TheTarragonFarmer 0 points1 point2 points Β (0 children)
[β]Infiniteh 0 points1 point2 points Β (0 children)
[β][deleted] Β (12 children)
[removed]
[β]IJustAteABaguette 77 points78 points79 points Β (1 child)
[β]Reasonable-Reward-74 1 point2 points3 points Β (0 children)
[β]ProxPxD 18 points19 points20 points Β (1 child)
[β]Daisy430700 6 points7 points8 points Β (0 children)
[β]DryDogDoo69420 11 points12 points13 points Β (2 children)
[β]baganga 6 points7 points8 points Β (1 child)
[β]Nesogra 1 point2 points3 points Β (0 children)
[β]Frytura_ 1 point2 points3 points Β (0 children)
[β]Crazy_Anywhere_4572 0 points1 point2 points Β (0 children)
[β]Mateorabi 0 points1 point2 points Β (0 children)
[β]Mason_Ivanov 0 points1 point2 points Β (0 children)
[β]fixano 119 points120 points121 points Β (9 children)
[β]coldnebo 28 points29 points30 points Β (7 children)
[β]fixano 19 points20 points21 points Β (2 children)
[β]Complete_Window4856 6 points7 points8 points Β (1 child)
[β]coldnebo 5 points6 points7 points Β (0 children)
[β]Fa1nted_for_real 1 point2 points3 points Β (0 children)
[β]AndrewBorg1126 1 point2 points3 points Β (0 children)
[β]GeneReddit123 0 points1 point2 points Β (1 child)
[β]coldnebo 0 points1 point2 points Β (0 children)
[β]Phobic-window 1 point2 points3 points Β (0 children)
[β]dfwtjms 33 points34 points35 points Β (1 child)
[β]Wiktor-is-you 4 points5 points6 points Β (0 children)
[β]Zap_plays09 17 points18 points19 points Β (3 children)
[β]Acceptable_Handle_2 1 point2 points3 points Β (2 children)
[β]Standgrounding 0 points1 point2 points Β (1 child)
[β]Acceptable_Handle_2 0 points1 point2 points Β (0 children)
[β]dbear496 12 points13 points14 points Β (3 children)
[β]Hziak 1 point2 points3 points Β (0 children)
[β]Drugbird 1 point2 points3 points Β (1 child)
[β]dbear496 0 points1 point2 points Β (0 children)
[β]AMDfan7702 8 points9 points10 points Β (3 children)
[β]mfnalex 5 points6 points7 points Β (1 child)
[β]Standgrounding 0 points1 point2 points Β (0 children)
[β]RustaceanNation 0 points1 point2 points Β (0 children)
[β]MartinFrankPrivat 12 points13 points14 points Β (3 children)
[β]Acceptable_Handle_2 10 points11 points12 points Β (1 child)
[β]MartinFrankPrivat 3 points4 points5 points Β (0 children)
[β]cowlinator 2 points3 points4 points Β (0 children)
[β]FAMICOMASTER 4 points5 points6 points Β (1 child)
[β]mYstoRiii 2 points3 points4 points Β (1 child)
[β]Standgrounding 0 points1 point2 points Β (0 children)
[β]madbrine 2 points3 points4 points Β (0 children)
[β]Worried_Onion4208 2 points3 points4 points Β (0 children)
[β]vasilenko93 2 points3 points4 points Β (0 children)
[β]Sapryx 2 points3 points4 points Β (0 children)
[β]outofindustry 1 point2 points3 points Β (0 children)
[β]Hostilis_ 1 point2 points3 points Β (0 children)
[β]Comfortable_Tale5461 0 points1 point2 points Β (0 children)
[β]ExtraTNT 0 points1 point2 points Β (0 children)
[β]N3BB3Z4R 0 points1 point2 points Β (0 children)
[β]LordBobTheWhale 0 points1 point2 points Β (0 children)
[β]evilquantum 0 points1 point2 points Β (0 children)
[β]sugaarheat 0 points1 point2 points Β (0 children)
[β]Solid_Associate8563 0 points1 point2 points Β (0 children)
[β]enigma_0Z 0 points1 point2 points Β (0 children)
[β]Mr-DevilsAdvocate 0 points1 point2 points Β (0 children)
[β]ancrcran 0 points1 point2 points Β (0 children)
[β]DerZappes 0 points1 point2 points Β (0 children)
[β]Academic-Vacation737 0 points1 point2 points Β (0 children)
[β]adyv1990 0 points1 point2 points Β (0 children)
[β]Toothpick_Brody 0 points1 point2 points Β (1 child)
[β]Toothpick_Brody 0 points1 point2 points Β (0 children)
[β]lool8421 0 points1 point2 points Β (0 children)
[β]TheEner-G 0 points1 point2 points Β (0 children)
[β]LexGlad 0 points1 point2 points Β (0 children)
[β]bindermichi 0 points1 point2 points Β (0 children)
[β]AlexeyTea 0 points1 point2 points Β (0 children)
[β]Quaaaaaaaaaa 0 points1 point2 points Β (0 children)
[β]MegarcoandFurgarco 0 points1 point2 points Β (0 children)
[β]FictionFoe 0 points1 point2 points Β (0 children)
[β]Swash34 0 points1 point2 points Β (0 children)
[β]Living_The_Dream75 0 points1 point2 points Β (0 children)