And instead it gets replaced with the actual root of all evil, complexity.
Many problems have tons of inherent complexity already.
TL;DR: Vibes
Fun fact: Win32 checkboxes are buttons with a bitflag that says they are actually checkboxes.
Here we're loading the customer record and updating their discount %
Here we're loading the broker record and updating their commision %
They will have 99% identical code.
It's possible but exceedingly unlikely we have found 2 things that should be a load_record_and_update_percent(file,id,field,val)
Tomorrow the business logic behind one of those will no longer be a simple % and now you have a real mess.
It can, that's all about how aggressively you factor and structure your code, eg. combinators make it easy to reuse code in different application patterns without rewriting.
Even in that case the refactor can introduce mental overhead when having too many different variable / properties names
Very similar with patterns. I've often read people protesting that juniors overuse design patterns, yet I've seldom seen a junior (mis)use anything more complex than a singleton, and when they use any pattern, it's usually forced upon them by an opinionated Java framework.
Shape::Polygon::ConvexPolygon::FourSidedConvexPolygon::Square::BlueSquare...
"Intro to OOP" lectures/articles made a deep impression on some people in not quite the right way :)
Mind you, I mean enterprise and line of business software, not hobbyists. I also mean of their own volition, not the kind of nonsense that Java frameworks often forced on them (all the patterns under the rainbow, factory abstract method factory of abstract methods).
Regarding OOP itself, I also remember when "favor composition over inheritance" became a thing. Was this reversed too?
I think this is generally still the advice, when working in OOP contexts.
----
[1] https://archive.is/QVPj (excuse the archive link, Ted Neward's blog seems now lost to linkrot).
> I love an ORM.
No trolling: What langauge and what framework? One thing I can say from experience: I have seen some teams where they have deep knowledge of an ORM framework, and they are crazy productive when writing enterprise CRUD software. > Are ORMs still a thing?
In enterprise CRUD software: Absolutely. > favor composition over inheritance
I was very late to arrive to Java around 2015. This expression was wide-spread at the time. For those involved with "OOP" enterprise languages like .NET/C# or Java, when did "favor composition over inheritance" become dominant?I've seen it occasionally. There was one junior whose code I saw littered with DTO that're an exact copy of the business object and DAOs where every method is just a wrapper for a Hibernate method. But yeah it's rare.
(Alas! Sometimes you pick up bad habits from experienced people, and being a junior, you don't know better)
„How Software Groups Rot: Legacy of the Expert Beginner”.
https://daedtech.com/how-software-groups-rot-legacy-of-the-e...
I have recently fallen into a job at a small company that really seems to have this culture. Thankfully, I'm only going to be here for a year and a half or so (fixed term job for working holiday visa), but I'm trying to be really aware of how its impacting my career development.
There is no automated testing, no meetings, seemingly no code review process, no standardization of schemas for files that are passed between different applications, all jobs are run on on prem desktop workstations.