Taking things step by step, writing unit tests first, and refactoring as you go can result in some pretty tight code. But translating code written this way can be tough, unless you can recreate the original order of development.
I've been translating a new testing framework from Java to Perl. Things went pretty quickly as long as I had an ordered set of unit tests to follow. But after that it was off into the weeds. With clean, tightly factored code, it was actually harder to figure out a sensible order of steps to take. There wasn't much of a trail to follow, because the breadcrumbs had been refactored.