When a successful software system is rewritten in another language, that doesn&#x27;t mean the original decision was &quot;proven wrong&quot;.  It means that conditions have changed.<p>The original language was usually absolutely right for the conditions that existed when the original software was written, otherwise it wouldn&#x27;t have become successful.  Those conditions often include severe resource constraints; small teams; small numbers of un-demanding customers; and extreme uncertainty about exactly what the product will do.  When the product becomes successful, the certainty about what it will do goes up, available resources go up, team sizes get bigger, and customers get more demanding.  The world changes around you as well: new languages are invented, new frameworks come out, customers request different integrations.  All of these impose different constraints on the software architecture.<p>(Incidentally, I suspect that failure to recognize the time-dependence and context-dependence of decision making is behind most career missteps.  That old grizzled programmer who insists on using COBOL and DB2 on record-oriented flat files?  He&#x27;s following best practices, he&#x27;s just following best practices from the 1960s.  Similarly, many workers who assumed companies would honor their pension agreements and no-layoff culture were in for a rude shock when executives made decisions based on what is necessary <i>now</i> and fucked over the people who worked hard for them <i>then</i>.)