Nice read. I really appreciate his comments about over-engineering to the point that nothing useful actually gets accomplished. I've seen a lot of that.
And really the over-abstraction is wasted time. I've seen things added because "we might need them some day". These things take days or weeks to add and then never are used by customers even after many years have passed.
The over-abstraction seems to be a drug to some developers. They can't stop doing it.
Not to mention that code that is only there to provide future-proofiness can be a huge hurdle to understanding an existing codebase for any developer new to a project. The hours spent on trying to understand code that doesn't seem to make sense, only to be told that "we put that in just in case we needed xyz, but it's actually not used anywhere", can be incredibly unproductive and frustrating.
And really the over-abstraction is wasted time. I've seen things added because "we might need them some day". These things take days or weeks to add and then never are used by customers even after many years have passed.
The over-abstraction seems to be a drug to some developers. They can't stop doing it.