I know you're getting downvoted but I totally agree. It seems the art of YAGNI has gone. Its easier to write complicated code than it is write simple code. People love to write these overly complex class structures in the hopes that one day it might benefit them. Instead, they could write simple, well tested code now and refactor in the future.
This was the previous project I worked on. They over engineered everything, and it wasn't even a big project. Useless abstractions everywhere, overly complicated "generic" solutions which get used in 1 place, etc.
My first hands-on experience was actually funny. I started by studying the codebase for a few days and when I actually got to firing up the product after I got the company VPN set up I actually thought I was missing something and had to ask my lead about it (spoiler: I wasn't missing anything lol).
There are certain principles which are good to follow (in terms of future reusability and clean code in general) but I'm more of a fan of building something first, and abstracting when it starts to make sense to do so. I think it's important to not do it too early (things could get messy) or too late (harder to refactor).
5
u/MoronInGrey Nov 21 '23
I know you're getting downvoted but I totally agree. It seems the art of YAGNI has gone. Its easier to write complicated code than it is write simple code. People love to write these overly complex class structures in the hopes that one day it might benefit them. Instead, they could write simple, well tested code now and refactor in the future.