I was never interested in Web development until i was interested in developing this application( http://submify.com ). So, I decided to choose the best contemporary framework/way to develop a website. I wasted lot of time reading Q/A in StackOverflow, Quora, blogs, technical websites.
I choose to learn Express Framework which was good and nodejs had good videocasts but I found myself not developing any module after several days! I again introspected if i had made the right decision and did many more “Google” search. It was not a good decision.
- Its relatively new, so security, bugs is an issue. I am not a nodejs hacker to fix those!
- Nodejs server is meant for applications like chat and other real time apps but is not good for conventional apps.
#2 Python Frameworks:
After realizing my folly for choosing nodejs(any frameworks related to it) for my site development, I continued to Google.com as usual. I decided to make a mini survey on the frameworks that are used by successful websites. Quora, Reddit, Pinterest, Instagram and even Google(for most works) uses Python, so I thought choosing Python based web framework is the best idea. But there were too many frameworks, Quora & Reddit uses Pylon while most other famous companies use Django. So, I did a search on “Pylon vs Django vs ” which resulted in first link with some shoot out or comparison graphs on various Python Frameworks which concluded web2py(a new framework) as a better framework.
I started to use web2py framework(not Aaron Swaritz’s web.py), the tutorial was good and it was browser based, so it can work in any platform with no installation or dependency overhead. It must be more easier for newbies! But i could not start on a fly! and there was no blogs or tutorials on building something with it! As usual, I switched the framework. I decided to use Pylons which was made into Pyramid framework! I spent some days reading and developing with Pyramid framework! It was not fast enough for my development.(again not much results in Google search)
And i wanted to make a safe bet, decided to fallback on the most widely used Python Framework- Django(Pinterest, Instagram and others) . I read djangobook which was suggested in most sites. I read some 10 chapters out of it but was never able to make a single module! Even creating a signup page was not fun(I do want fun, i don’t do things if its a pain in my back) My aim was only to create a web app which should follow best programming conventions! that’s all i needed. But, unfortunately the huge Python community is split when it comes to web frameworks!! (I am not saying Django is not good or is less fun, all i am saying is its not fast enough for me and there is no single Python web framework which can take advantage of the whole community, resulting in resources, tutorial or other projects to be scattered)
#3 Ruby on Rails:
I did not try to use Ruby on Rails framework initially as i have read blogs dismissing off Rails as some kind of hype but of no real value and also got intimidated by the file creations and the magic which i later found missing in other frameworks.
Whenever i tried any popular framework or googled for anything related to it, I could see the word “Ruby on Rails” everytime, it was annoyingly popping up every time everywhere. This definitely showed one thing, that there are many people using it, and there are even more people sharing the work with community!!
I choose this tutorial http://ruby.railstutorial.org/book/ruby-on-rails-tutorial by Michael Hartl which was recommended in most websites. I should say this is one of the best tutorial for any framework!! The first lesson starts off on choosing a good editor and a version control(he uses git in his tutorial). This tutorial pushed me to explore VIM and now i am a “vim fanboy”. I would have suffered badly if there was no good editor like VIM :) .
With this good tutorial, I started to develop my site from day one!! I started to develop so fast, every time if i wanted to make a new feature there was somebody who has a good blog or Railscasts or some gem .And i will make a quick blog post on how i made some features in my site!:) Hoping to see more Rails developer from new folks in web development!
Convention over Configuration: When you start development in Rails, you are doing it the way most rails hackers are doing! That’s just awesome!! And that is the beauty of Rails community who were also the first adopter of git and github, influencing the fellow developers on such good practices.
Ruby: After learning Ruby i could understand the need for yet another almost similar interpreter language. Ruby is all about making Programmer happy! it is expressive, you can have your own style and don’t have the need to follow the style of Van Rossum(pun intended). Ruby does not have as many libraries as Java or Python and the speed but the Ruby language community is the fastest evolving community who are not afraid to change with times(while most language communities are cautious)
The most irritating and biased argument!- RAILS DOES NOT SCALE ! Not many people are going to scale their apps beyond 200 million people. Even if you cross 200 million people, you should include better techniques and resolve the issue instead of putting the blame on Rails community! Facebook did scale with PHP and mysql! How? because PHP was the greatest invention by mankind? No!, because Facebook had smart people! Every framework might have its own issue, you cannot expect Rails to scale on its own!
I have chosen Rails, why? Because, I want to build my website as quickly as possible with whatever feature i wanted! Does, Rails do it? YES!!( I developed 95% of site in a month(learning period included) in the time after going to school) What if my site crosses 2 million users? :) Do you think that’s what i should assume and build my site with Java or Clojure or Scala as late as possible that i could continue dreaming of having million users and boast i have made the right decision from start?!
Choose a framework which suits to your problem and your taste! Please do not put a blame on a framework just because it didn’t work for you! I never said Nodejs, Python framework is less worthy than Rails but it never suited me! I might use Nodejs server in my site for feed and notification implementation as it is good at those(though Rails does solve it in Rails4) or use Python for data analysis.
Discuss it on submify.