I'm a product/business guy who studied computer engineering in college. I'm familiar with the basic concepts but haven't coded for a living at all.<p>I want to build a web application and am unsure which language/framework I should go with... I considered node/express/meteor or python/django or ruby on rails... how do I even decide?<p>Thoughts?
Hey Pranav,<p>I started learning web dev about a year back. I was right where you are and I will try to shed some light on what I finally landed on.<p>___<p>Frontend- ReactJS<p>Backend - Google Firebase<p>___<p>React is amazingly simple to learn. You just need to know some HTML, CSS and JS as a base. Google Firebase is probably one of the greatest things ever made. As a beginner, it helped me do things in days that would have taken me weeks.<p>This stack took me months to find and I'm so glad I did. I can even code and deploy static sites in minutes.<p>1. <a href="https://www.codementor.io/yurio/all-you-need-is-react-firebase-4v7g9p4kf" rel="nofollow">https://www.codementor.io/yurio/all-you-need-is-react-fireba...</a>
I would suggest Ruby on Rails. I am not familiar with other frameworks, so it might be that others have the same advantages as I will describe below.<p>For me the first and most important aspect is that for a new idea/project I just create a new Rails project, add Devise (authentication gem) and in very short time I can have login/signup and a welcome page. All of them with a decent level of security so that I don't need to think a lot about CSFR, XSS, SQL Injection (if you will follow Active Record guidelines) and many other things.<p>In Rails you can create your frontend directly in HTML/CSS/Javascript without the need to learn also React or Vue. And this "old" way of doing things will allow you to focus on the product and not on learning two frameworks (Rails + Frontend Framework). At least for me this is what it brings.<p>Also it is very easy to make your webapp expose an API and thus connect to the backend business logic from a Mobile App or some other client. This way you can re-write later your backend incrementally without loosing any downtime.<p>There is a healthy community of functionality packed as Gems and if you need a feature that is pretty common it might be that someone created a gem for it. Please be aware that not all gems are equal.<p>Also I like the language - Ruby - because for me it was very easy to pick it up and in the beginning I did not need to understand everything to have a prototype running.<p>I will add to this that the community is very supportive. I suggest RubyonRails.link Slack community where you can really address your questions and in general someone will help you with it.
Literally use anything you want. The secret is that it <i>doesn't matter that much</i>. Some options:<p>* node.js<p>* python with django/flask<p>* perl<p>* php (please don't)<p>* C# with asp.net<p>* Java<p>* lisp<p>* d with vibe.d<p>* Rust<p>* C with bchs[1] (please don't)<p>* ruby with rails<p>* Write your own framework in one of the tiny languages that doesn't have one; it'll become the de facto standard for that language, and all of the users of that language will thank you for increasing its potential market share.<p>Point is, it really doesn't matter. What matters is you pick something, <i>anything</i>, look up a tutorial, and then start making your webapp. Don't like it? Pick another one! Don't like that one? Do it again! Language/framework doesn't matter that much, as long as you know it well.<p>1: <a href="https://learnbchs.org/" rel="nofollow">https://learnbchs.org/</a>
You probably can't go wrong with either Django or Rails. From my personal point of view I'd favour Rails. In the past at least, Django also was more about creating CMS-type applications whereas Rails' main focus always has been SaaS-type business applications.<p>There's an argument to be made for isomorphic / universal code as well, i.e. using JavaScript both in the back-end and the front-end. However, if you're fine with learning two languages I'd say that the productivity gains by mature frameworks such as Rails or Django outweigh the reduced cognitive load of having to work with only one language on both the server and the client.
Couple of things to look for
* Language preference
* What is present out of the box
* How easy it is to extend
* Performance<p>I'd pick one among Django, Rails or one of the popular Js stacks for the backend.<p>For the front end the same criteria apply, however there is not much scope for language preference. I generally go for jQuery based site unless I have a requirement for a framework. From a framework perspective I liked React + JSX.<p>I'd say go for JavaScript in the backend too since you'll have to learn the best practices and idioms of a single language.
I would recommend using Rails(Ruby) or Laravel(PHP).<p>Both have great communities to help you along the way.<p>Due to clients I have moved from Rails to Laravel. Both are similar.<p>Checkout Laracasts.com.<p>Laravel has some great tools. Valet (Local development environment) forge.laravel.com is a great tool for setting up servers and doing deployments.
I would suggest Django over Rails. Python is powerful and beginner friendly and can be used for all sorts of stuff.<p>And whatever you do, don't go for JavaScript based frameworks. Setting them up is a pain and the plethora of options available for every single bit of the framework can be overwhelming for beginners.
Since this is PG's website, take a more Bayesian approach:<p><a href="https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites" rel="nofollow">https://en.wikipedia.org/wiki/Programming_languages_used_in_...</a><p>ps: back end column/table
Check out Golang for the server, it's a statically typed language so it's fast and hard to introduce subtle bugs that can cause a lot of confusion. There is a ton of interest and mindshare moving towards Go and it's supported by Google so it's not going anywhere. Big projects like Docker and Kubernetes are written in Go.<p>For a web application I think most of the work will be in the frontend which basically means javascript. We've had a lot of success using Golang for the backend APIs and React for the frontend.
It depends on your actual application. Given your lack of programming skills I have a hard time recommending any programming based technology.<p>As it stands you wi9ll not only need to learn the technology you are going to use but also the programming language.<p>When people ask me which programming language to learn, I recommend that with the best debugger. Screaming at the computer WTF! for an hour does not help sovle problems.<p>For a web application I am unsure which has a good debugger, although I am sure there is some variety.<p>I would also look for which ones provide plenty of learning material.