

Ask HN: Best progressive way to learn web development - hiteshtr

I am novice in web development, but I desire to learn all aspects of web development like web security, web API development etc. What is the best approach to learn them all progressively (a step by step way) ?
======
brianchu
For each step build 1-2 basic apps. (Basic app = 1-3 days of work).

Basic HTML + CSS (don't spend too much time here) + skim the Bootstrap docs
(you should use Bootstrap for everything after this).

Basic JS. Go deeply into JS (inheritance, etc) if you want to do rich client-
side front-end JS or Node.js (more on that choice later); otherwise that is
unnecessary.

jQuery. Also learn to use AJAX with jQuery (and learn about REST/HTTP).

Basic SQL and setting up your own schemas (set up tables in the command line
interface for MySQL/PostgreSQL/SQLite). I recommend Postgres.

Now pick one of 3 web backend ecosystems: Ruby, Python, or Node; and learn the
language. Pick Ruby or Python if you already know one of them. Pick Node if
you want to make real-time and concurrent apps or don't want to learn another
language (I'm talking true realtime - i.e. collaboration tools, chat, dispatch
systems, etc). Pick Python if you want to integrate machine learning/data
analysis/natural language processing into your app. Otherwise, pick Ruby (best
job prospects, biggest web development ecosystem).

For Ruby, start with Sinatra. For Python, Flask. For Node, use raw Node, and
then use Express. Use raw SQL, then try an ORM (ActiveRecord, SQLAlchemy,
Sequelize).

Optional: Rails, Django, or Meteor. (Meteor is not really comparable. It's
very immature/bleeding edge and has a different use case. I put it there
because it's the most popular full-stack big JS framework). I say optional
because there are essentially two models for web development: server-centric
(everything rendered on server and served), or api-client-side-centric (server
= API, browser/mobile app = rich client side). For server-centric development
you'll want to learn Rails/Django. For rich client you can stick with
Sinatra/Flask (Meteor would be rich client, though).

If you do go the rich-client route, do a little Backbone. I personally never
liked Backbone; if you also dislike Backbone, consider AngularJS or Ember
(AngularJS is what I'm using now).

With this broad foundation, start with a longer-term project idea and build
out its entire stack.

Some topics to explore after you've gotten a foundation: MongoDB/NoSQL,
regular expressions, advanced CSS3, advanced HTML5 features, dev ops,
socket.io (for Node), promises/fibers (for Node), CSS pre-processors,
CoffeScript, d3 (front-end JS).

EDIT:

REST and ORM are merely concepts. You will learn what an ORM is by the process
of first learning SQL, and comparing that to your experience with using
ActiveRecord/Sequelize/SQLAlchemy. You can simply google "What is REST?", or
"REST API tutorial."

As to your questions about Foundation and Go: what I've proscribed here is a
foundation. Not a definite, set-in-stone path. There is certainly a lot of
buzz around Go. Yet the question is not whether you should learn Go. The
question is whether you, as a beginner, should learn Go _now_. Go is bleeding-
edge and highly immature (in terms of the ecosystem). It is not something you
should tackle first. As for the Foundation vs. Bootstrap debate, the reason I
mention Bootstrap is because it is more or less the de-facto standard HTML/CSS
framework. But ultimately it doesn't matter which you pick. I've never used
Foundation but I could read the docs in an hour. This is the least of your
worries. Just pick one and go with it. Baby steps.

~~~
jayrobin
Really good write-up (I've built myself a syllabus coincidentally similar to
what you've described, which gives me some peace of mind). However, I'm
assuming hiteshtr was specifically asking about the (ZURB) Foundation
framework and how it compares to the Bootstrap framework (I would attempt to
answer myself, but have little to no experience with Foundation).

~~~
hiteshtr
yes you are write I was asking for comparison between ZURB's Foundation or
Bootstrap, i searched a lot but didn't got satisfied answer as some are in
favor of ZURB and other are in favor of Bootstrap

------
tmandarano
Treehouse, Codecademy, and Coursera are great tools to teach fundamentals.
Books can be good. There are screencasts that can be helpful as well.

Disclosure: I work at Code Fellows.

~~~
ragatskynet
I agree with you. I suggested these sites to a friend of mine and after then
he really got into javascript and ruby. After learning the fundamentals, books
are more understandable and more usable lets say.

------
porter
Come up with an idea for a web app and struggle to build it. You'll learn what
you need to know as you go along, plus a lot more.

~~~
saturdayplace
And if you're failing to come up with any unique ideas for an app on your own,
as a learning experience there's no shame in copying something else. It seems
like many web developers try their hand at building their own blogging
platform. Such an exercise should introduce you to a lot of the fundamentals
of how a web application is put together. Or, pick a popular web app
(Facebook, Twitter, Flickr), and try to replicate some of its features. Your
app won't even come close to nailing down the whole set, and the things you
implement will likely be buggy and inefficient versions of their professional
counterparts, but if the point is just to learn I don't see why copying is a
bad way to start. Many beginning artists learn technique by copying too.
[citation needed (:]

------
equilibrium
here's a good list of resources <http://prework.flatironschool.com/>

