views:

863

answers:

10

I'm a professional software developer. I've been programming in a lot of different languages over the course of more than two decades now. Picking up a new programming language is very easy for me.

However, I have no knowledge or experience whatsoever developing modern AJAXy web applications. What I need is a book that gives me a good overview over the technologies involved, most notably on the client-side, code samples that I can play around with and pointers to more in-depth stuff.

What I don't need is a chapter on how loops work or how to traverse a tree.

Any good ones?

A: 

I think the "Definitive Guide to JavaScript" by Flanagan is one good way to get an insight. Your question doesn't really make it clear whether you already know JavaScript. Some of the other answers here seem to assume that you do, but it isn't clear to me. Flanagan's book has good enough examples. But, my own introduction to this technology was just copy-and-paste of something I found from the internet which I wanted to use, rather than via a book. There are very many good examples on the internet of JavaScript programming.

Kinopiko
Tut-tut, answering a question with a question!
Artelius
+10  A: 

Pro JavaScript Techniques by Jon Resig

Pro JavaScript Techniques is the ultimate JavaScript book for the modern web developer. It provides everything you need to know about modern JavaScript, and shows what JavaScript can do for your web sites. This book does not waste any time covering things you already know, like basic syntax and structures.

Secrets of the JavaScript Ninja

This book is intended to take an intermediate JavaScript developer and give him the knowledge he needs to create a cross-browser JavaScript library, from the ground, up.

rahul
+1. Feh, Jon Resing. What did *HE* ever do?
Will
I don't know what Jon Resi*n*g ever did, but John Resig definitely helps me in my client scripting!
alex
A: 

Hmmm, first book I would recommend would be Agile Web Development with Ruby on Rails. But be aware that it will spoil you and get you thinking that web development is a breeze but enjoy its sweet necter and then dig deeper and see how other languages do it.

Also for speed on client-side stuff, go check out mootools and the mootorial:

http://mootorial.com/ http://www.mootools.net/

Gosh, not jQuery!

Edit: Seems I've been knocked down with out explaination, which I think is a bit unfair. I recommend ROR as a developer who comes from Classic ASP, ASP.net, JSP and even Lotus Notes! AWD with ROR is a perfect book for getting to grips with a web site application quickly. And as stated it does sugar coat some of the nasties of web development but its indepth enough to give you a really good over view. I can't think of a better book, hence the recommendation.

Pete Duncanson
Now why the mark down?
Pete Duncanson
A: 

You should try Learning Ruby On Rails

The book I recommend you to start is Agile Web Development with Rails - it's a great book with a very practical approach.

Daniel Cukier
+3  A: 

While not a book, the ASP.NET tutorial site is an amazing source of information and source code.

It's been my experience that books are out of date the moment they are in print.

cloggins
+4  A: 

Try CSS, DHTML, and AJAX by Jason Cranford Teague. You might need to hunt for an updated version, but I found it to be easy to understand and absolutely invaluable as a reference for future development.

The Web doesn't stand still, and neither does this guide: Completely updated to cover the new browsers, standards, and CSS, DHTML, and Ajax features that define the Web today, the one thing that hasn't changed in this edition is its task-based visual approach to the topic. In these pages, readers will find friendly, step-by-step instructions for using CSS, DHTML, and Ajax to add visually sophisticated, interactive elements to their Web sites. Using loads of tips and screen shots, veteran author Jason Cranford Teague covers a lot of ground--from basic and advanced dynamic techniques (for example, making objects appear and disappear) to creating effects for newer browsers, migrating from tables to CSS, and creating new DHTML scripts with embedded scroll areas, fixed menu bars, and more. Users new to CSS, DHTML, and Ajax will find this a quick, easy introduction to scripting, while more experienced programmers will be pleased to find practical, working examples throughout the book.

Nathan Kleyn
A: 

Try sitepoint.com books. They are really well written. Reading "A List Apart Magazine" also will learn you a lot.

cetnar
Another good site, similar to A List Apart, is http://www.SmashingMagazine.com/
lo_fye
+5  A: 

There are many competing web development technologies out there, perhaps it might be a good idea to sharpen the question a little by picking a direction. If you'd like to work in the world of big business you'd probably still be best served learning ASP.Net(C#). For those languages I liked the books:

  • Visual C# 2008 Step-by-step
  • ASP.NET 3.5: Step by Step

If you'd like to work in a well thought out and pleasant environment I'd recommend learning Ruby on Rails, the standard book for that(which is also quite good) is:

  • Agile Web Development with Rails

I've also heard some good things about Django, but I've never looked at it myself.

No matter what web language you decide to learn there will be some crossover. Javascript, XML, CSS, and HTML will be involved. I can't say that I really liked any of the books that deal with those technologies, but w3schools.com has some very good resources online:

I'd suggest that you come up with a project to work on, have it include things like users, authentication, uploads, downloads, messaging, scheduling, etc. Then, pick a technology and get to work. You'll learn much more by actually creating a working project than anything else.

jessecurry
I do have a project - I'm working on a Google Wave Gadget for Flickr integration. I need to get up to speed with the technology to move the project forward :-)
Mark Probst
+1  A: 

See my answer @ http://stackoverflow.com/questions/1419731/jquery-framework-internals/1419777#1419777

I also have a couple Javascript questions for tricky situations you may want to attempt to answer - http://stackoverflow.com/questions/1684917/what-questions-should-a-javascript-programmer-be-able-to-answer/1684945#1684945

meder
+9  A: 

Web development is a crazy different beast. Yes, the client side is important, and it's definitely what's being hyped at the moment, BUT there's a lot more you need to know to get up to speed.

Client-Side Code

  • Start with HTML & CSS. Try creating a single page of tags, and ONLY changing the stylesheet to completely re-design your page. Structure stays the same, style changes.
  • Then add in some javascript, using jQuery. I suggest jQuery because it allows you to interact with HTML tags using CSS syntax. You've just taught yourself CSS, so the learning curve will be lower.
  • Then try some jQuery extensions, or grab the book "Javascript: The Good Bits" by Douglas Crockford from O'Reilly press. It'll teach you how to write OO javascript that reliably works cross-browser AND it's only 150 pages long.
  • You can do ALL of this without a server, just by saving the .html to your desktop and opening the file in your browser. You can even do AJAX calls to other static .html or .xml files. jQuery makes AJAX super-easy.
  • For bonus points, try to get your HTML validating & CSS validating
  • For super-extra ultra bonus points, try to get your page to look the same, and not throw any javascript errors in Safari, Chrome, IE6, IE8, and Firefox 2 & 3 (good luck).
  • If you're doing the front-end now, you're doing usability. Check out the book "Don't Make Me Think by Steve Krug.

The Server

  • If you want to go open source (low startup costs / large communities), I would recommend installing the Apache web server (de-facto standard) on Linux or OSX or Windows. Follow the online docs for getting it installed, and bringing up your first page.
  • If you prefer Microsoft technologies, use Internet Information Server (IIS) on Windows (free as an 'extras' in Windows Professional & Server). It only takes a few clicks to get this up and running, and there are 1000s of online tutorials telling you how, plus the Windows help files.
  • MySQL is the most popular RDBMS on the web, and it works fine on OSX & Windows & Linux. If you prefer to have a GUI instead of a commandline, I highly recommend Navicat for MySQL, which is also available for OSX, Windows, & Linux.

Server-Side Code

  • Ruby On Rails is sexy, and there are people for and against it. To me, it doesn't seem like a great beginning language, because it abstracts away a lot of the details, and if you just trust the abstractions without asking "why? how?", it'll take you longer to get to Pro. Regardless, here's an awesome (infamous) book on Ruby, called "Why's Poignant Guide to Ruby"
  • Python is super OO, and has large community that's growing.
  • PHP is my love, though. It started as a procedural scripting language, and bolted on OO afterwards. The thing is, the speed with which PHP bolts things on is one of its strengths. Anything you can do on the web, PHP can do. It's free, high performance (Facebook & Yahoo use it), and it installs fine on Windows, OSX, & Linux. Oh, and PHP.net is a fantastic PHP resource.

Simple Installs

  • On OSX, you can install a free product called MAMP, which stands for Mac/Apache/MySQL/PHP. It installs them all at once, pre-configured. Makes getting up and running super-easy.
  • On Windows, you can install a similar product called WAMP (Windows/Apache/MySQL/PHP).

Bonus Materials

  • If you do choose PHP, you'll also want to look into the premier PHP framework called "Zend Framework". Zend is a company that provides enterprise PHP services. Their framework is community contributed, and completely open source. Great docs & unit tests, too.
  • If you get frustrated when trying to create grid-based layouts in CSS, or if you want a complicated javascript widget, you might want to check out the Yahoo User Interface Library
  • Learn to simplify & scale your CSS with OO-CSS
lo_fye