Programmers routinely ask me about avoiding rework. I understand their concern, but I find it liberating to be able to get things out of my head, then change them little by little once I can relax and think about it more.

This is why I have practised changing existing code so much: it doesn't bother me and now I'm quite fast at it, so it doesn't cost much. #refactoring

@jbrains everything where I became better, was done by repetition.
Music, dancing, running, talking, walking etc
@jbrains And, if you write some good unit tests, then rework is rather relaxing.
@mcr314 Indeed! "Now that I feel confident that that part is working, how should I really design it? Let's see...."

@jbrains

And you are not only training yourself with it. The code itself gets better and changing it will be less costly, too.

It is even one of the basic concepts of many Indian religions:
https://en.wikipedia.org/wiki/Tapas_(Indian_religions)

Tapas (Indian religions) - Wikipedia

@jbrains once I accepted the idea that code is ever changing I stopped bothering and embrace doing more refactoring.

It's like a house. It might be fine right now but in some years you tear a wall, change painting, etc. In programming happens more frequently.

@cescquintero Indeed, I love that I have options to make small improvements every day in code, which I can't do in some other aspects of my life, such as house renovation.
@jbrains Trying to create excellent code without refactoring is like trying to create a sculpture with a single tap of the mallet.
@romilly I've heard that some people can do it, but I've not yet seen it myself and I don't trust myself to do it.
@jbrains I know a couple of people who can write individual perfect code statements in Smalltalk or APL, first time and every time, but I know no one who can do that at the application level.