Rails and Node and Client-Side MVC Oh My
The options are limitless. I'm a software developer with a very limited background in web development (think Assembly, VHDL, C/C++, Python). With technologies floating around like Rails, Node/Express, Angular/Ember/Backbone, the entry into building web apps is daunting. What would you recommend and why to getting started (best resources, easy to find mentors, great open source environment, etc)? I'm very interested in finding the lowest barrier of entry into web development for the sake of building my own web applications (hobby, and eventually more). What I'm not interested at this time is looking at "what's the better technology and why" or "X will pay the most when you're good". With the technologies of today, if you were to start today, what would you recommend to a newcomer. Thanks for your help HN!
17 comments
[ 3.3 ms ] story [ 49.4 ms ] threadIf I had to do it again, I wouldn't change my choice of technology. You can debate forever which technology is "best", but one cannot debate that the support system for learning Rails is tremendous.
I can't say I've had a mentor yet, other than StackOverflow and random blog postings. I still consider myself a Rails n00b, but building a functioning web application in Rails is extremely easy. Doing it well and quickly, is probably something that will require more experience and mentorship.
During the tutorial, I faithfully followed almost everything presented, including the extra work (e.g. using Postgres instead of MySQL so that the dev environment matches production more closely). This included TDD and Git. Git has been fairly painless because I have used Mercurial before and they are quite similar.
With my side project, that I started right after completing the tutorial, I initially used TDD extensively, for the basics of the model, but once the foundation was laid, I can't say that I have kept my test coverage up. I assume my story is not uncommon in that respect.
Picking up a heavyweight framework like Rails while simultaneously trying to understand web development is probably going to be very overwhelming. I'd only recommend jumping straight to Rails if you have significant experience with another similar Web Framework and understand at least the basics of Ruby.
To understand Sinatra, it's best to start with understanding Rack. Railscasts Pro has a good video on it. http://railscasts.com/episodes/317-rack-app-from-scratch
Then explore some commonly used Django apps (the Django term for reusable modules) at https://www.djangopackages.com and make something simple. Add easy user accounts with https://github.com/bread-and-pepper/django-userena or https://github.com/pinax/django-user-accounts.
Other people may point out that Django isn't the best framework, and they will be correct, but I don't think that matters right now as much as working in a language you already know. If you said you already knew Ruby, my answer would be different.
I put it to the side for a while, then recently decided to try again. This time I spent a little time getting used to Ruby (via codecademy.com and a few small personal projects), then doing the Hartl tutorial. What worked best for me was taking intermittent breaks in the tutorial to go off and implement something on my own from scratch.
For example, after chapter 3 I created a basic, one-page app [1]. Later in the tutorial, I made a pretty terrible To-Do list app [2] that nonetheless helped me finally understand MVC. After finishing the tutorial I signed up to codeschool.com and did a couple of the Ruby, Rails and testing tracks just to revise what I'd been learning.
I'm still a complete beginner, but I'm thoroughly enjoying working with Rails now and am making good progress working on a much bigger project.
* [1] http://jayrobin-yield-calculator.herokuapp.com/ * [2] http://jayrobin-todo.herokuapp.com/