There are so-o-o many programming talks and articles starting on the same premise, "We wrote something and over time it got difficult to maintain, so we decided… to rewrite it in another language".

Why are you so sure the problem is the *language* and not you? Could it be that you just suck at engineering? I'd understand if the language was notoriously hard, like C++, or very new, like, say, Elm. But if you do stuff in Java/Python/Go then there's proof out there that those generally work.

@isagalaev Problem is there's always more will to rewrite something than refactor it. Refactoring requires you to work within the constraints of the code, whereas rewriting tickles the "new frontier" parts of the mind.

@craigmaloney yes, and you lose all the little decisions and bug fixes implicitly incorporated in your old code over time, which honest refactoring would retain, or at least make you think about.

(Cue the classic Joel Spolsky's piece

@isagalaev True, but you also get the ability to use different methodologies when changing languages. Some projects may work better with a functional paradigm (or at least having the ability to have different functional pieces inter-operate on multiple servers).

I don't fault projects for re-writing if they want to modernize an aging codebase. But yeah, understanding the risks and the underlying reasons for doing a rewrite have to be ever-present in the redesign.


@craigmaloney "you also get the ability to use different methodologies when changing languages." — agreed. But I am watching a video where guys say, effectively, "we replaced a mess of if-else in Go with a functional filters in Clojure", and I want to say, "are you telling me you couldn't write filter functions in Go?"

And I should say love Clojure and don't like Go, but it's just not a good reason to switch.

· · Web · 0 · 0 · 1

@isagalaev Yeah, it shouldn't be the primary reason. Only reason I can think of for moving from Go to Clojure is either "we love Lisp" or "we're a Java shop and really love Lisp".

Sign in to participate in the conversation

Server run by the main developers of the project 🐘 It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!