I've discovered that writing MIDI music is eerily like writing software. The whole process feels almost exactly the same. You compose (code), you listen (run), you make corrections (debug), you polish (optimize), you add sections (modules/features), which leads to more correction and optimization. Sometimes, changes cascade throughout the piece (refactoring).
In the end, you have a hideous progeny that's not as good as you'd like but you know you can't work on it forever.
In the end, you have a hideous progeny that's not as good as you'd like but you know you can't work on it forever.