Aaron Evans condensed a good deal of software engineering experience down to less than 140 characters:
It’s amazing how much cleaner your code looks the third time writing it. First time, hack; Second over-engineer; Third = goldilocks.
Aaron Evans condensed a good deal of software engineering experience down to less than 140 characters:
It’s amazing how much cleaner your code looks the third time writing it. First time, hack; Second over-engineer; Third = goldilocks.
Comments are closed.
This seems true of writing in general—not just code.
Of course, a lot depends on what you do during the rewrites.
True of systems in general – not just software!
“Second over-engineer” sounds reminiscent of Fred Brook’s second system effect. (The Wikipedia article seems to use Eric Raymond’s claim of causation. From what I remember, Brooks attributed it not as “due to inflated expectations” but a desire to put in all the cleverness that came to mind for the first project into the second and not having the experience to show restraint.)
The second system effect concerned the maturing of the system designer not of the project, but it makes sense that each project could have a similar learning pattern.
I have a similar 3-pass process:
1. Figure out the hard parts. (Proof of Concept)
2. Kluge things together and fill in the gaps to make the rest of it work. (Prototype)
3. Rewrite/refactor before showing it to anyone else. (Rev. 0.1)
Goldilocks is further down the road for me. My software development maturity level must be regressing. I’m amazed how often I stop at step 2.
there may or may not be a connection, but I have theory that the third edition of textbooks are often the best ( in Calculus I’d cite Thomas and Salas & Hille).