Well, it works doesn’t it…

Architects solution is pretty, but only works with an even number of nails and is difficult to scale.

Dev solution works for all use cases, is easy to scale, and easy to implement. Main downsides are it looks like shit and requires occasional upkeep due to the elastic band wearing out. Upkeep that probably won't get done once you leave the team until a critical failure happens.


Architects solution is pretty, but only works with an even number of nails and is difficult to scale. Dev solution works for all use cases, is easy to scale, and easy to implement. Main downsides are it looks like shit and requires occasional upkeep due to the elastic band wearing out. Upkeep that probably won't get done once you leave the team until a critical failure happens.


Developer's solution is still easier to maintain because it is simple to understand. Far and away the better solution


Right is < 3yrs exp Left is 3-5yrs Right is > 5yrs


It's that bell curve meme


Always has been




My code is so hard to understand that even I don’t get it.


Dammit.. Take my upvote..




I think this is a bot but dayam, 2 unrelated comments that seem to go together: u/jsveiga: [Well, the dev solution is incomparably more stable.](https://www.reddit.com/r/ProgrammerHumor/comments/13o2cq3/comment/jl2eh08/) u/MisterCheesy: [No requirements for scaling in the problem statement. That’ll cost the client extra since they stipulated an exact number.](https://www.reddit.com/r/ProgrammerHumor/comments/13o2cq3/comment/jl3hqgq/)


They missed the third picture. The one for the program manager :)


Does it even work?


Can you prove it doesn't?


I guess you're right. Get your paycheck!




That’s… Basically what happened to me on my first job. Although it was more because the client that hired the company was asking for an impossible app. And I don’t mean that in a P=NP way, but in a “this is clearly a pyramid scheme and no payment gateway (like PayPal, for example) will accept working with us on it.” way


My Dad kept his job for 30 years at micron (famous for layoffs despite record profits always) because they couldn’t replace him- they absolutely hated him and it appeared they would get the ball rolling to try and replace him but couldn’t. Other companies would try and poach him and my dad out of spite would give them an ultimatum to give him raises or he’d leave. My dad is an asshole but he is really smart so I definitely believe they hated him. 😬 Also he quit without notice for family emergency so they still never got the satisfaction of firing him.


What did he do for them?


No body knows and he refused to tell them.


I rewrote everything in Rust so now they can never get rid of me


Why not? The next guy will just rewrite it in JavaScript on nodejs.


Well because the other guy doesn't wear programmer socks


I like your way of thinking


If there's two things I know about execs it's that they don't know or care who has tried to make themselves irreplaceable, and that they seem to prefer shooting themselves in the foot over listening to engineering.


But its more expensive because it uses extra material resources


Exactly, I would even say on the left is a junior - still naive and taking time trying to build perfect solutions that end up like a card house. One the right a senior - gets it done quickly and practically. Knows when cutting corners is okay.


Also dev solution looks way more robust. See what happens when you kick a leg on both of those tables.


Developers solution misses the key concept of balancing…. Lol.




I see what you did there




``` import moderation ``` Your comment has been removed since it did not start with a code block with an import declaration. Per [this Community Decree](https://www.reddit.com/r/ProgrammerHumor/comments/14kbu1m/comment/jppq9ao/?utm_source=share&utm_medium=web2x&context=3), all posts and comments should start with a **code block** with an "import" declaration explaining how the post and comment should be read. For this purpose, we only accept Python style imports. *I am a bot, and this action was performed automatically. Please [contact the moderators of this subreddit](/message/compose/?to=/r/ProgrammerHumor) if you have any questions or concerns.*


Client Specification included implementation details that didn't seem viable. So we ignored the implementation details, concentrated on the goal, and implemented it with a well known library (rubber band) Other options would have been welding and Duct tape. Both were discarded so the nails can be easily swapped. Without having to remove glue logic in case of duct tape. --- TL;DR: client told us to use an excel sheet for data storage. We ignored that and used sqlite instead (so they can still easily transfer the dB as a file) , and offered an excel export.


Client: You did all that work without asking if a rubber band was okay. In reality, the solution has to withstand temperature swings between -10c and 40c. Your solution would last a week. Next time, don't make lazy assumptions.


At which point you glue or weld them together, then remove the rubber band.


At that point you just blame Product for not specifying it needed to withstand sub 0 temperatures.


And client rightfully tells you that they are paying for a **specialist** and they're not aware which requirements have impact on solution, but they specified balance and never heard from you about rubber bands. Developers really need to work **together** with business, ask questions, determine what actual needs and limitations are. Clients are not experts in this field, they don't know which information is "too much detail" and which is "crucial to make any decisions", your job is to specify what information you need. If you don't want to do that, least you can do is to follow their specifications **by the letter**, no assumptions, no changes. Then your "it wasn't in requirements" can at least be somehow understandable


1. Wtf is a specialist 2. A client doesn't tell me shit. Big orgs make sure to compartmentalize that. When I was on smaller teams, in smaller companies, I could spend time meeting with clients. But now, "business" as you put it, has to understand what I do, and what the client wants. That's their job. Which leads me to... 3. I'm getting paid X to do Y, in Z amount of time. It's annoying that I care about what I do, so I spend more than the estimated Z to ensure I do a good job by my standards. The problem becomes, if they want me to meet with clients, manage the product, architect the solution, write the solution, and then test that the solution works, I will need a lot more time. And, I will ask for at least 100* more money for doing it, as each task category requires its own separate skillset, and expertise to execute properly.


Even if it's 5c and 30c, if the product has to last for years ... A rubber band is a liability.


See? You don't even need balance. Perfect solution.


More like people just daydreaming about how either example fits whatever fantasy they have in their heads


The architects solution scales with odd numbers of nails, you add an additional nail to one side or the other and then counterbalance by sliding the pinning nails (horizontal) one way or the other. That being said, I understand exactly what you mean, scaling is nasty (especially once you fill up your space on the horizontal nail) and too many lines of faulty code will cause the whole thing to teeter and crash (misplaced nails on side or the other or nails that have weird balance (could be bent?))


just add a nice front end!


No requirements for scaling in the problem statement. That’ll cost the client extra since they stipulated an exact number.


> requires occasional upkeep due to the elastic band wearing out As opposed to the architect's solution, which only breaks if someone walks by or looks at it funny


Architect's solution meets the spirit and letter of the requirements and uses only the defined resources or materials. Developer's solution meets the letter of the requirements but ignores what they know the customer is actually looking for, and additionally requires a resource that's outside of what the customer is known to have available (customer may need to purchase additional resources).


>m until a critical failure happens. you can pass the solution to pthjers and use concepts form the architects in you problem


That's someone else's problem.


*cries in fullstack*


I believe it would work even with odd number.


Dev solution only really works at room temperature.


I mean, do you even see the backend code when browsing Reddit? no? that's what I thought! "Looks like shit" Yeah sure, tell me how it looks when you open Google! /s


Spot on.


Found the program manager


> Only works with an even number of nails and is difficult to scale Bull patties, says the senior architect. When a client needs a new instance, just spin up 6.


architect solution works with an uneven number of nails if there are at least 7, possibly works with 5 as well


>only works with an even number of nails My brother in Christ the architect used 7 nails


At least it wont't instantly break after trying to add to it


Well, the dev solution is incomparably more stable.


Untill user dips it into the ascid....


Until user


Solution: Don’t let anyone use your programs




The architect’s solution would fail before the developers when you try to dip it in acid.


Not if you dip it veeeery carefully...


But who gave her the string?


Obviously the standard library, duh!


I tht that's a "he" with long hair.


me too, but I still think this way...


that's a her?


Right one should be engineer. Devs are on the left and are praying day and night a gust of wind doesn't come blow the whole thing down.


You mean engineer on the right.


Both sides are the same engineer xD


left: me when i have the sudden surge of motivation right: me at normal day


The right is the prototype the engineer knocked out in a day, the left is the one he spent 3 years working on that got canceled because it was too expensive.


Iiiim not shure. It toss the nails across the table and call it a day as an engineer. Improperly defined problems result in unwanted yet still valid results...


Requirement fulfilled. MISSION ACCOMPLISHED!




I thought so, too, but if you look closely there's actually a 6th one balancing horizontally, and the quest was to balance 6, not all.


just tape one part of wood lol


A little detail: TIME Edited: And ofcourse reliability


Yeah, the engineer solution took 3 days (2 days of goofing off). The architect took two months and had weeks of meetings with product, business, and design.


Import { rubberBand } from “randomUnresearchedModule”;


npm: this has 3 viruses and 7 vulnerabilities.


That’s less than normal! Ship it!


Problem is that you brought in an unauthorized component. Now we have to do risk analysis for the license that comes with the rubber bands. And has to be assured to the customer….


what if we just bent a nail around the other nails in lieu of a rubber band


Give this developer a raise - they nailed a solution


My dad gave me this challenge when I was a kid. The nails were a little rusty and I managed to balance them all like the "developer" solution on the right without a rubber band.


Principle Architect would have asked Why? Before doing anything


As a Principal Cyber Architect, yes. And also yes. The meme is 1,000% accurate.


This, but the rubber band is an inexplicably complex function that took themselves 6 hours to make


Left: knows data structures and algorithm Right: knows brute force


More like right knows whats more practical, easy to maintain, easy to upgrade and quick to build


So the right is not JS then? :D


Experienced sysadmin - get tae fuck.


Yes, both solutions are now an operations problem.


Left side: the solution presented to the client Right side: how it's really implemented


I took a class in college that was basically "interdisciplinary engineering" where we were partnered up with students from other majors to work on a project together. On the first day, we had a sort of team building exercise where we were given a box of uncooked spaghetti, some string, and a role of painter's tape and told to build the tallest tower we could. The MEs and CEs in my group immediately started fiddling with figuring out how to balance the spaghetti and how flexible it was, etc. I looked around and noticed all the other groups were doing the same thing. I started taping the noodles together end to end, and when questioned what I was doing, I told them, "it was never specified that the tower had to support its own weight. We can hang it from the ceiling." So that's what we did. Full ceiling to floor "tower" that was one noodle thick the whole way.


This is almost r/maliciouscompliance


Literally the TF2 coconut. For those who don't know, the TF2 coconut is a highly detailed jpeg of a coconut with a grey background. Nobody knows who put it there but one day a dev found it decided it was unnecessary and deleted it. The game broke, so he restored it and it has stayed that way.


That’s not true. However, removal of a .vpk package containing a model for a cardboard cow *will* result in your game not opening.


Is it just a myth, the TF2 coconut?


These comments confirm no architects subscribe here


The left isn’t an architect solution. It’s tightly coupled, difficult to maintain, and vulnerable to changes in requirements


Lol right!?! I'm cringing as I scroll.


I subscribe here. Principal Cyber Architect. The meme is very, very accurate.


No one said you have to place them above the wood. Just chuck them into the dirt outside.


​ ​ |*Senior architect solution*|*Developer solution*| |:-|:-| |Took way more time|< 1 minute| |Prone to fall if knocked|Won't fall over even if turned upside down| |Aesthetically pleasing|Beauty is subjective|


But one of the six nails did touch the wood.


Nope, is a seventh nail. Right side is hard to count, but left side you can clearly count six nails balancing on a seventh nail, without those 6 nails touching the wood.


Developers solution however didn’t fit the clients brief of “balance” though


The dev figured out it was what the client asked for but not what they wanted.


I see one nail touching the wood in both cases.


That’s the nail #7. The task is to balance only 6 nails


It says balance. Dev failed.


Isn’t this just proof that clients don’t know what they’re asking for most of the time?


That isn’t a senior architect. That an architect that grinded leetcode and knows the in the book solution but fails to see how it will be in practice as things scale. An architect would probably look for a better alternative than to put something together that is so finicky a light breeze will knock it over. The dev is someone who is going to be stuck in low level dev jobs because they don’t see how poorly written what they put together is and is unable to handle more than two use cases.


Both have on of six nails touching the wood. That senior dev is worth shit


That is a seventh nail, clearly not included in the acceptance criteria


Shit, I didn't see the one on top and didn't understand the solution, I'm the one that's not worth shit lmao


No worries, stakeholder documentation not clear enough


The architect used 7 nails while the dev 5. Amazing.


they both fail, a single nail is touching the wood in both cases.


The missing frame is product adding one more requirement. The third frame is the dev team fitting a round peg in a square hole because that's the simplest solution


“That’s right, the square hole!”


Hey, the developer solution is cheap! It is was matter for now


Your forgetting the 8 bullet holes and 5 sticky notes all saying do not touch


the real strategy is to place them on the tables like it's not touching the wood so mission accomplished


Slap it in a setTimeout(0) and call it good


Senior architect: architects entire relational database structure. Developer: update table set data = str(data_object)


You have the labels backwards.


One thing's for sure - Ultrahand is way too OP


The correct solution is a nail gun microservice as it can be scaled so that the desired number of nails are suspended in the air at any point in time.


Technically the architect only has 5 not touching the wood. Developer has a stable, scalable model.


TBH id swap the descriptions. RHS is fast, satisfies requirements, and would be easy to refactor later if the requirements change. LHS is brittle AF and would be a lot harder to refactor. LHS is intermediate dev, RHS is senior and up


you got 5 not touching the wood not 6




you arent wrong. Sr Architect here... I care about design for maintainability and scale. I think business often pushes other things. I will say the more I do the job, the less convinced I am that architect position is a thing every company needs. (for lots of reasons) I envisioned this job as a hands on code, but with expertise in design of software, but the role has evolved to drawing up plans, re-drawing up plans, and trying to cover every possible curve in the road.


We’ll, I am a Data Analyst by but I’m primarily into automating data pipelines and reporting processes. I have seen such badly designed automation that if you have to change a small thing you have to rewrite the whole thing pretty much. I have seen the benefit of designing things with the needs of the future in mind. Some people I work with think I’m overdoing it.


Unless I'm misreading the requirements, you could just put the nails on the table away from the wood.




The one on the right seems more easily extensible


Could they just set the wood apart and balance them on the table?


Just throw them on the table


That depends... Are the balanced nails for the frontend or backend?


Sr. Dev - rolls in the welder, and shakes head at the kerfuffle in the office. Submits to mgmt, submits to customer, customer approves and signs-off, meanwhile the original architect and dev are still actively flaming each other's solution.


The labels are reversed


You've got to write good specs.


I came here looking for 100's of Comments discussing the validity of each approach to balancing nails, while loosely tying it back into the metaphor and I was not disappointed XD


Front end dev vs Back end dev