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).<p>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.<p>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.<p>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.<p>* [1] <a href="http://jayrobin-yield-calculator.herokuapp.com/" rel="nofollow">http://jayrobin-yield-calculator.herokuapp.com/</a>
* [2] <a href="http://jayrobin-todo.herokuapp.com/" rel="nofollow">http://jayrobin-todo.herokuapp.com/</a>
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: <a href="https://docs.djangoproject.com/en/dev/intro/tutorial01/" rel="nofollow">https://docs.djangoproject.com/en/dev/intro/tutorial01/</a><p>Then explore some commonly used Django apps (the Django term for reusable modules) at <a href="https://www.djangopackages.com" rel="nofollow">https://www.djangopackages.com</a> and make something simple. Add easy user accounts with <a href="https://github.com/bread-and-pepper/django-userena" rel="nofollow">https://github.com/bread-and-pepper/django-userena</a> or <a href="https://github.com/pinax/django-user-accounts" rel="nofollow">https://github.com/pinax/django-user-accounts</a>.<p>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 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).<p>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.
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.<p>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.