

Ask HN: How to get started in web programming? - tripplez

Hi all,<p>A little bit of introduction: I'm a programmer, with appr. 8 years of experience writing desktop application (CAD, in C++), and game programming in the last 3 years. The working experience regarding the programming languages is just bare C, some assembler, and C++ (in C-with-classes mode mainly).<p>Since I and my partner decided to go for a web startup (the application idea is still quite vague as expected), I've decided to do a research about how to get started in web programming as a beginner (in web programming) but as an experienced developer as a whole.
Here is my current plan as a result from my research for learning of the necessary languages and technologies in order to make a prototype for out web application while still holding my day job:<p>Front-end development: my research concluded that for the beginning front-end development HTML, CSS, XHTML, and JavaScript are the classic bunch of technologies to learn. These are the books that I plan to read:<p>* "Head First HTML with CSS &#38; XHTML" (O'Reilly) (Alternative: "Web Design in a Nutshell: A Desktop Quick Reference" (O'Reilly))<p>* "Head First JavaScript" (O'Reilly)<p>Back-end development: here I don't have a clue how to get started. I've familiarized with most of the current (I hope) widely used languages and frameworks, but just the names. I'm still searching for a book that clearly conveys the message that it is whole package for back-end development and at the same time showing the big picture. Maybe the multitude of technologies make the research and the choice quite hard, maybe just the inexperience, maybe both, but I'm struggling to decide with which programming language + framework combo to start, and which first book on the subject to buy and read. My personal preferences are towards Python since I've read 2 of most recommended introductory books and I've wrote some simple examples, so generally I've liked it, but this is quite biased and subjective...it's the only programming language from the common back-end choices to which I've been exposed.<p>Thanks in advance
======
metamemetics
1) If you feel the need to brush up on python, try writing more than few
simple examples. A great Intro to Python course, all online, all problem-set
based where you actually write a bunch of stuff:
<http://cs.northwestern.edu/~akuzma/classes/EECS110-s10/>

Otherwise just jump into Django right NOW.

1) Do the tutorial on the site:
<http://docs.djangoproject.com/en/dev/intro/tutorial01/>

2) Get a copy of "Django 1.0 Web Site Development" by Ayman Houriyeh. I think
this is hands down the best Django book you can get. Why? Because it has a
basic intro to jQuery as well and goes through integrating jQuery with your
Django site. Don't worry about it being 1.0, it's still the book most worth
your time.

3) Download South and do the tutorial at <http://south.aeracode.org/> . Never
start a Django project without South now that you know it exists.

4) Don't get any other books, Just Build It. Consult the docs, mailing-list,
and #django-users as needed.

You probably won't need an IDE for your first site as you'll probably be
looking up functions in the Docs manually to see the examples, but if you need
one later do ECLIPSE+pyDev.

edit: as for struggling with language to choose, if you need any reasons to
stick with Python:

-Underlying implementation is getting faster and faster: <http://codespeak.net/pypy/dist/pypy/doc/>

-It has reached critical mass in a variety of fields in addition to web development. The SEC is even considering requiring companies to submit executable Python source code instead of certain documents.

-You have experience in C\C++ programmer and it is easy to run C from Python. You might find Python experience speeds up desktop application development as well.

-You probably already know enough Python to get started with Django, learning another language will slow down your momentum, you've already made a good-enough-decision that's not worth the resources optimizing more than just trying to launch.

ALSO: get the FireBug plugin for firefox asap and start pressing F12 on every
site you visit.

~~~
matthewphiong
+1 for Django

BTW, The free online Django book for you to get started:
<http://www.djangobook.com/en/2.0/> and the brilliant documentations.

------
samratjp
All you need is this: <http://railstutorial.org/book>

Hartl is a good writer and he covers the whole web stack. Besides, the book is
great for all levels.

Yes, I felt the same way as you did about python, but there is nothing wrong
with the Ruby camp either. I've spent some time with django as well, but
there's definitely some overlap.

I'd suggest that you finish the RailsTutorial book for getting a good exposure
to the whole web stack and then decide for yourself if Ruby or Python is right
for you. But, seriously checkout the table of contents for a good measure
first.

If you don't wanna waste too much time, checkout <http://www.tryruby.org> to
get a glimpse into the ruby world.

------
kls
Learn HTLM, CSS and Javascript including (jQuery or Dojo) for the back end
pick the language you want to use then learn their JSON library. Write pure
HTML / CSS and overlay your dynamic functionality with JavaScript widgets if
you need data from, or need to put data on the server use an XHR call to get,
or post it, to a JSON service. This is a very clean and simple way to do web
development that does not take heavy investment in learning a language
specific server framework. If you decide that you do not like your back end
language, it is as simple as writing your new JSON services in a different
language. This is the direction that web development is heading, because it is
decoupled the UI selections from the back end selection.

------
masnick
Here's a great guide for getting started with Ruby on Rails. It takes you
through all the stuff you need to learn to really understand how the whole RoR
stack works, in addition to some front-end knowledge. Links to resources are
included.

<http://techiferous.com/2010/07/roadmap-for-learning-rails/>

------
tjr
<http://philip.greenspun.com/seia/>

