Join 3,363 readers in helping fund MetaFilter (Hide)


What's the step BEFORE "newbie" called?
January 4, 2007 5:59 AM   Subscribe

I'm getting into learning web design -- started with the basics of HTML, XHTML, and CSS, and want to move on to JavaScript and Ajax next. Problem: I have zero, and I mean zero, programming experience.

(Also, I'm really bad at logic/math in general, and from my limited knowledge I understand that these are precisely the areas in which most sucessful programmers usually excel.) Can anyone recommend resources (book, web, whatever) that would help me learn the basics of programming I need to learn these web authoring languages?

Just to be reiterate, I'm not looking for tutorials on JavaScript or Ajax; rather, I want tutorials that will teach me the programming concepts I need to be able to learn JavaScript or Ajax. Thanks!
posted by hazelshade to Computers & Internet (15 answers total) 36 users marked this as a favorite
 
Reading tutorials won't teach you what you need to know. Only experience will. You need to invest some time into it before you will be any good at all.

There are hundreds of ways to do it, none particularly better than the rest. What is important to know is that a browser is a terrible place to program.

My advice: Download a Python interpreter and go through "thinkCSpy".
posted by cmiller at 6:44 AM on January 4, 2007 [1 favorite]


You'd do well to start by learning a little about what "object-oriented programming" means in a non-language-specific way. The lessons from this tutorial can be applied to any language, including JavaScript and Ajax.

Thereafter, lessons learned about Java programming syntax and OO design can be applied (roughly) to JavaScript, which is syntactically similar.
posted by Blazecock Pileon at 6:48 AM on January 4, 2007


AJAX for n00bs. "Take a look on the net and you'll see endless pages of AJAX Frameworks: libraries which promise to do all the trivial and dirty AJAX work for you, leaving you free to code without actually understanding how the application you're writing really works. So lets pull back the smoke and mirrors and see what AJAX is and why it's just a simple evolution of client/server tricks Javascript programmers have been doing since the web was born."

Ajax Cookbook. "A new site from Bret Taylor (of Google Maps fame) provides a collection of simple recipes on JavaScript, Ajax and the DOM. Learn tips and tricks to use in your next project from one of the pioneers of Ajax."
posted by kolophon at 6:55 AM on January 4, 2007


I'm taking computer science in college right now, and they use Course Technology books from Thompson. Course.com.

The books lead you through a topic by the nose. Literally telling you every character to type, and click of the mouse. Then they have sample projects at the end of each chapter that you have to complete. These are less specific, so you can use the skills you learned in the chapter to complete them. Usually there are about 4 projects for each chapter, and each provides less and less details so you can rely on your new skills.

I highly recommend the XHTML one. It's got good info on HTML, XHTML, CSS, and even a couple chapters of Javascript. That might firm up your HTML skills.

They also have a Javascript book, but I haven't read it yet.

The books are pretty expensive, but you really learn the material.
posted by fcain at 7:20 AM on January 4, 2007


I would contradict some of the things being said above, and suggest that since you have zero programming experience, you stay away from AJAX, even "AJAX for n00bs", until you've learned a bit more. The reason I suggest this is that these sites usually spoonfeed a bunch of scripts and tools that do something similar to what you want, and find yourself messily trying to read/understand/edit them to adjust them to your liking, rather than really learning. Furthermore, to truly use AJAX requires knowledge of a lot of concepts that are very advanced to a "programming newbie".

I'd also contradict the suggestion that you should learn all about object oriented programming right away. That's an awfully complicated topic for someone whose math/logic skills are admittedly weak and who is new to programming.

Instead, I would suggest searching for general beginner's programming guides. A quick google search or two reveals:

Beginner's Guide to Programming

Programming Tutorials (these are language based, but could be helpful)

Here's a book you can buy in PDF form - it got good reviews on Amazon and is very reasonably priced.


After that, you'll want to learn the Document Object Model and then move into the more serious Javascript tutorials.

Once you're comfortable with Javascript and the DOM -- THEN move into AJAX.

Yes, it's a lot of reading and a lot of work, but you said you're looking for theory that you can apply so it sounds like you're willing to make the journey to be good at it, rather than learn to take someone else's work and duct tape things onto it to make it do something more attuned to what you want.

Good luck!!
posted by twiggy at 7:25 AM on January 4, 2007


It sounds like what you want to do is learn to program, not learn a programming language - this is exactly the right way to go about it, so that's a good start!

The only way to learn to write programs is to write programs. With that in mind, Ruby and Python are both excellent languages to use to learn to program and these are both excellent books/guides to doing it:

Learn to Program
http://pine.fm/LearnToProgram/

Why’s (Poignant) Guide to Ruby
http://poignantguide.net/ruby/

Both of these use ruby to teach programming. The 'How to Think Like a Computer Scientist: Learning with Python' resource that cmiller linked to above is also supposed to be good and uses Python.

After you've done that, your new skills will transfer easily to other programming languages, like javascript. Have fun!
posted by dflock at 7:26 AM on January 4, 2007 [1 favorite]


Best advice I can offer outside of recommended book purchases is that a lot of the "hard work" has already been done for you.

For javascript and AJAX-like functionality, there are a number of libraries and/or utilities that have been released that make it a lot easier than it used to be (almost too easy IMO, as it allows for some really sloppy web design and development).

Most of the popular (if not all of them) web scripting languages (I'm leaving Java off this list) have frameworks that incorporate structure and a lot of the required tools for AJAX, database connectivity, security (authentication or authorization), and so much more. Frameworks like Django for Python, Cake or Symfony for PHP, and Rails for Ruby. Take a look through some of their tutorials (particularly the Symfony one, it's impressive even if it is not my particular framework of choice).

There are a lot more than those three but they're generally considered the big players in the web scripting arena.

If you're more of a DIYer then take a look at Prototype. Javascript used to be one of the largest stumbling blocks for up and coming web developers since it has such a significant learning curve over HTML and it is far more powerful. AJAX is built on javascript and libraries like prototype make it much easier to use. See script.aculo.us, Behaviour etc.

Familiarize yourself with the Document Object Model (DOM) as it will make your life much easier (even if it seems a little daunting at first) especially if you get into XHTML (which is really just better structured HTML), XML, Cascading Style Sheets (CSS) and more.

Finally, download something like VMware so that you can learn how to setup your own web server/database environment (LAMP) A lot of developers are woefully ignorant of the technology behind the site(s) they're developing and quite often make critical mistakes that could be avoided if they better understood the underlying architecture.
posted by purephase at 7:34 AM on January 4, 2007


That's an awfully complicated topic for someone whose math/logic skills are admittedly weak and who is new to programming.

I wish object-oriented programming was taught to students before BASIC-style serial programming.

Putting aside that this is how AJAXy applications work, it's really a much more direct and natural way of thinking about how to put together a program, and the concept doesn't require much complexity to explain in general terms.
posted by Blazecock Pileon at 7:38 AM on January 4, 2007


Strongly agree with others about poking around in the some of the available frameworks like CakePHP or Ruby on Rails. It's probably a trendy thing to recommend, but learning Ruby now could really help your development skillset in the near future, especially since it's so easy and expressive, and since so many are flocking to it.

This live Ruby tutorial rocks, btw.
posted by deern the headlice at 7:51 AM on January 4, 2007


Also, try subscribing to some of the categories at Tutorialicious.
posted by deern the headlice at 7:53 AM on January 4, 2007


Take a look at the Head First series of books. They do great job of explaining things, and the books are fun to read.
posted by jknecht at 10:00 AM on January 4, 2007


Actually, failing to understand the Head First Java book is what prompted me to ask this question -- the authors recommend that people reading the book have a background in looping and if/then statements, things I unfortunately know nothing about! I tried reading the book anyway but by page 13 it was already Greek to me.

I did read (and love) their HTML, XHTML, and CSS book, though, and highly recommend it to anyone who's interested in those topics...
posted by hazelshade at 10:47 AM on January 4, 2007


"What's the step BEFORE newbie called?"

Somehow this reminds me of The Four Sons from the Passover Seder (and I apologize for the traditional male-oriented format). When one is being introduced to a new subject, there are four attitudes the novice can adopt: (1) The Wise Son: diligent, keenly interested, does lots of preperatory homework, asks lots of detailed questions, tries to figure out the system in terms of what he already knows; (2) The Wicked Son: contemptuous, apathetic, doesn't even make an effort to show minimal respect for the topic; (3) The Simple son: your typical newbie, asks general questions, and (4) The Child Too Young To Ask, i.e. you: not even capable of asking a question.
posted by Araucaria at 10:54 AM on January 4, 2007 [1 favorite]


Coming late the to party, but this seems worth pointing out... hazelshade, if you were reading Head First Java, it's no wonder you were confused. Java*script* is, confusingly, nothing to do with Java, which is a full-on object oriented programming language. I don't know much about Javascript myself, which is why I favorited the quite interesting advice in this thread. But by all means stay away from Java unless or until you have a need for it.
posted by libraryhead at 8:37 PM on January 5, 2007


While Python is a good language to start with, I recommend staying clear of everything except javascript. I tried learning Perl, C, C++ etc. from the ground up and always failed until I starting working with javascript.

The nice thing about javascript is you have a visual to work with. All you need is a some knowledge of (X)HTML and you can do all kinds of visual things while learning.

Other languages you'd be stranded at a command prompt for weeks (months?) before you learned enough to start GUI programming.

Another reason to stay away from other languages is because the subtle differences in syntax and behavior will only confuse you.

The basics to starting out any language are pretty much the same.

1) Assignment (foo=bar)
2) Expressions (foo + bar)
3) Looping (while (2 > 1) { do this })
4) Functions (DoReusableAction())

Those are basically the only concepts you need to start with. With javascript, as most of the others have said, the DOM (Document Object Model) is essential since it provides access to the markup elements but if you find a good tutorial it's also trivial.
posted by sipher at 1:22 PM on January 6, 2007 [1 favorite]


« Older How can I synchronise bookmark...   |  How do I build up the muscle s... Newer »
This thread is closed to new comments.