Writers write stories with words.
A good developer understands that a program is about data. Data behaves. The program has threads and control, but a good design is about how the data behaves under certain conditions.
A good writer understands that a story is about characters. Characters behave. The story has a plot, but a good story is about how characters act and react to their worlds.
A good developer understands that code is for people, who will need to understand it in the future when it needs to be fixed, improved, or even replaced. Writing elegant code that demonstrates skill and runs efficiently is fun, but if it can’t be read, it’s just bad code.
A good writer understands that their writing is meant to be read and understood. Beautiful prose and intricate description can be rewarding to write, but if it can’t be read and enjoyed, it’s still bad writing.
There is no such thing as completely correct code. There comes a point where it’s best to release the application and walk away, at least for a while. Maybe there will be another release.
There is no such thing as a finished story. There comes a point where it’s best to press “publish” or send it to an editor (or whomever.) Maybe someday you’ll write another version of it.