To achieve perfection you have to get every little thing just right, and that implies complexity. What it doesn't necessarily imply is complex processes or products, which is the problem with software.
Making the perfect knife, or the perfect cup of tea, can be done by one person with just two or three tools. But you have to know how to get everything just right, and that requires a lot of knowledge and experience.
You can make a machine or abstractions to handle most of these things, but rather than reach perfection, they just reach a reliably satisfactory facsimile. We keep tinkering, like an amateur sculpter carving out a mountain, because we're still hoping for perfection.
Plus there's also "I can't understand what your code is doing therefore it sucks I need to write everything from scratch using a more modern language that looks better on my CV"
But we tend to make simple things very complex in order to make them perfect.
The complexity then becomes the problem.
And we are back where we started for another attempt at perfection.
The wheel goes round and round.