

Rails and Node and Client-Side MVC Oh My - scubasteve

The options are limitless. I&#x27;m a software developer with a very limited background in web development (think Assembly, VHDL, C&#x2F;C++, Python). With technologies floating around like Rails, Node&#x2F;Express, Angular&#x2F;Ember&#x2F;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&#x27;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&#x27;m not interested at this time is looking at &quot;what&#x27;s the better technology and why&quot; or &quot;X will pay the most when you&#x27;re good&quot;. With the technologies of today, if you were to start today, what would you recommend to a newcomer. Thanks for your help HN!
======
jayrobin
I was in a sort of similar position a few months back and did the EDX.org
Software as a Service course with the end goal of learning Rails. I was able
to complete the set work and pass with a good grade, but Rails never really
clicked for me (I think partially because Ruby felt so different to what I was
used to).

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/](http://jayrobin-yield-calculator.herokuapp.com/) * [2] [http://jayrobin-todo.herokuapp.com/](http://jayrobin-todo.herokuapp.com/)

~~~
scubasteve
I think that's the biggest key, to implement what you learn. I think now I
have a good idea of smaller projects I want to work on, with a bigger project
in mind. This was a great motivator. I never felt like I could finish a small
app after chapter 3. I'll definitely have to go back and think through it this
time around. Thanks!

~~~
jayrobin
When I say a 'basic, one-page app' I just mean a controller serving static
content (i.e. not even any models), which is the main topic of Hartl ch3. The
point was really to try creating _anything_ from scratch - starting with a
newly generated rails project, creating the controller, setting up the routes,
developing the page, all the way to actually deploying it on Heroku. It may
not be pretty and it may be just a single page, but it was a fantastic feeling
to actually build something of my own from nothing in Rails and see it live.

------
xaritas
Writing web apps involves wrangling a lot of warty technologies. If you try to
grapple with them all simultaneously, it's going to feel like a quagmire. You
should try to limit the number of unknowns and leverage the thing you know,
Python, in order to start getting some positive reinforcement from success as
soon as possible. So do the Django tutorial:
[https://docs.djangoproject.com/en/dev/intro/tutorial01/](https://docs.djangoproject.com/en/dev/intro/tutorial01/)

Then explore some commonly used Django apps (the Django term for reusable
modules) at [https://www.djangopackages.com](https://www.djangopackages.com)
and make something simple. Add easy user accounts with
[https://github.com/bread-and-pepper/django-userena](https://github.com/bread-
and-pepper/django-userena) or [https://github.com/pinax/django-user-
accounts](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.

~~~
scubasteve
Thanks for the feedback. I do agree that Django will probably be the best way
to get into web app development. I do have some Ruby experience, so I might go
back and tackle Sinatra first then Rails. But you make a very good point. The
first time I looked at the Django project docs they didn't seem very friendly,
but I think with the extra time I have now this might not be such a bad idea.

------
kohanz
I was in your shoes about 6 months ago (experienced non-web developer, looking
to expand my skill-set) and went with Rails. I took the Michael Hartl tutorial
(highly recommend it), viewed some Railscasts and haven't looked back. I'm
hoping to do a Show HN with my first side project rather shortly (I realize 6
months is a long time, but with a family and a job, I'm happy if I get 5 hours
a week to work on it).

If 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.

~~~
scubasteve
Thanks for the response! I think one of the best lines of advice I've seen
online was on Quora: "The language and technologies you learn are not the most
important bit when it comes to becoming a programmer. When friends ask me
whether they should learn Ruby or Python I respond by asking "Which language
do more of your friends know?"" I think that's what keeps bringing me back to
Rails, the support around it. I have the same problem as you, trying to find
more than 5 hours a week to stick to reading Hartl's book. I think now that I
have more time I'll try and go back through the book. Did you have any help
with mentors along the way?

~~~
kohanz
I was very impressed with Hartl's tutorial. Having tried many tutorials (for
other technologies in the past), his was one of the best-written and most
engaging. The fact that I completed it, including all the extra assignments,
is a testament to how engaging it really is.

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.

~~~
scubasteve
I'm completely okay with moving from where I am to "complete n00b" :). I've
always heard great things about Hartl's book, just never had the chance to sit
through and keep going through it more than 1 chapter a week. Did you go
through all the videos as well? Did you tackle TDD and git along the way?

~~~
kohanz
I only did the online version of the "book", so I don't know if we're talking
about the same thing. I wasn't aware of there being videos, so no, I haven't
seen those, but I have viewed numerous Railscasts since completing Hartl's
initial introduction and those are invaluable too.

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.

------
hkarthik
My suggestion would be to go with Sinatra over Rails initially. You could
potentially go with Node/Express instead, but picking up async javascript
simultaneously may be a bit of a burden. Actually if you know Python, Flask
may be the best place to start.

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.

~~~
scubasteve
This is fantastic advice. I've never thought about looking into Sinatra first.
I'll definitely be checking out resources for this. Anything you'd recommend
before I start my search?

~~~
hkarthik
It maybe a bit outdated, but you can check out the net tuts tutorial here:
[http://net.tutsplus.com/tutorials/ruby/singing-with-
sinatra/](http://net.tutsplus.com/tutorials/ruby/singing-with-sinatra/)

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](http://railscasts.com/episodes/317-rack-app-from-scratch)

~~~
scubasteve
Looks like a good time to join railscasts. Might have to look into Padrino
now. Thanks for the info. From a quick search, I couldn't find anything more
recent than 2 years old for Sinatra, so net tuts might have to do. Thanks
again.

------
gdi2290
go to hackreactor.com

~~~
scubasteve
I would absolutely love to try out hackreactor.com or devbootcamp. The problem
is moving and leaving my job, which is something I'm not willing to do right
now. I am taking a look at bloc.io, but I want to try the book route again
before I drop $5k.

