15
75 Comments

Best back-end language for indie hackers to learn

My goal is to develop a SaaS/web app and I have a lot of ideas to fail through 😂, so I'm really looking for something practical to build MVPs and make changes as quickly/easily as possible.

I was thinking Node because my JS skills are already pretty strong, but I'm not sure if that's a lot harder to maintain than PHP for instance.

Any advice would be greatly appreciated.

EDIT: Had some really helpful feedback, this is a community of absolute legends!

My conclusion so far is there's no "right" or "wrong" language to use and getting the MVP up with what I know is more important, so I'll most likely start with Firebase, then Node/Express if I'm lucky enough to have the problem of needing to scale.

Thank you, everyone! 🖖
thank you

  1. 9

    Ruby on Rails. It can help in saving development time a lot and easy to get started.

    1. 2

      Ruby on Rails could be dying, in my opinion. It was great in like 2001, but today none of the established tech prefer it. I'd maybe suggest to learn serverless, like firebase or AWS, and you can very well deploy Node.js code (e.g. in firebase cloud functions or aws lambda), without having to manage any servers. Works quite well for my own Saas (https://interviewloop.io) which is completely serverless.

      1. 6

        Ruby on Rails could be dying, in my opinion

        That's just not true. Yes, the Rails community isn't as vibrant as it used to be, but it is far from dying. Ditto for Ruby.

        It was great in like 2001

        It still is (btw, Rails was released in 2004).

        but today none of the established tech prefer it

        Github, Basecamp, Shopify, Airbnb, Twitch, Kickstarter, Instacart to name a few. Heck, even my teeny tiny business runs on Rails!

        I'd maybe suggest to learn serverless, like firebase or AWS

        It's worth mentioning that this is a proprietary technology, and you're locking yourself into a single vendor (or a handful of vendors).
        This is fine for some cases, but still something to be mindful of.

        1. 1

          Fair points, thank you. By the way, the companies you mentioned are mostly old, from the times when Rails was still young. Creators of rails work with Basecamp, so they are sticking with it. Airbnb is moving away from rails, their frontend is now react, and on server-side they are moving over to Node.js. Twitch is also moving to Go. Not sure about the rest, but the change will happen slowly, it's hard to move big tech overnight :)

          Regarding serverless being proprietary technology is only a side of the story. One, the "patterns" are pretty much the same across the cloud vendors, so once you learn them, they take you a long way across different cloud solutions. Two, the big tech are so established, they're most likely here to stay for next atleast 20 years, maybe 50 years, so locking yourself with a single vendor like AWS isn't a bad thing, in fact it's so sophisticated that you reap the benefits of scale almost immediately.

          Wordpress is an analogy. 25% of web runs on wordpress, and no-one complains about the "locking themselves with it" part.

          1. 1

            One, the "patterns" are pretty much the same across the cloud vendors, so once you learn them, they take you a long way across different cloud solutions.

            Doesn't make them less proprietary.

            Big Cloud promotes a whole slew of services bundled with the serverless thingie, which makes the lock-in even worse (e.g. databases, job queues).

            Two, the big tech are so established, they're most likely here to stay for next atleast 20 years, maybe 50 years, so locking yourself with a single vendor like AWS isn't a bad thing

            Sure, they're probably here to stay. But the risk isn't confined to deprecations/shutdowns only (although, that's usually the big one when it comes to the proprietary tech).

            What if they jack up prices arbitrarily? The 14-fold increase in Google Maps' pricing is an example that comes to mind.

            Again, this might be fine for some use cases, but still worth thinking about.

            Wordpress is an analogy. 25% of web runs on wordpress, and no-one complains about the "locking themselves with it" part.

            Because Wordpress is open-source and you can self-host it :)

            1. 1

              Of course. Almost all the big technologies are available as open source or have open source alternatives, self-hosting is The pain in the process, coupled with scale, that the cloud takes away.

              In my mind, "proprietary " isn't bad, but I see your perspective and that's fine too.

        2. 2

          This comment was deleted 3 years ago.

      2. 1

        RoR was great for server side web pages but with front-end frameworks you mostly need just an api now.

      3. 1

        This comment was deleted 4 years ago.

    2. 2

      It's on my list to play with, thank you @slothkelsier!

      1. 4

        I would suggest learning Python and Django. Not only does Python itself have more job opportunities, in my opinion it's a much nicer library, and Django is by far one of the "Big 4 Frameworks" (Django, Rails, Express and Laravel).

  2. 6

    I'll be honest: I think "learning a new backend language" and "quick iteration of ideas/failing-fast" are... not overlapping concerns.

    I don't want to discourage you in the slightest from picking up a new language. I think being exposed to, and knowing multiple programming languages is incredibly beneficial in many different contexts.

    That being said...

    If you're concentrating on "what programming language to use", you're not really focusing on the core problem, which is put plainly:

    "What's the fastest way I can validate an idea and get meaningful feedback?"

    That may not involve writing a single line of code. There's a pretty robust ecosystem of tools that will let you prove out an MVP without having to spend hours/days/weeks coding it up.

    Then, when something actually gains some traction, you can start to think about scaling it out and expanding functionality.

    1. 2

      Thanks for taking the time to respond, I appreciate it.

      That’s definitely good advice. Are there any specific tools or methods you’d suggest or that have worked well for you?

      I’m still going to try and expand my backend dev skills, but I fully take on board your point.

      1. 2

        Sorry for the late reply, seems like you've got a good path forward, but yea something like Firebase for quick iteration seems like the way to go.

        Airtable + Bubble + Zapier is also a fairly common no/low code workflow.

        1. 1

          No worries, very cool of you to take the time to advise me 😁

  3. 6

    Ruby on Rails. You can do pretty much anything with it, lots of resources online, low cost to maintain/perform library upgrades....

    1. 1

      Thanks! I should have taken a poll, that’s the second suggestion for rails I’ve had.

  4. 4

    NodeJS is fine, but do it with TypeScrypt. Makes code more robust.
    Python also good choice, but I would use Flask os similar lib for pure REST API in python instead of Django. Less overhead IMO.

    1. 1

      Good call, I guess strictly typed will mean I cause less dumb errors.

      Don’t know much about Flask I’ve played with Django a little because there seems to be more resources for it but I’ll look into it.

      Thank you!

      1. 1

        TypeScript is such a HUGE improvement over plain JavaScript. Definitely check it out. If not today, then in a few months when you're more comfortable with JavaScript.

        1. 1

          That is true. But I would point out that converting existing NodeJS project to typescript can be a lot of work. And from the quality perspective it's best to start with fresh TypeScript (TS) NodeJS project IMO.

          For small projects should be fine, but if you're like most of us here and do a deep dive into coding for months and after half year you figure it's time to go typescript way, you'll have a hard time converting it.

          If at any point you even remotely thin of converting your project to TS later I would say start with TS right away.

        2. 1

          I'll dive more into it. I've kind of avoided so far apart from one project because I've just wanted to focus on getting really good at plain JS before anything else and I'd also heard Kyle Simpson that wrote the "You don't know JS" books ranting on a podcast about how much he hates TypeScript 😂

  5. 4

    If you are thinking of scale eventually, I would argue for Java. Spring Boot framework has made it very easy to create Web Applications.

    1. 1

      Thanks @yogsma,

      I have to admit that Java seems a little intimidating and possibly overkill for my needs. I'm not coming from a CS background and I feel like it might take me a long time to both learn and build an app in Java coming from a frontend JS background.

      That said, I'll definitely look into it and thanks again.

    2. 1

      This comment was deleted 3 years ago.

  6. 3

    Give XgeneCloud a try : https://github.com/xgenecloud/xgenecloud

    It is like Firebase but works on any SQL database. You point new/existing database schema and within seconds you will have a fully functional NODE.JS backend with 100s of APIs. It has authentication/authorisation builtin as well.

    Here is a small demo on how easy it is to create APIs : https://youtu.be/gEU-QvmwSKQ

    Happy to help through the initial setup - please drop into our discord for any help https://discord.gg/5RgZmkW

    1. 2

      That is pure wizardry, looking forward to playing with it!

      Thank you 😁

      1. 2

        Thank you!

        Plus all APIs thus generated can be even deployed as a single Lambda function too!

  7. 2

    Could avoid backend and use something like Firebase & Cloud Functions to code in JS.

    Or use NodeJS & MongoDB

    I'd stick with JS because it's so widely used in frontend too.

    1. 1

      Thanks for responding!

      Yeah, I think that's pretty much my plan now.

      As a few people have suggested Firebase does have the potential issue of vendor lock-in, but I think for validating something it could work and I'm going to be spending a few hours a day sharpening my skills at Node/DB still while prepping stuff for the meantime in case I need to switch.

  8. 2

    Golang anyone? I am coming from a Node.JS background and I never looked back. Hit me up if you want to know more or pair a bit. Go big.

    1. 1

      Out of curiosity, what was it that prompted you to switch from Node to Go and what makes Go preferable to you?

      Thanks for responding 😄

      1. 2

        It was pretty much the compiler support. Golang is strongly typed. Compared to Javascript you catch a lot of problems at build time instead of runtime. With Javascript you often deploy something and let the user find out that something is broken. In Golang you still have panics and you got to know what you are doing to prevent that but it is not too hard with a couple of best practices. Also refactoring a Javascript project was a nightmare 7 years ago. I am not up to date how the ecosystem improved but I see that a lot of the JS ultras move to TypeScript now.

        1. 2

          yeah Typescript happened and it fixed a lot of things :)

          1. 1

            Extending on my post above, Golang got also channels and goroutines. The synchronization primitives are pretty cool for all kinds of use cases. The overall runtime performance is also not bad even though you have garbage collection issues at a certain level just like with anything else in high performance environments. Though I like to write command line tools with Golang as well. The ecosystem is also quite active nowadays.

  9. 2

    I would say python-flask is a good option, but if you have js background then you can go with express.js framework too.

    1. 1

      Based on all the feedback so far I'll probably start with full-stack JS, but Python seems like fun and I like programming in my spare time so I'll definitely give it a go-to see how I like it.

      I'm guessing Flask is more performant than Django because it's a micro-framework?

  10. 2

    I have a good background in Javascript and PHP. I would say the quickest way to build out a SAAS is to use Laravel in my opinion.

    Oh yeah, I've also built a pretty sweet SAAS Starterkit built on top of Laravel if you're interested ;)

    https://devdojo.com/wave

    1. 1

      Thanks, Tony!

      That is a sick landing page my friend! 🙌

      1. 1

        Thanks man! Really appreciate that ;)

  11. 2

    If you're looking at getting to MVP as quickly as possible, you should be looking a few levels "higher" than just at the back-end language to use. Ideally, you should be using a good framework (like Laravel or Ruby) or a full-on boilerplate to handle all of the common SaaS functionality, like user auth/management, subscriptions, application layout, etc.

    I am, of course, biased on this, as I am building Nodewood, a JavaScript SaaS boilerplate designed specifically for this case. I strongly believe that time spent implementing common core features like, say, password change/reset functionality, is wasted time for a SaaS developer. It's not a feature that defines your product, so why spend time writing it? However, everyone expects to be able to change their password, so someone has to write it. It just shouldn't be you.

    I'm still working on the finishing touches for Nodewood, but if it's something you're interested in, I'll shortly be looking for beta customers to help put it through its paces before launch. Let me know if you're interested!

    1. 1

      Haha I was literally just looking at your product last night, a chance to check out the beta would be cool thanks 😁

      It’s cool that you’re shipping something soon, let me know when the betas ready!

      1. 1

        Hey! You don't have any method of contact on your Indie Hackers profile, so I hope you still get notifications for comments on old posts.

        Nodewood beta applications are open, if you're still interested: https://nodewood.com/docs/master/beta/

        Other than that, hope things are going well for you!

      2. 1

        Fantastic, will do!

  12. 2

    The most important thing early on is how quickly you can develop your MVP. As a result, the answer to really depends on how quickly you can learn something else.

    If you think picking up another language will be difficult and slow for you, then stick with JS.

    If picking up another similar language isn't much of a problem for you, then you'll be considerably better off using something like Ruby + Rails or PHP + Laravel that will get you to the goal faster.

    If you feel confident about picking up an immutable functional language, then I'd recommend Elixir + Phoenix, which will eliminate the need for a lot of external services like Redis and workers to handle job queues, etc.

    1. 1

      Thanks for taking the time to respond so in-depth.

      I like the username, are you a fan of the book by Paulo Coelho by any chance or is that just related to Elixir?

      I think I can build/validate an MVP fairly quickly with my current JS skills based on the feedback from others here.

      That said I’m still wanting to improve as a developer so I can build out more complex projects if I want or scale with more control in the future, so based on that would you suggest exploring something like Elixir over say Node, Python or PHP?

      I don’t really know anything about Elixir to be honest.

      1. 2

        The name is for the connection to Elixir.

        I initially worked with JS full-time for 3.5 years, first front-end at Groupon, then full-stack at a couple of startups.

        When working on my own startup, I moved to Rails due to being considerably more productive with it even though it was new to me and I'd used Node for years. However, I was building a free to use video chat application, so scaling became a concern and I ended up rewriting everything in Elixir + Phoenix.

        That went really well for me and inspired me to make YT videos about it, which then morphed into a side gig. I think learning Elixir would definitely level you up as a dev, but for this project Laravel or Rails will probably get you there faster.

        Check out @tonylea's site!

        1. 1

          Interesting, do you mind telling what made you feel unproductive using Node or why you would choose PHP over it for instance?

          1. 1

            I didn't feel unproductive using Node. I was getting a lot done compared to my teammate at my last FT job.

            It's just that after just a couple weeks of messing around with Rails, I was already able to build the same features faster than I could with Node which I'd used for years. Laravel is very inspired by Rails and is nearly as dominant in terms of PHP web frameworks as Rails is for Ruby web frameworks.

            I've previously commented about some issues with Node (or really JavaScript / TypeScript in general).

  13. 2

    I'd recommend trying PHP its pretty old school but, easy to learn and can ship projects quickly. Just be sure to use a secure API such as PDO, MYSQLi if your web app is database intensive.

    1. 1

      I know PHP isn’t very “cool” but I don’t think it’s bad, I’ve been torn between Node and PHP mainly recently.

      Have you tried making anything in Node? Was wondering if anyone could share a comparison.

      Thanks 😄

      1. 2

        Hey, In order to ship product fast, i have used this:
        I have used Node as well as PHP for the backend. For the frontend i have stick with "HTML and CSS" only.

        PHP and Node has its own advantage, use when needed. I mainly use PHP for Routing and all services written in NodeJS.

        Authentication: Firebase
        Database: MongoDB, Redis
        RealTime DB: Firebase RTDB
        Hosting: AWS

        Let me know if you need any other information.

        1. 1

          Oh that’s an interesting approach, I’d never considered mixing and matching like that.

          Thank you for sharing 😁

  14. 2

    You can look at the SaaS boilerplate https://github.com/saasforge/open-source-saas-boilerpate and see how it works (backend is in Python) and you will know not only how to create SaaS from the backend point of view but also how it may be organized in a very effective way (using webpack, db migration scripts etc.)

    Disclaimers: I made it :)))

    1. 2

      Disclaimers: That is very cool :)))

      I'm fairly clueless with Python as of right now, but if I go in that direction I'm sure that will save me a ton of time, super impressive work.

      Thanks for sharing!

        1. 2

          This comment was deleted 3 years ago.

  15. 2

    Maybe it's not for you since you're experienced in JS and PHP, but I'm building a SaaS boilerplate with .NET Core as the backend. You can check the demo pages I've finished here netcoresaas.com.

    1. 1

      That looks seriously awesome @alexandromg!

      .NET is somewhat outside my realm of experience right now, but I'm not totally discounting it for the future, so I may use it.

      Few of my friends specialise in .NET so I'll send it to them.

      Thanks and Keep Hacking my friend!

      1. 2

        Thank you, good luck Michael!. Keep the community updated :).

    2. 2

      This comment was deleted 2 years ago.

  16. 2

    There are a lot of options for you in the JS realm. I personally would stick with javascript before learning a new language to build out MVPs. If one sticks, you can always start migrating it over to a better solution based on the needs of the project.

    I build a lot of backends with serverless hosted on AWS. It's cost efficient and allows me to test ideas quickly. With that being said, make sure the requirements of your backend are not limited by the short lifespan of AWS Lambdas.

    One more suggestion would be to explore Typescript and NestJS. I've recently started using it for backends over Javascript and Express.

    1. 1

      Thanks @Spdydve!

      I currently have zero understanding of AWS so that is something I'd need to research and learn, only serverless stuff I do is via Netlify currently.

      I've been looking at Express, but not heard of NestJS, mind telling me what made you decide to switch over to it?

      1. 3

        Netlify is good option for hosting as it sits on top of AWS and simplifies your hosting needs.

        I've developed various CMS, audit systems, and performance tracking backends with NestJS. But, it does require Typescript knowledge and implements Express under the hood.

        I would stick with JS/Express and as you get comfortable with it, then start to look at TS/NestJS.

        1. 1

          That seems like a solid plan to me, thank you for the suggestions 😁

  17. 1

    full-stack JS. you have to use JS for the front-end so you may as well use it for the back. unless you're doing something specialist like ML/NLP Intensive where you need the packages python offers, JS/node is fine and performant. RoR is slow. PHP is a mess.
    then the question is what nodeJS stack, which is a whole other can of worms...

    1. 1

      Thanks for the advice,

      My initial thought was Node/Express, but a few people had said to me that Node would be harder to maintain than PHP or Python/Django, so that's what I'm trying to figure out.

      What do you like to use?

      1. 2

        i don't like Django or Rails type monster stacks, prefer flask + my own ORM if python. It could be a node stack is harder to maintain if you're not familiar with stuff tho, it's more of a roll-your-own world. There are a few mega stacks tho, NestJS has a nice data model, Redwood are some of the new ones. If you're not doing complex backend stuff nextJS is a great way to get started, mostly front-end with a bit of backend.

        1. 1

          Next.js may work pretty well for me, I'm not sure I need anything overcomplicated for the meantime.

          Appreciate the advice, thank you 😁

  18. 1

    Programming languages are only tools. They are a mean to an end, not the end itself. Choose whatever you know (JS in that case) and try to see if people are interested in your idea.

    If you have a system impossible to maintain in your hands, it's not because of a programming language. It's because you made many decisions depending on a context, and some of them were not the best decisions.

    1. 1

      Totally agree, I can probably get an MVP up quick using Firebase right now judging by the feedback so far.

      Going further I guess I'll have to explore what requires the most maintenance.

      Thanks for responding!

  19. 1

    Hi! I'm in the same boat learning JS to make SAAS MVPs. I focused on JS with Nodejs & It's going well. Vuejs is also a nice add on!

    1. 1

      Hey! That’s very reassuring, thanks for sharing. Let me know when you launch 🚀 always cool to see what people are working on 😄

  20. 1

    Django is a good bet and it's in python which helps with the speed (nodes also nice too). I would just test out the market by validating ideas with quick landing pages/interviews to see if the need is frequent and strong enough. Firebase and node is a deadly combo that works wonders if you're already deep into JS.

    1. 1

      Django looks cool too, this is my problem, I would spend all my time learning new languages instead of building anything meaningful if I let myself get carried away 😂

      Perhaps Firebase/Node does make the most sense seeing as you're the second person to suggest that now, hopefully, I can explore more langs while building/validating.

      Needing to scale quickly would be a wonderful problem to have, whatever I pick of course.

      Thank you!

  21. -1

    This comment has been voted down. Click to show.

    1. 2

      Right now I already have a specific idea I want build out a backend for, but I appreciate the hassle.

      Keep on keeping on ✌️

  22. 2

    This comment was deleted 3 years ago.

    1. 3

      Totally agree! I already have a specific idea I want to execute, where the tech part is really what adds value by convenience.

      Also hoping to add to my skill set as a developer.

      But yes you are right solving a problem or adding value is definitely the most important thing.

  23. 8

    This comment was deleted 3 years ago.

    1. 3

      Thanks @anilkilic!

      I've played with Firebase a little, but something about giving up that much control makes me nervous, I could be wrong but it seems like it might get expensive fast and be hard to move away from, but as you said for idea validation I'm sure it would be great.

      1. 1

        This comment was deleted 3 years ago.

        1. 1

          That's good advice thanks.

          I'm not insistent on PHP or anything, it's just an example, I'm open to whatever would be the most practical.

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