2 ms·
Helped lead a team that moved a huge decade-old internal amalgamation of php applications to Django around 2014. It was a nightmare that took almost 2 years, bu
by academia_hack 4y ago
Helped lead a team that moved a huge decade-old internal amalgamation of php applications to Django around 2014. It was a nightmare that took almost 2 years, but the end result was orders of magnitude more maintainable and stable.
A lot of this has to do with terrible "DevOps" practices the org had previously. No version control, all devs coded with vim over ssh directly in production (same username+password for everyone), people just sort of patched bugs randomly whenever they felt like it, dozens of different out of date versions of the same dependencies were imported from random directories with cryptic names like "deps2", etc. Honestly, it's a testament to the versatility of php that the house of cards was able to stand for so long.
Moving to python (mostly so we wouldn't be tempted to copy any of the legacy code directly), starting from the ground up, and being deliberate about having "adequate" if not "best" practices was a huge improvement and totally worth it. Once auth, permissions, and infrastructure was squared away (probs 6 months to reverse engineer the existing home-made rbac system and figure out how to simplify it and migrate hundreds of users!), we went one feature/page/sub-application at a time through the php codebase and either rebuilt it, eliminated it, or merged it with some redundant similar feature elsewhere.
Politically, it was really hard to convince leadership this was worth the time since the end result was functionally identical to the start (with some minor UX improvements). It was worth it though. We went from dedicating something like 60% of capacity to random support and bug fix nonsense, to less than 10%.
Basically, it can pay off but for any non-trivial system it will be expensive and politically difficult to justify for a long time. In dire straits it can save your product, but definitely don't be tempted to swap languages because of tiny performance upsides, marketing hype, or boredom.