Comment by varun_ch

5 days ago

I worked at an org which has a ‘modern’ NodeJS+React codebase and an ancient legacy Django app on Python 2.7 which is nearing 15 years old.

I was worried that the old codebase would be a pain to work on. It was the complete other way around. The Django app was a complete joy to work with and I literally had so much fun tidying it up and working with it that I’ll be sad when they finally retire it in favor of the new new Go/React rewrite.

Why would they retire it? If it ain't broke...

  • It’s very likely that project is a security nightmare. Just an OS old enough to support 2.7 would be problematic.

    • I just verified. You can install Python 2.7 on an up to date Windows install as well as an up to date Linux install. Python 2.7 hasn't received security updates (or really any updates) in years, but that does not mean it can't still work on an up to date OS.

      4 replies →

  • "Fun" isn't the same thing as "functional."

    I remember having great fun in QuickBASIC. And my son enjoys Scratch.

    Django code is much more fun to work with than Node, but I can't imagine developing something competitive in it in 2025 to what I'm developing in Node. Node is a pain in the butt, but at the end of the day, competitiveness is about what you deliver to the user, not how much fun you have along the way.

    * I think the most fundamental problems are developer-base/libraries and being able to use the same code client-side and server-side.

    * Django was also written around the concept of views and templates and similar, rather than client-side web apps, and the structure reflects that.

    * While it supports async and web sockets, those aren't as deep in the DNA as for most Node (or even aiohttp) apps.

    * Everything I do now is reactive. That's just a better way to work than compiling a page with templates.

    I won't even mention mobile. But how you add that is a big difference too.

    It's very battery-included, but many of the batteries (e.g. server-side templating language) are 2005-era nickel cadmium rather than 2025-era lithium ion.

    I would love to see a modern Node framework as pleasant to work with, thought-out, engineered, documented, supported, designed, etc. as well as Django, but we're nowhere close to there yet.

    • You spell out a lot of examples, but all of them are purely technical. What is it that you can deliver to the user using Node that you cannot deliver using Django? This is a genuine question.

      1 reply →

    • You must not be very imaginative.

      Plenty of Django businesses making tens of millions. Some in the billions.

      I know a solopreneur making around $2m a year and all he uses is Django

    • Man, the only true part is the async/web socket part (and it's most because of python and not django itself) ... you can do a lot, and by a lot I mean almost 99% of websites/apps out there, with django and it's 2005-era nickel cadmium features

    • The lithium-ion battery analogy seems fitting: When we're not careful about sourcing those modern batteries from a trustworthy supply-chain, they tend to explode and injure the user.

      1 reply →