-3

I am designing my next project, which will do various domain-specific tasks, but all that will be controlled and used via a generic crud web app.

I have been professionally using Java with Spring for over 3 years now with the usual corporate applications, but these domain-specific tasks absolutely have to be done in Python. I was already going to split the "core" app from these modules, but now I am wondering if I should go for Java core with Python modules communicating over REST or queues, or try to write the core app in Django and enjoy potentially better integration and easier codebase in case I would work on it with someone else in the future.

The whole point of this dilemma is because I'm a mid-level Java dev, and while I can write Python (these adapters will be small-ish so not a problem), I never used it professionally nor written any Django project before. The deadline is not exactly tight and I don't mind learning, but I want to do this seriously, and I'm not sure benefits of which side outweigh the other.

Tl;dr: pro Java/amateur python dev wants to write an application that needs a crud web app core and python adapters. Is learning Django worth a hassle or should I stick to Spring and have different languages in different backend modules?

1
  • 2
    I don't think this is sensibly answerable from this 30.000 feet view, since we have no idea how much your system will really benefit by "better integration and easier codebase". And even if we would know your requirements and constraints in-depth, decisions like that usually stay opinionated.
    – Doc Brown
    Commented Jan 17 at 6:24

1 Answer 1

0

these domain-specific tasks absolutely have to be done in Python

Until you also find something that "absolutely has to be done" in Java as well, don't impose your personal bias on the project.

Yes, learning is slow. But have some respect for maintenance. When you use Spring and Java together you're ensuring that the code base needs someone who knows both to maintain it. But at least that's a common pairing. You're proposing Java and Spring and Python and Django. When it could just be Python and Django.

I'm a polyglot. I can work in multiple languages. But even I shudder at the thought of mixing all this together. Jumping from language to language is distracting. Take the time to learn how to build this in Python. You may find it does better at this than you think.

As Doc Brown cautions below, there may be justifications for mixing. You've identified a personal bias for Java. Rather than forbidding mixing, I'm advising you check that impulse and instead put the projects needs ahead of your own.

16
  • I don't see much personal bias in the question. The OP is a lot more experienced in Java/Spring than in Django/Python, and has no idea how long it will take them to learn the latter. Sounds quite factual, not very biased. The OP also did not tell us much about their organization, if the domain-specific tasks and the core app will be maintained by the same person or by a team. So all-in-all, though I share your opionion about not mixing too many different technologies in one project, I think it is not a good idea to give the OP advice based on that restricted information we have.
    – Doc Brown
    Commented Jan 17 at 9:03
  • @DocBrown Choosing Java because you know Java isn't injecting a personal bias? Commented Jan 17 at 9:30
  • Choosing Java because I like Java more than Python would be personal bias. Choosing a programming language environment for which I know I can implement something within, lets say, less than 3 weeks vs. choosing another one for which I don't know how long it will take is a question of risk management. And the fact the OP asked here shows to me they actually want to avoid to make a biased decision.
    – Doc Brown
    Commented Jan 17 at 9:34
  • @DocBrown risk is something to respect for maintenance as well. Commented Jan 17 at 9:37
  • Absolutely! As I said, I share your opinion about not mixing too many technologies. But sometimes this can be justified, and I think based on that minimum of information we got about the OPs case, it it more likely our personal bias against a technology mix makes us jumping to premature conclusions.
    – Doc Brown
    Commented Jan 17 at 9:41

Not the answer you're looking for? Browse other questions tagged or ask your own question.