I hate OOP, design patterns, and SOLID/KISS/DRY. I especially hate Hexagonal/Clean Architecture and Kubernetes. I hate being asked about it in interviews and supporting overengineered code created by colleagues who passed all interview filters.
You can call me an unskilled monkey and brainlet, but I don't care.
Grok said this
Bernd
Thu, 13 Mar 2025 03:56:19 GMT
No. 25626996
Does knowing answers to OOP principles, patterns, and SOLID really allow us to hire the best developers? Is there any data that proves it?
Whether knowledge of Object-Oriented Programming (OOP) principles, design patterns, and SOLID principles directly correlates with hiring the "best" developers is a nuanced question. While these concepts are widely regarded as foundational to writing clean, maintainable, and scalable code, there’s no definitive, universal data that proves mastering them guarantees hiring top-tier talent. However, we can explore the reasoning behind their importance, the evidence that supports their value, and the limitations of relying solely on this knowledge as a hiring criterion.
Why These Concepts Matter in Hiring
OOP principles (like encapsulation, inheritance, polymorphism, and abstraction), design patterns, and SOLID principles (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) are tools that help developers structure code effectively. They’re often taught and emphasized because they:
Reduce Technical Debt: Well-structured code is easier to maintain and extend, saving time and resources long-term.
Signal Problem-Solving Skills: Understanding these concepts suggests a developer can think abstractly and design systems thoughtfully.
Align with Industry Standards: Many successful software projects (e.g., Java’s SDK, enterprise frameworks like Spring) leverage these principles, making them practical benchmarks.
Hiring managers often test for this knowledge because it’s a proxy for experience and competence in software engineering—qualities associated with high-performing developers. For example, a developer who can explain why the Dependency Inversion Principle reduces coupling is likely to write modular code, a trait of "better" engineers.
Evidence Supporting Their Value
While no single study definitively states "knowledge of SOLID = best developers," there’s indirect evidence from industry practices and research:
Adoption in High-Performing Teams: Companies like Google, Amazon, and Microsoft emphasize software design in their engineering cultures. Google’s engineering interviews, for instance, often probe system design skills, which include OOP and pattern-related concepts. Their hiring data (e.g., from the book Work Rules! by Laszlo Bock) shows that structured problem-solving ability correlates with on-the-job performance, though it’s not specific to SOLID alone.
Code Quality Studies: Research like the 2018 study from the Journal of Systems and Software ("The Impact of Design and Code Quality on Software Maintenance") found that adherence to design principles (including SOLID) correlates with lower defect rates and easier maintenance. Teams with developers who understand these principles tend to produce more reliable software.
Developer Surveys: The Stack Overflow Developer Survey (e.g., 2023 edition) consistently shows that experienced developers value "problem-solving" and "code quality" over raw coding speed. Knowledge of OOP and SOLID often underpins these skills, suggesting a link to perceived developer quality.
Limitations and Counterpoints
However, equating mastery of these concepts with "the best developers" has flaws:
No Direct Causation: There’s no public dataset (e.g., from hiring platforms like LinkedIn or Glassdoor) that tracks "SOLID knowledge" against long-term developer success metrics (e.g., project delivery, innovation). Correlation isn’t causation—knowing SOLID doesn’t guarantee practical excellence.
Context Matters: A developer might ace an OOP quiz but struggle with real-world trade-offs (e.g., performance vs. maintainability). For instance, over-applying SOLID can lead to over-engineered code, which some argue harms productivity (a critique from developers like Casey Muratori in his "Clean Code, Horrible Performance" talk).
Alternative Skills: The "best" developers often excel in areas beyond OOP—communication, domain knowledge, or adaptability. A 2021 study from the IEEE Software journal ("What Makes a Great Software Engineer?") highlighted traits like collaboration and resilience as equally critical, yet harder to test.
Experience Over Theory: A junior developer might recite SOLID principles perfectly but lack the experience to apply them effectively, while a seasoned coder with weaker theoretical knowledge might deliver robust solutions intuitively.
Data Gaps
Unfortunately, no specific, widely available dataset ties OOP/SOLID mastery directly to hiring outcomes. Companies rarely release proprietary hiring data, and academic studies tend to focus on code quality rather than developer hiring success. To get such data, you’d need:
A longitudinal study tracking developers’ OOP knowledge at hiring against their career performance.
Controlled experiments comparing teams with and without SOLID-trained developers—something impractical in real-world settings.
Practical Hiring Perspective
In practice, knowledge of these principles is a useful filter, not a definitive measure. For example:
Interview Performance: A candidate who articulately discusses how the Open-Closed Principle helped them extend a legacy system likely has practical experience—valuable for hiring.
Code Reviews: Teams often assess hires via coding tasks. Those leveraging patterns like Factory or adhering to Single Responsibility tend to produce cleaner submissions, aligning with "better" outcomes.
False Positives: Someone might memorize SOLID answers without understanding their application, passing a theoretical test but failing in practice.
Conclusion
Knowledge of OOP principles, patterns, and SOLID doesn’t "prove" you’ve hired the best developer—it’s a piece of the puzzle. It’s a strong indicator of technical literacy and design awareness, which are traits of high-quality engineers, supported by anecdotal industry reliance and some research on code quality. But without comprehensive data linking this knowledge to long-term success (e.g., innovation, team impact), it’s not a silver bullet. The best approach combines this assessment with practical coding tests, behavioral interviews, and cultural fit—ensuring a holistic view of a candidate’s potential.
If you’re looking for more concrete data, it’s a gap the industry hasn’t fully filled yet—perhaps a future study will quantify this link more precisely!
Bernd
Thu, 13 Mar 2025 04:03:25 GMT
No. 25627016
>>25627055
>>25627060
>OOP
Yeah, it's a bit too far with Java snobs, for example. Creating a class for a single function is stupid
>Design patterns
Mostly useless for sprint driven culture
>SOLID/KISS/DRY, Clean
It's all good, if you don't nitpick every detail
>Hexagonal, Kubernetes
Overcomplicated crap. Especially YAML driven development
Bernd
Thu, 13 Mar 2025 04:15:51 GMT
No. 25627055
(removed)
>>25627016
> Clean
> good
No, Clean Architecture is shit SHIT. Why do you say that Clean Architecture is good, but Hexagonal Architecture? For it's the same garbage.
I forget to say that DDD is shit too.
Bernd
Thu, 13 Mar 2025 04:17:09 GMT
No. 25627060
>>25627405
>>25627016
> Clean
> good
No, Clean Architecture is shit SHIT. Why do you say that Clean Architecture is good, but Hexagonal Architecture is bad? For me, it's the same garbage.
I forget to say that DDD is shit too.
Bernd
Thu, 13 Mar 2025 04:39:22 GMT
No. 25627122
>>25627117
Get your soft skills up Teej
Bernd
Thu, 13 Mar 2025 04:49:21 GMT
No. 25627140
>>25627142
KISS as in Keep It Simple Stupid?
it's just a general design tip,
and not specifically about software design.
Bernd
Thu, 13 Mar 2025 04:52:29 GMT
No. 25627151
>>25627204
>>25627230
> I hate KISS
> I hate overengineered code
pick one
Bernd
Thu, 13 Mar 2025 05:06:06 GMT
No. 25627204
>>25627238
>>25627151
>I hate overengineered code
I like the adepts of a culture of minimalism in software development. The people who created BSD and its derivatives, OpenBSD, NetBSD, and FreeBSD, are way more intelligent than regular modern slope generators. We need to aim for maximal clarity and power with minimal code size.
Bernd
Thu, 13 Mar 2025 05:10:43 GMT
No. 25627230
(removed)
>>25627151
KISS is sometimes paradoxical cause the simple solution is not the short one.
Bernd
Thu, 13 Mar 2025 05:12:39 GMT
No. 25627238
>>25627204
> We need to aim for maximal clarity and power with minimal code size.
You can aim for that, sure, but almost always you have to sacrifice one of those. Often, two.
Bernd
Thu, 13 Mar 2025 05:17:50 GMT
No. 25627254
>>25627265
>>25627294
i have never got schooling on programing or worked at a job but i think it is just blatantly obvious why oop is powerful.
you can get multiple people working on a single project with out overwriting there code. each person can pick up a object and just make it and test it on its own, its just making modules. its got strict syntax making it harder to make runtime errors why java took off in enterprises.
design patters make it so that you dont fuck your self or make over over engineered hacks that only suppress the underlying issue by throwing more code at it.
look at things like ORM and stuff and you can quit clearly see how that alone makes oop really powerful and a dream.
that being said, java sucks. go find jobs that dont use oop langauges
Bernd
Thu, 13 Mar 2025 05:22:07 GMT
No. 25627265
>>25627313
>>25627254
>look at things like ORM and stuff and you can quit clearly see how that alone makes oop really powerful and a dream.
Have you ever tried to work on a big project with some slope ORM software like Hibernate? I thought everyone in the industry what problems it causes: https://en.wikipedia.org/wiki/Object%E2%80%93relational_impedance_mismatch
Bernd
Thu, 13 Mar 2025 05:28:58 GMT
No. 25627294
SÄGE!
>>25627254
>go find jobs that dont use oop langauges
Go-slope is supposed to be simple language in which you have to write simple procedural code to make shit done, but Jave cargo cultists are everywhere, and they force me to write code in this style. I suffer because I need money from them.
Bernd
Thu, 13 Mar 2025 05:33:04 GMT
No. 25627313
>>25627265
i have not worked on a big project. i actually just learning eloquent and seeing n+1 issue and stuff.
i have had to make my own interface in a db writing raw sql and trying to get objects out by serializing and deserializing . it was so confusing massive and held by strings
Bernd
Thu, 13 Mar 2025 05:33:44 GMT
No. 25627316
>>25627347
>>25627371
>>25626986
There's 2 kind of developers I respect.
1. ancient C wizards who casually inline assembly and pretend C++ doesn't exist
2. functional autists with Haskell as religion which write more pragmatic OCaml/Rust on the job
Anyone else can go to hui.
I admit we should respect C++ gurus who build some of the big applications the world runs on, but if they were really wise they would have invented a better language beforehand. I'm incapable of respecting them.
Hijacking this programming thread to say I fucking hate Terraform. I'm not a devops/cloud/infrastructure person, but I've been forced to handle all of that for the application I built. I'm not trying to set up any crazy complicated infrastructure, just enough for a scalable, secure REST API server, and it's been a nightmare to do it in terraform, which my company requires. I've had to learn all this shit on my own in a matter of a week because our cloud team is comprised of weird dudes who always insist they're super busy and often bring our infra down.
IaC is a good concept, but Terraform is comically bad. The "programming language" is clearly the product of a literal iq89. It's impossible to be DRY with it, and it's such a clusterfuck, to this day, there's no agreed-upon best-practice project structure. Because it's fundamentally impossible to write a clean and elegant terraform workspace.
And the worst thing, the results from a `terraform plan` dry run doesn't always correspond to an actual deploy with `terraform apply`. It's maddening, completely unacceptable. How do people manage to make this shit work reliably? It's wasted so much of my time. Terraform should just be a yaml file thing, not this insane "code" solution.
Bernd
Thu, 13 Mar 2025 05:40:30 GMT
No. 25627336
>>25627384
>>25627322
Try https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-typescript.html
and Application Composer instead of Terraform.
Bernd
Thu, 13 Mar 2025 05:42:26 GMT
No. 25627347
>>25627316
C++ is a time waster language. Instead of coming with sane defaults, it wants you to argue with every line of code.
Bernd
Thu, 13 Mar 2025 05:43:04 GMT
No. 25627350
>>25627322
Not much to add here, but Bernd hates Yaml. Of all markup languages, why had it to be the one that's picky about indentation, uses ugly multiline strings and is generally ugly?
And it's everywhere. Terraform, Ansible, Kubernetes.. all the modern tech uses it.
Bernd
Thu, 13 Mar 2025 05:45:28 GMT
No. 25627369
i love being a neet where all i got to do is have a unix box, pick the languages i want and not understand any of these frameworks or languages you guys are talking about
Bernd
Thu, 13 Mar 2025 05:45:44 GMT
No. 25627371
>>25627316
>Haskell
Haskell clicks my autism and is fun to play with simple functions, but overall, it's a mess with 100+ extensions that change language dramatically; laziness and the need for monad transformers are design mistakes, in my opinion. I prefer Ocaml over Haskell because it's so much easier.
Bernd
Thu, 13 Mar 2025 05:47:48 GMT
No. 25627384
>>25627336
Unfortunately my company's in the middle of a years-long migration to GCP, and they don't allow CDK anymore. They told me to deploy it to AWS first for... reasons, with the knowledge it's going to migrate to GCP in a year or two. I guess I'll have to re-write it again for GCP anyway. Fucking hate this shit. Indians should be doing this mindless uncreative work.
Pulumi looks interesting, but again, my company wouldn't allow me to deploy to our infrastructure with anything but our ancient, buggy version of Terraform Enterprise.
Bernd
Thu, 13 Mar 2025 05:51:50 GMT
No. 25627405
>>25627060
Clean is pretty much glorified MVC, simple, old, reliable, easy, just werks, I rarely see a case to use anything else.
Hexagonal is trying to do the same in a non-sane way, throwing in cringy adapters.
DDD is fine too, but works only in a well defined environment, which is kinda a nonsense with this sprint based development plague. I know a bank that has a private key lying in their repo, let alone thinking about properly designing architecture according to their domain.
Bernd
Thu, 13 Mar 2025 06:03:19 GMT
No. 25627446
>>25627322
>our cloud team is comprised of weird dudes who always insist they're super busy and often bring our infra down.
must be a universal platform team thing. I had to research a lot of Terraform shit because they respond to my questions about extending their shitty templates with "uuuuuuhhh just do it"
Bernd
Thu, 13 Mar 2025 07:28:26 GMT
No. 25627646
Go is much worse than java
Bernd
Thu, 13 Mar 2025 08:33:25 GMT
No. 25627799
>>25626986
Extremely based post. DDD, Hexagonal and Clean architectures are so fucking disgusting it's insane. Good thing that companies who use that shit are easily avoided.
Bernd
Thu, 13 Mar 2025 08:37:04 GMT
No. 25627811
Javascript is best language.