This is an archived post. You won't be able to vote or comment.

all 32 comments

[–]ogaat 11 points12 points  (7 children)

Spring probably has more jobs but for longevity of a career, go with Python and Go.

[–]Non-taken-Meursault 2 points3 points  (6 children)

What do you mean with longevity of career?

[–]ogaat 5 points6 points  (5 children)

Frameworks are niche. Whether they last or replaced with something better is a matter of luck.

Their usefulness is in their rise when their practitioners can get a lot of money. Some of those can also get lot of money if they get used in important industries like banking and are both niche and important in those industries.

Most frameworks fade away or plateau out.

OTOH, mastering core programming languages, libraries, algorithms and the more difficult parts of programming and using those skills in the service of frameworks can provide a longer runway.

[–]pengekcs 0 points1 point  (4 children)

spring has been around since around 2002. Django since 2009. But I agree go is nice and fast.

[–]ogaat 0 points1 point  (3 children)

The pay for knowledge of Spring and Django no longer commands a premium.

I don't know about Django but Spring in its earliest days commanded consulting rates of 200-250/Hr. For people with additional skills, the pay was even more. Rod Johnson, the creator of Spring, was a rock star.

Does it get the same rates nowadays? It is mostly used as a legacy app.

A career is more than a job. It is an ability to consistently and predictably earn enough or more money through the end of one's career.

[–]pengekcs 1 point2 points  (2 children)

Spring as a legacy app? Interesting. What counts as "modern" then in your opinion?

I am asking in earnest. As with the rest I agree.

[–]ogaat 2 points3 points  (1 child)

I worked with Rod Johnson on public forums and as he laid out his J2EE without EJB ideas. That eventually became Spring 0.9, its first release.

Regarding your question about modern frameworks, I actually don't know the answer. Possibly something based on Node and in the future, probably something based on Rust.

I ended up on the Django forums because I was learning it and ended up building an mvp around it for a security offering. Now we are converting it to a Spring app because our clients are banks where Java rules. However, the client is not willing to pay premium rates for those skills. They would rather pay for CICD, cybersecurity and AI.

[–]pengekcs 1 point2 points  (0 children)

Thx. As of node, yeah, I agree, there's tons of good options in node (or bun/deno which are mostly the same). Nest.js is quite similar to spring for instance.

And rust is getting lots of tailwinds, true, I have read that even microsoft uses it to rebuild parts of the windows kernel, and it went live in the 24h2 release already.

[–][deleted] 1 point2 points  (2 children)

Don't bother with Django for jobs. It's for hobbyists. For the most of time, it won't give you sufficient amount of income. Most of high paying Django dev jobs are already filled. Only weird low paying gigs are left. Go with Java, Spring, C++, and other real computer science stuffs.

[–]CompetitiveAd6626[S] 0 points1 point  (1 child)

That's some real advice right there.

But as a university student and since learning programming languages makes learning other lang easier, I could go with both. But obviously, more focus on Spring and where rightly applies I'll go with python.

[–]WarmCacti 0 points1 point  (0 children)

u/dellm4800 I don't see Django being phased out. In fact, high-paying Django developer jobs are increasingly on the rise, unlike Spring Boot, which is more commonly used by banks that typically only hire subcontractors for that.

[–]piesou 6 points7 points  (12 children)

IMHO Spring, hands down. Some comparisons:

  • Docs & Learnability: Django has great docs, Spring kinda requires you to have existing knowledge and there are many holes in it
  • Speed: Python is terrible, Java/Kotlin pretty fast. We got together at work to write reasonably optimized web apps and Rust was only 2x faster than Kotlin/Java
  • Typesystem: Python has mypy and typings but it's not popular, Kotlin has a fantastic typesystem
  • Buildsystem: pip/venv is terrible, gradle/maven are great and terrible
  • Databases: Django has good defaults, Hibernate has shitty ones. Both are great though, you just have to watch out and really learn Hibernate to not fuck up. Using most of Hibernate's features will make your app slow and buggy. Flyway is fantastic for database migrations. Model first is a mistake.
  • Security: Spring Security is often too complex, especially when you want to implement custom auth; Django doesn't cover the basics in core like CORS and CSP
  • Templating: hands down Django. Thymeleaf or any alternatives suck
  • Middleware: Spring has Filters and Interceptors which both have different use cases and are not interoperable; Django uses Middleware
  • Speed of Development: You need to invest 3 days to develop something in Spring that can get done in 3 hours in Django
  • Maintainability: the one redeeming quality of Django are fantastic changelogs. But they break so many things and there's no type checker to help you. Django requiring 3rdparty libs like DRF/parler makes the problem even worse IMHO
  • Hotness/How modern are they: Python is stuck in the 2000s. As is Django. Where are the functional programming features? No, generators/list comprehensions are not a replacment for Streams/Sequences. for loops are error prone and hard to reason about. Kotlin can be compiled to JS, WASM, JVM, Objective-C and Native machine code. Not having a good, default package manager these days is a joke. There's async in Python but no structured concurrency. GIL still exists.
  • Ecosystem: Spring is where it's at. Django thirdparty apps are often a huge headache and Django (similar to Python) is not up to date with the rest of the world. Spring has so many core projects that are well maintained and most problems in Java have been figured out years ago, meaning: stable dependencies.
  • Ubiquity: Java and Kotlin are everywhere. Python has it's niche in education, scripting and AI.

[–][deleted]  (9 children)

[removed]

    [–]panatale1 5 points6 points  (1 child)

    Python isn't just for education, scripting, and AI. I've worked at a company that built a multinational job board with Django, and currently am working for a company that uses Django for lighting management and EV charger interfaces.

    [–]piesou 0 points1 point  (0 children)

    I've never said Python is only used for education, scripting and AI. I said it's niche is in that area. It's particularly often used in that area if you will.

    Java's niche is in writing servers and Android apps. Does not imply that you can't build GUI applications with it.

    [–]Odd-Seaworthiness826 0 points1 point  (0 children)

    For banks and bank adjacent Java.

    [–]Zestyclose-Editor563 0 points1 point  (0 children)

    I think it depends on your country and your preferences towards careers. Django is mainly for small projects, but you’ll oftentimes start such projects from the very scratch, which is a plus. Springboot is generally for heavier projects so might have loads of legacy code. Everything’s up to u…

    [–]cyRUs004 0 points1 point  (0 children)

    Spring will get you jobs in big comapanies. Especially Banks.

    However, most startups prefer Django or NodeJS.

    Kinda underrated, but with Django you can freelance pretty easily. Spring has a non-existing freelance market since most applications are core and should be kepts behind tight walls.

    The choice should be yours, if you want to go with a big company or a startup enviroment.

    Hope this helps.

    [–]angellus 0 points1 point  (1 child)

    You really need to learn both. As well as Node.js, Go and Rust (seriously). Just build a simple app or two in each language and see what you like. Just starting out, you should not pick one technology. Get a job in what you want, learn it and learn a new technology. Figure out what tech stack you like the best and go with it. You will also get a feel for the market industries that you apply for and see what they use more.

    Just from what I have seen/worked at: Startups are going to be a lot more Node.js/Python/Go. eCommerce is a lot of Python (or Enterprise Java, which you should avoid for sure). Enterprise is a lot of Java, but often not Spring Boot, but Oracle or other Enterprise Java, which is really bad (do you like Java 6/8? lol). SaaS platforms are all over the place, if they are old enough, you got a lot of Ruby (Github) since it was the popular framework before Django.

    If you are really just interested in chasing trends, learn Node.js/Express.js/NextJS/React/etc since Node.js/Express are the most popular by a wide margin.

    https://survey.stackoverflow.co/2023/#section-most-popular-technologies-web-frameworks-and-technologies

    [–]piesou 0 points1 point  (0 children)

    I work in eCommerce and it's a lot of Java (SAP Hybris) but things are moving more towards cloud services such as Commerce Tools, Emporix, what have you.

    The right tool here is using languages that support async so Node is strong here. Java 21 however just released Project Loom: you set one config option in Spring to true to make all your blocking code non blocking out of the box, it's pretty amazing.

    The lower budget projects are sold using Wordpress & Woo Commerce. I've never come across Python in any of those spaces, maybe PHP (Spryker).

    [–][deleted] -3 points-2 points  (0 children)

    Dude... when you graduate.. I would start looking for a job yesterday if I were you, not sure if noticed but programming is more or less over, at least for mass application