21
86 Comments

What languages are you using for your backend?

If you don't mind sharing, I'd love to hear what languages you are using for your backend services and why?

I'm currently working on a personal microservices project, and I'm considering options for the backend.
In my day job, I use .net for almost everything, so naturally, I lean towards it, but I had my eye on golang for a while.

Thanks :)

  1. 16

    I use C#. I know it well and like it so that means I'm very productive in it. I dabble with other languages but keep coming back to C#.

    1. 7

      I use F# and I find ASP.NET Core is a great choice. You get amazing performance, a huge ecosystem of libraries, and all major cloud vendors provide official libraries for .NET.

    2. 5

      Yay, another C# dev here! It's pretty robust, and works great for API's.

      1. 2

        Heck, it even works great for GraphQL API's, which was primarily node based, historically ':)

        1. 1

          GraphQL is the "new" cool kid, but OData has been around and ignored for years.

          1. 2

            Fair point, but most lacked leverage to invest a fair amount of time to build an easy to use API. One major benefit of GraphQL is that it has some standardised set of actions (query, mutate, subscribe), which OData does not have. However simple it may be, it's what enables the community to build interoperable tooling.

    3. 4

      .Net Core is what we use as well!

    4. 4

      Same here. C# is really really smooth when working with APIs

    5. 3

      +1 C# and ASP.Net Core .. I moved from PHP (Laravel) and Java (Spring Boot). Somehow C# makes me happy :)

    6. 3

      It's great to see other .NET developers/entrepreneurs, .NET is a great framework and is here to stay.
      I think the transformation .net (and MSFT) went through with the embracement of opensource is quite amazing.
      ( check out orleans and RESTier )
      But, with the rise of microservices and serverless, we now have the option to combine different languages and use the one that is most suited for the task.

    7. 2

      .NET (Core) is a great environment. I would have never imagined 10 years ago to run my web stuff with it on Ubuntu machines. But now I do.

      I am planning to start a new product, and I am 99% certain that I will do it with F#.

    8. 1

      Yeah!!! C# is my first language. My current project uses it.

    9. 1

      finally! its cool to see dotnet here in IH ;)

  2. 12

    I wonder why no one mentioned Ruby on Rails here.

    I use Ruby on Rails for Mailspree. I've been using Node.js in the past but the coding speed and all the boilerplate code I had to write every single time had me fed up. With rails it's just a simple CLI command to create a migration, a new entity, controller and so on. And Ruby is really developer-friendly.

    I think I'm never going back after the experience I have with Ruby on Rails. ❤️

  3. 8

    NodeJS + Express. Lightweight and comfortable.

  4. 6

    I'm using python with Django as a framework, mainly because I started learning programming by using python and that's the language I know :)
    Further I am not (yet) building complex applications and Django gives me the opportunity to build in a fast way.

    1. 2

      Plenty of complex web applications are built using Django. Instagram, Udemy, Zulip to name a few. For 99.9% of users, there is no point in switching from Django to something else.

      https://stackshare.io/django

      1. 1

        Wind in the sails :) Thanks mate, motivating me to continue digging deeper into python/Django

  5. 5

    I use PHP for two reasons. First, I can hack out functionality quickly. Second, I have unlimited cloud hosting for free (for now) where the servers are LAMP. No other option. If I change languages I have to pay or suffer free tier performance.

    As an Engineer, I want to use Go microservices. The fastest and easiest means to get basic web functionality out the door is monolithic with the language that is best for now.

    1. 2

      " The fastest and easiest means to get basic web functionality out the door is monolithic with the language that is best for now"

      I totally agree

      1. 1

        100%
        I usually start by building a well-decoupled monolith and later on break it down.

  6. 4

    Kotlin with Alpas framework

  7. 4

    I user Elixir (Phoenix Framework for web dev). I like that it's a functional language, and how it manages concurrency out of the box.

  8. 4

    PHP. It’s the first language I thought of for backend. It’s also really easy to find help when i’m stuck.

  9. 4

    Elixir as a gateway and a few microservices in Express Js

  10. 3

    I’ve worked with .NET for over a decade and really enjoy C#. I recently started a new microservices project and the team decided on using Go. It’s been fairly easy to learn and I really appreciate the simplicity. Learning a new language can introduce new perspectives and ideas that overall level up your software engineering skills.

    I wholeheartedly recommend Ultimate Go by Bill Kennedy once you’ve done a Tour of Go https://tour.golang.org/

    I think you can access the ultimate go tutorial for free by using a trial account at Oreilly.

    1. 1

      Thank you @dennyderra for sharing that resource. It is super cool.

  11. 3

    For my own projects I use Python, NodeJS. For my contract work I mostly work on Java and C#.

    A little tip: C# compiled micro-services are very fast compared to Java/NodeJS/Python.
    If you going with C# nothing beats Azure functions.. Way better and easier than AWS.

  12. 3

    I use (and recommend) whatever you know the best. Unless you're scaling to millions of users, I don't think any particular backend over another matters that much.

    For me, that means I use Ruby on Rails.

  13. 3

    Python, Flask for almost everything. I did use Express for some projects but I find it easy to code using Python. People may say its slow, poorly written, etc but at the end of the day, most of us won't even notice the speed unless we are working on a really large project.

    1. 1

      Have you tried fastapi out?

      I used django and never felt the value in Flask, but fastapi was crazy.

      1. 1

        Django never caught my attention although I got into web dev through django. Fastapi was recommended to be someone else too. Will definitely check it out.

  14. 3

    I mostly use either C# or PHP depending on the situation. Especially for rapid prototyping and MVPs PHP is my goto language for its flexibility.

  15. 3

    I'm a longtime Java coder but now using NestJS on NodeJS. Just as important as the feamework/language is the architecture itself and the future is Serverless baby!

    Serverless scales up but also it scales down and can mean you run your stack for peanuts in the beginning. The other great thing about Serverless is that it simplifies the whole deployment process.

    1. 2

      The only problem with that is that you depend on the infraestructure provided by cloud services, what if you want to move out to your own dedicated servers?

      Also, the costs grow exponentially, I only recommend this if you have low traffic or your enterprise business where you dont care how much it costs on spending on hosting.

      1. 1

        I agree.
        Cross-cloud serverless functions would be awesome.

        1. 1

          @Mottibec
          What do you mean by cross-cloud serverless functions?

          1. 1

            It means using serverless function like lambda / azure function and can be run in any cloud like AWS / Ali / Azure / Google Cloud Platform GCP.

            All I can say I am towards Azure Functions because you can host in Docker instead of just in Azure and technically it still consider as multi cloud because as long it can runs on docker u can pretty much anywhere / anycloud / any hardware.

            1. 1

              Pretty sure it's been solved a while back: https://www.serverless.com/

            2. 1

              on www.fullstackrocket.com, we use an express application behind a serverless functions. It works great, and it will be easier if we need to migrate to another provider.

              Also, the serverless cost is ridiculous for us, at least with Netlify. For example, we've got 300 active users per day (on another project), a graphQL endpoint running on serverless / express , and we pay ... zero dollars :)

  16. 3

    Went with PHP. It's the language I know best and can prototype the fastest with. It's also easy to find other PHP developers which makes knowledge transfer and onboarding easier for me.

  17. 2

    I think this type of question features here in IH quite often :) IMHO it would boil down to what is your goal.

    If it is to build a product / mvp - pick a lang/framework that you can productive from day 1. Because our end users don't worry about whats the tech stack behind the product.

    But if your primary goal is to learn a tech while attempting to build a product/mvp - then pick the one you want to learn. But note it is going to probably take twice as long to achieve mvp (with the added risk of other distractions/delays - given its going to take longer).

    Also most of the answers here are from people who are already building something, which means they picked it because they are comfortable with it (& or got comfortable because they picked it - after the inherent learning curve)

  18. 2

    For the weekly paid job we use mostly C# on .NET Core (although several customers are still trailing on .NET Framework), for personal use -and a handful of business projects, we use F#, we are eager to use more of F# as the market increases its acceptance of it (admittedly far lower than what F# deserves IMHO).

  19. 2

    Kotlin and java ecosystem with it

  20. 2

    I'm using Python - Django. Sometimes, node or golang

  21. 2

    I'm using flask (python) for flockin.co

  22. 2

    Scala. It's terse, productive and a pleasure to write, supports FP and OO, leverages the massive investment in the java ecosystem. It's very hard to beat.

    1. 1

      Backend using Play?

      1. 1

        Ummm.. your question makes no sense to me, want to try again?
        (Play is a frontend framework written in scala)

        1. 2

          Play isn't really a frontend framework. It's a framework for developing web applications generally (similar to Spring or Rails). It's often used to create API-only web applications that have no UI component.

          I'm guessing you aren't developing web applications then :)

        2. 1

          To many front-end devs, everything on the server is "back-end". Are you using Play?

          1. 2

            AH! I understand the question now. It just didn't click. Ta.

          2. 1

            No. I don't use Play.

            I use Vaadin 14 sometimes if I need a UI. Its a java library so I can write strongly typed UI code in scala. It's an example of leveraging the java ecosystem.

            1. 2

              That's interesting. I have never heard of Vaadin. Since most applications are moving away from server-side rendered UI, the only Scala-based UI work I have seen is stuff in Scala JS, which generally seems like a lot more trouble than it's worth.

              1. 1

                ...this is a Longer chat :) but yes it has significant server side context. Apparently vaadin can handle 10K concurrent users. There's a report out there somewhere. I often find that's not even a requirement though.

  23. 2

    Using TypeScript for both the front-end and back-end.
    The back-end more specifically:

    • AWS Lambda functions with Nest
    • DynamoDB to store an event queue
    • Random stuff to store aggregates from that event queue
    • S3 for content (pictures/videos/etc) and... git repositories (??)
    • AppSync for the GraphQL/lambda link
    • Cognito for user accounts/auth
    • few other AWS services for image/text analysis, translation, etc
    • Terraform to deploy everything
  24. 2

    Nodejs for things that can share some code with the fronted (usually types, validation logic) and golang for performance critical stuff

    Golang has the benefit of producing small docker images, that is a big reason to use go if you deploy the backend via docker

    I used python for a lot of stuff but I would never suggest it now, it is slow, it is not typed, concurrency model is worse than node

  25. 2

    Using Rust for Yomi.ai, because it gives me the best bang for the buck.

  26. 2

    Node.js with offline stuff in bash
    Hopefully mixing in deno to some project soon!

  27. 2

    We chose GoLang

    Before our last product, we evaluated several backend technologies for our key services. Our requirements were

    • Easy to learn/use
    • Good open source community/packages
    • No issues with memory management
    • Easy to deploy on linux servers or dev workstations
    • Small footprint for containers (memory / CPU)
    • High performance and scalability characteristics

    This immediately eliminated NodeJS, Python, Ruby -- though we settled on NodeJS for the API since we can just load balance those and they do very little except handle the request and graphql/resolver layer. The bulk of the hard work is in our services.

    We evaluated

    • .NET/C#
    • Java
    • Scala
    • Rust
    • Elixir/Erlang
    • GoLang

    The two finalist were Elixir/Erland and GoLang. We ultimately settled on GoLang. We've been very happy with this decision and our entire dev team picked up GoLang without much issue (They were mostly JavaScript developers working in Node and React).

    We also use several awesome tools from the GoLang ecosystem including Traefik, Nats, and Faktory. These tools don't care what language you use, but it's telling that they are also written in GoLang.

  28. 1

    I use Java with Spring Boot

  29. 1

    Either Ruby-on-Rails or Kotlin for work projects. For my side project, I'm currently using Python + Flask, because I know that down the line I want access to Python's natural language processing libs. And yes, I know I could use a microservices architecture on the back end, and maybe that will be a good choice in the future. But I'd rather wait until the natural boundaries between services become evident, than make arbitrary and most-likely incorrect choices now.

    If I was going to pick a language just for the purpose of learning a new thing, I'd probably choose Rust

  30. 1

    TypeScript + NestJS + PostgreSQL. Even though I hate Angular(JS) in the front end, I love Nest in the backend. I first used Nest at work because one of the specialized SDK’s included it and now I use it for everything. The pipes, middleware, and decorators are tasty sugar. My solutions are all monolith but Nest provides modules for micro services as well.

  31. 1

    I’m primarily a Clojure developer these days (though I probably write more Terraform HCL than anything else). Anyone working on the JVM, CLR, and/or in JavaScript should check it out.

  32. 1

    We use C# and are currently porting our back-end to. Net Core. So far, it's been pretty smooth. The reasons for using C#: really great IDE support from Visual Studio, the language itself is really well thought out, the language is flexible enough to do things like Javascript, or it can be strict enough if your needs dictate it, and lastly, you can get C/C++ speeds out of it if you really need to. These reasons are why I feel like C# is one of the best backend languages.

  33. 1

    Mostly PHP's Symfony and Golang.

  34. 1

    I'm using Kotlin with springboot or http4k.

  35. 1

    I do everything possibly can in F# and .NET Core these days, including on the frontend via Fable/Elmish.

  36. 1

    My backend is entirely in Go. I've been using Go on and off since 2010 and started using it exclusively for backend at my last company in 2017. My new company is using Scala, but for my side hack, I'm still sticking with Go.

    I love the simplicity of Go from a syntax perspective and I've always loved that it compiles to a single binary without external dependencies, plus I can easily cross-compile for different install environments. Throw in garbage collection, easy concurrency, and incredibly low runtime overhead and it's felt like a no brainer to stick with it for my backend.

  37. 1

    At work C#. For my personal project I am using Elixir.

  38. 1

    It's hard to go wrong with Node. Huge ecosystem with amazing tools, tutorials, libraries for anything you might imagine.

  39. 1

    it's Rails for me, for both the command line interface, and the ease of RESTful compliance.

  40. 1

    Dockerized Flask apps behind a Traefik reverse-proxy.

    Sort of like a pseudo-microservice pattern, with a separate container for auth, data handling, and long-running tasks (Redis/RQ both in Docker as well). Very convenient - as you scale you just spin up more containers to handle the load.

    Currently using HTTP to communicate between containers, thinking about implementing message queues.

  41. 1

    NodeJS with Typescript for small little apps, PHP with Laravel for larger apps.

    GoLang is great - I have used it for some projects before.

    If you're already comfortable using .NET i'd stick with it though! Not need to switch!

  42. 1

    php, mysql, nodejs :-)
    all in combination with QUIQQER

  43. 1

    I use Python (Django) for melbado. Mainly because my top priority is to develop quickly so I can collect feedback as fast as possible.

  44. 1

    Serverless via Firebase

  45. 1

    I'm using Node for SongRender because I need to share code between the browser and the backend. When you export a video, the same code that renders it live in the browser is used to render it to an mp4 file on the server.

    If I didn't have that constraint, I would probably use Go.

  46. 1

    I typically use Java/Spring Boot, Java can be so verbose that it takes a lot of code do pretty simple things. I've also recently been playing around with Python/Django but I haven't tried to work on anything non trivial with it. Go looks pretty interesting as well.

  47. 1

    Ruby, with a mix of libraries (I dislike Rails very much), because I already had a bunch of code lying around that did most of what I needed, and the library support for what I wanted to do is just superb in Ruby. The downside is that I'm coming from using Go in the day job, and gosh if I miss my types in Ruby now :'(

  48. 3

    This comment was deleted 3 years ago.

  49. 2

    This comment was deleted 4 years ago.

  50. 3

    This comment was deleted 4 years ago.

Trending on Indie Hackers
How I grew a side project to 100k Unique Visitors in 7 days with 0 audience 50 comments Competing with Product Hunt: a month later 33 comments Why do you hate marketing? 29 comments My Top 20 Free Tools That I Use Everyday as an Indie Hacker 18 comments $15k revenues in <4 months as a solopreneur 14 comments Use Your Product 13 comments