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! 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/
* [2] http://jayrobin-todo.herokuapp.com/ 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! 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. 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/ 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. 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. 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. 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? 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. 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? 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. 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. 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? It maybe a bit outdated, but you can check out the net tuts tutorial here:
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 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. go to hackreactor.com 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.