4
22 Comments

What backend stack you recommend?

I'm Android dev -- Java/Kotlin and recently Dart and Flutter. I don't know much about backend beside basic stuff I had at my uni.

For my recent projects I was using Firebase, which works fine and is super easy. Although for next one I want to build my own server. Firebase might be too expensive for this case.

I want to learn how to write my own backend.

What would you advice me in 2020?

I was thinking Python, but I'm not sure what goes with it.
I've heard PHP and Lavarel is thriving. Is it worth it?
I'm not a big fan of JS, but seems like Node.js is still widely used.

Thanks!

posted to Icon for group Learning to Code
Learning to Code
on June 6, 2020
  1. 5

    Hey Filipp,

    You have to ask yourself, do you want to learn to launch or to learn so that you can work for other people?

    If you want to launch your product as soon as possible, choose a language that you are most comfortable with

    Contenders

    1. Node (Javascript) - super easy to learn but you are not a big fan so don't choose this (I personally use this framework for all my projects because I'm used to it) I even have a course on udemy about it
    2. Python - Django - Easiest language to learn and one of the fastest framework as well because of the boilerplate
    3. Python flask - Lightweight and very similar to Node + Express framework
    4. Ruby on rails - Well this is one of the fastest frameworks to launch your backend mvp. Because of the boilerplate code
    5. PHP and Laravel - Easy to learn and the same level of speed as Django and Rails
    6. Java - Spring is a good contender since you already know the language very well.

    So ask yourself do you want to be an expert or dangerous enough to launch your MVP backend? Choose whichever, follow your gut.

    1. 1

      Thanks! I'm planning to do it for myself.
      I guess Node and JS is so popular that maybe I should give it a second go :)

      1. 2

        +1 to everything Filipp said. They are all viable, some are easier to get running out of the box and require less language-specific knowledge and fewer gotchas, etc.

        I also strongly agree that there are different recommendations based on whether you just want to get something deployed ASAP vs get something deployed but also make yourself a more attractive employment candidate. Ruby for example is very strong out of the box but has fewer job prospects in 2020 compared to other technologies.

        I personally am in the second camp: I want to deploy quickly but none of my projects are anywhere close to making me enough money to be my full-time so I need to stay marketable as a drone.

        I personally LOVE the NestJS framework for Node but if you don't already know JS, let alone TS, it can be a lot to bite off.

        [EDIT] As has been said elsewhere, one of the primary strengths of JS is that once you learn it for back end you can also use it in the client of course. It used to be the case that you'd learn JS in the front end then maybe migrate to back end and/or microservices later, but the front end can be really complicated anymore so back end might be easier to get started with.

  2. 4

    Since you're already proficient with Java, why not stick with that? I'm not familiar with the Java server–side ecosystem but I think Spring is pretty popular.

    1. 1

      I know Java, but after switching to Kotlin I'm happy not to go back there if there are other alternatives.

      Thanks!

      1. 1

        Doesn't Kotlin interop with Java though? You should be able to use any Java libraries in Kotlin AFAIK.

        If you're set on switching languages, one thing that's been gaining a lot of steam that no one's mentioned here is Go, so check that out too. But honestly, most of these languages are pretty similar — the important thing is to just pick one and get to work :)

        1. 1

          It does. You might be right and I should give it a chance, thanks :)

  3. 2

    Hey Filipp,

    Very much depends on you usecase! As rule of thumb, I tend to stick with a JavaScript stack where possible as it can save money, time ect in the long run due to the nature of JS being used on both back and front end.

    However, if you are building something data heavy, and high in computation, then using something like python to perform these tasks would be very useful for you :).

    On the other hand, if you already have an understanding of Java, why not utilise that? Use the skills you have already to move forward. Learning JS is kind of unavoidable if you are building a web app but you could easily do this on the fly :)

    Take a look at Java Spring, you could go down the whole Micro Services root. Start by building a simple REST API with it for data ect.

    I have worked on a load of projects over the past few years. At start ups and at S and P 500 companies, the way it works is simple. What skills do you possess that can be taken advantage of. You have Java, so learn how to do it with that :)

    https://spring.io/projects/spring-boot

    https://spring.io/guides/gs/rest-service/

  4. 1

    Hey mdfk,
    As an Android guy myself, I suggest these contenders:

    • Ktor framework build on Kotlin
    • Spring Boot easier to start a Spring project.
    • if you go for a complete monolith backend and frontend, you can go with jhipster.tech (React, Vue.js front)
    • For python, have a look at FastAPI ( asynchronous ) similar to Flask (synchronous run on WSGI) for simple REST API.
    • Python Django , if you need full web development ( templates, database )
  5. 1

    No doubt, Laravel & PHP is thriving because it has big market and most backend developers are using it. Actually, it is inexpensive to host Laravel framework but if you want to host Django then you would have to go VPS hosting which is little expensive in my opinion.

    By the way, if you are asking the best backend framework then my vote is for Django because it has much scope. It is also ranked as the best backend frameworks in different comparisons like this ( https://blog.back4app.com/backend-frameworks/ ). I also support Django because it offers admin panel and its security features are outstanding. If you go with Python then you can also see a big scope in data analysis and artificial intelligence.

  6. 1

    I think you need to have as first goal your first feature. i think FIREBASE still the best choice for prototyping and it's not expensive for apps before Market Fit.

  7. 1

    I built my Backend in Java with Spring Boot, Mysql. It is pretty stable and has plenty of supporting libraries. Why do you want to switch to something else?

    1. 1

      I'm not that big fan of Java and also wants to learn something new

  8. 1

    It depends ...for fast prototyping use Node.js(API, basic routing etc)...if the API interactions are fairly simple consider serverless functions.....if it involves some basic ML go with python(django or better yet flask)....If the site is not that complex stick to wordpress for now....

  9. 1

    Python with Flask/Django is definitely recommended.

  10. 1

    it doesn't really matter which programming language you choose as long as you are meeting the goals of end users.
    do not waste your time learning new language. later on , you will need to learn online marketing/Sales and all.
    as you are proficient with Java, stick to it and start working.
    there is so much to work on after this tech part gets done.

  11. 1

    Doubling up on Node, I've been working with it professionally for 4/5 years now so for me that just makes sense. The added benefit that you can incrementally add typescript once your project feels large enough is a huge win.

    It is tempting to dive into another language like Elixir (maybe with my next project) but when you're trying to move fast it can feel like you're wasting too much time.

  12. 1

    I still think firestore is still your best option if you don't know much about servers and databases, however you should read about best practices to reduce costs

    https://firebase.google.com/docs/firestore/billing-example

    that said, for your skillset, you may look into spring boot.

  13. 1

    Node is very popular and makes context switching fairly easy if your frontend is also JS. I'm slowly learning Elixir and loving it so far

  14. 1

    Yeah as @MichalM typescript and node will be a good fit for you with a java/dart background.

    PHP is ....

    Python is great but if you haven't used it and the project doesn't need any python specified packages node is the way.

  15. 1

    Depends on your use case. I make web apps as well as mobile apps and I use TypeScript & Node for their backends.

    My takes;

    • Node seems to be the most popular choice rn
    • there is a large and thriving ecosystem of modern libraries, modules and dev tools
    • frontends are often written in JS/TS too and so can share dev resources & tools
    • modern JS and especially TypeScript is much better and more mature than what it used to be even 5 years ago
  16. 1

    This comment was deleted 4 years ago.

  17. 3

    This comment was deleted a year ago.

    1. 1

      I could use this stack

Trending on Indie Hackers
From Ideas to a Content Factory: The Rise of SuperMaker AI User Avatar 27 comments Why Early-Stage Founders Should Consider Skipping Prior Art Searches for Their Patent Applications User Avatar 21 comments Codenhack Beta — Full Access + Referral User Avatar 19 comments I built eSIMKitStore — helping travelers stay online with instant QR-based eSIMs 🌍 User Avatar 18 comments Day 6 - Slow days as a solo founder User Avatar 12 comments Do Patents Really Help Startups Raise Funding? Evidence from the U.S. and Europe User Avatar 11 comments