Web framework for beginners

anand posted this on 04 Sep 2016

I was getting my friend hooked into web development the other day and I had hard time suggesting any language/framework for her to get started.

So I wrote the following list to evaluate things properly before suggesting something. For the sake of simplicity, I have listed the 3 popular web development stacks. Of course I can go deep down to each stack and get more permutations. But thats not the goal here. 

Stack 1 - Ruby on Rails:

  • Ruby Ruby on Rails
  • Postgres/SQL & ORM library (ActiveRecord)
  • REST APIs
  • HTML/CSS/Javascript & jQuery 
  • Ember or AngularJS
  • Git

Stack 2 - Python/Django:

  • PythonDjango framework
  • Postgres/SQL & ORM library
  • REST APIs
  • HTML/CSS/Javascript & jQuery
  • Ember or AngularJS
  • Git

Stack 3 - NodeJS/ExpressJS:

  • Javascript
  • NodeJS & ExpressJS
  • MongoDB  & ORM library
  • REST APIs
  • HTML/CSS/Javascript & jQuery
  • EmberJS or AngularJS
  • Git

Front end stack: The minute you see the above list, you could find the front end technologies to be a common set. That is - HTML, CSS, Javascript, jQuery, Angular or EmberJS. For a beginner to grasp all this in a decent shape and get something useful out will take at least 3 months. The grasp as in - a solid understanding & expertise to build production grade front end pages.  

Git: Another common item in all this is Git. Any beginner must study this properly and learn the basic set of commands to share their work with team members. 

Not included: And then there is - Bash (terminal) and Editor. Any developer must know her way around basic commands in Terminal. And she must be fluent in at least one editor like Atom, Sublime etc., 

I don’t want to talk anything about Unit testing or TDD now. 

Asynchronous I/O: NodeJS and its Async I/O patterns are getting popular on the web  but not many understand that its hard to explain its practical usefulness to a beginner. She has not taken the other routes to fully realize the benefits of Async I/O in server side programming. For the very same reason, its hard to make them understand NodeJS stack efficiently. It cannot be the stack where beginners will start doing web development with.

Single page applications: Though SPAs are useful in enhancing the user experience of web applications, it gets its own learning baggage for beginners. A separate MVC stack apart from the backend is going to be time consuming to understand and work with. 

REST APIs: Going to SPA route demands a REST API as well. REST principles and the kind of formats that must be used in accepting requests and delivering JSON responses must be taught as well. Talk about versioning of APIs, authentication of endpoints and various other security aspects of it. For beginners, all this is of course harder to grasp than rendering a full HTML from the backend. 

What we really need for beginners is

  • A quick way to get started
  • Instant gratification of building something quick and seeing it for real on the browser
  • Progressive learning on various corners of the stack, as and when need arises or when curiosity takes its turn.

Ruby on Rails or Django stack are still, IMHO, the best stacks that offers all this. #1 will always be Ruby on Rails for the fact that you have to configure less and trust more on Conventions to see your first page on the browser. Any other stack or language can be learnt once the developer gets her hand more dirty in her first job. 

~