DEV Community

loading...

Discussion on: Which backend programming language should I choose?

Collapse
rhymes profile image
rhymes

Which one should one pick if starting fresh into the web programming business

I think if you want to develop web apps you should aim for Python or Ruby. Go is great but I think the developer experience of tools like FastAPI/Flask/Django (for Python) and Rails for Ruby is better than Go's frameworks.

What are you trying to achieve?

Collapse
kovah profile image
Kevin Woblick Author

Thanks for your first impressions. I updated my post with more information about my intentions.

Collapse
rhymes profile image
rhymes

Thanks Kevin!

The language I would like to learn should mostly be used to craft backends for all sorts of websites and services: from "simple websites" with contact forms and so on, up to large SaaS products with a broad range of capabilities. It should be easy to start with but powerful enough to handle critical workloads. Ideally, it has mature frameworks which provide a solid base for things like user auth, ORM and database handling. Also,it should be future proof, meaning no declining but raising usage.

I still think my initial recommendation is somewhat valid. You designated Ruby as a dying language and though it's not strictly true, it is true that its adoption is not at the "top of the charts".

Rails is still a solid choice that many companies still make from scratch in the last few years. You wouldn't be wrong picking that: Shopify is probably the poster child of large scale Rails deployment and they have written extensively about how to scale a Rails app.

Python has many examples of large scale web apps deployments (Pinterest, Quora, Instagram's website, The Washington Post). That happens because in web apps, in most but not all cases, the language "speed" is not the bottleneck as most operations are I/O bound and you can deal with those however you choose: single or multi-threaded, async, parallel processing and so on.

Even in the case of numeric computing (so being CPU bound), you can skirt the limitations of languages like Python using tools like NumPy/SciPy/PyTorch as Python can easily call low level code written in other languages.

I personally think investing in Python, starting from scratch, is a tiny bit more flexible of a choice than picking Ruby (whose alternatives for numeric computing and ML have vastly smaller communities). It still doesn't mean that picking Ruby and Rails is a bad choice, the size of the Rails community and projects like Ruby 3x3 are a testament that "Ruby is dead" is a false claim. We use Ruby everyday at DEV and I can assure you it's actively developed :-D

Setting Python and Ruby aside, as I mentioned in the previous comment, I do like Go very much but its "raw numbers" are a bit of an arbitrary reason for picking it. They can't be the only metric: the developer experience, maturity of tools, flexibility of language and many other things have to factor in. Go's "web applications" community is not that big, most people use it to build APIs or microservices in my opinion but I wouldn't write a traditional web app in it. It'd be way faster to build it with richer dynamic languages like Python/Ruby. Go's huge advantage is the single binary deployment, which is nothing new in the history of computing but it's a welcome "come back" as we've all gotten used to scripts that have deploy thousands of files before you see your updates in production :-D

Maybe you can pick a tutorial for FastAPI or Flask (Python) and Beego or Buffalo (Go) and go through it and see what your feeling is.

Just know there's no inherent wrong choice here :-)

ps. I didn't mention Java or Kotlin because I know absolutely nothing about them, or at least nothing that's not probably obsolete knowledge :D

Thread Thread
kovah profile image
Kevin Woblick Author

Thank you very much for this detailed writeup. Will definitely keep those points in mind, and going through actual tutorials might be the best idea to get a first feeling for the options.