This is sort of like the old "Water is wet; news at 11." thing.
But simple is not easy. In my experience, it often comes after complexity.
My general approach to simplification is to first get it working; even in a complicated fashion, then start removing stuff, until it stops working. If I can't get it working on the latest simplicity, I am forced to add the last thing back.
But I can usually get it going, which may sometimes require a rearchitecting.
One of the happiest times for me, when I'm writing code, is when I get to toss out a whole bunch of painstaking work that I did.
I'm going through that now. I'm working on an app that has necessary complexity, and I'm finding ways to toss out code all over the place.
"First, make it correct. Then, make it beautiful. Then, if you need to, make it performant. Because 9 times out of 10, making it beautiful also makes it performant enough."
But simple is not easy. In my experience, it often comes after complexity.
My general approach to simplification is to first get it working; even in a complicated fashion, then start removing stuff, until it stops working. If I can't get it working on the latest simplicity, I am forced to add the last thing back.
But I can usually get it going, which may sometimes require a rearchitecting.
One of the happiest times for me, when I'm writing code, is when I get to toss out a whole bunch of painstaking work that I did.
I'm going through that now. I'm working on an app that has necessary complexity, and I'm finding ways to toss out code all over the place.