After making quite a few unpackers and other RE-related tools, publishing sources for them and having to maintain and bugfix them, all I can say is: "Read this. Remember this. Worship this."
All code is born ugly.
It starts disorganized and inconsistent, with overlaps and redundancies and gaps.
We begin working it into an imperfect solution for an often poorly defined problem.
As we start building up like clay, a solution starts taking form. The feedback guides us in moving, removing and adding material. It allows us to add and remove details. We learn from our mistakes.
Thank you, Dennis, you made my day so much better.
I could see how that would be true. Sometimes I like starting from a blank canvas though, once I understand the domain more. I do think that there is something to be said from early experiments.
I also like the quote "Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away".