« Back to home

Rewrite speed is a terrible, no-good, very-bad metric

Someone on the internet is making the point that Go is awesome because they rewrote a Java service in Go in ¼ the time it took to write the original Java service.

This misconception must be stopped once and for all.

Off the top of my head: I’ve rewritten Ruby code in Java more quickly with more features than the original Ruby code was written. Same for Python. I’ve rewritten Python in C# more quickly than the original Python was written.

Of course I did. It’s because this “rewrite speed” metric ignores the biggest slowdown from the original development: the OG developers didn’t know exactly what they were building. They had to do requirements gathering and actually think up what to build and how to do it from scratch and test ideas and put that thing in production.

It also ignores what comes next – you won’t believe – supporting that code! Now that you’ve quickly rewritten your service in a language with few libraries, tools and experienced developers, the primary concern is maintaining it and hiring for it. Maybe the service “requires no maintenance”, but if that was the case, why did you rewrite it?

Rewrites and new languages can both be great things. But rewrite speed is a terrible metric and should be banished from “X language is better than Y” discussions now and forever. It’s misled half-dozens of people who are now sitting on piles of Coffeescript and tears.