A small rewrite in the evenings
Spent a few quiet weeks porting an old side project from Python to Go. The surprise wasn't the speed, though it was considerable. It was realizing how much of my original code existed only to compensate for my own earlier mistakes.
The program is about six hundred lines. It watches a directory, does a little parsing, and writes the result somewhere else. The Python version had accreted a small zoo of helpers: retry wrappers, a thread pool, a cache that was never really needed, and a configuration layer that I had talked myself into because "one day" I would want to change the parsing rules without editing code. I never once changed the parsing rules.
The Go version is a little under three hundred lines, has no configuration file, and is boring in a way I find deeply pleasant. About half the reduction came from the standard library, and the other half came from being willing, in the rewrite, to delete things I had previously been too fond of to remove.
I think the lesson, if there is one, is not about the languages. It is that a rewrite is mostly useful as an excuse to throw away what you no longer need. You can, in principle, do the same deletion in the original codebase. In practice you will not.