views:

430

answers:

15

I work for a small web design company, and learned everything I know on the job (my degree is in chemistry!). The other coder here taught me a fair bit of php, and I've had to pick up MySQL and a bit of javascript. I've also increased my knowledge of CSS. (HTML itself I already knew, really, along with a little CSS.)

Now, I am the sort of person who actually enjoys reading manuals (it's better than working). I've spent a reasonable amount of time buried in RFCs and in W3C standards. And I bought myself an excellent book on CSS. But the problem is that my knowledge is not structured at all. I have no formal training. The other coder has left the company and I'm here on my own till we employ someone else. I'm the only person in the company who understands php or javascript at all. And I'm trying to debug some AJAX that isn't working properly and having my lack of knowledge borne home to me.

So, I want structured courses in php and javascript. Recommendations, please? Preferably internet-based. (I live in Ireland.)

And, more interestingly, I want to learn some other languages. Even if I never use them in work, they'd be interesting, and I believe that knowing a few languages can be very good for you.


Summary:

Immediate need: a free source of good javascript/AJAX tutorials.

Next: recommendations for web-based classes in php and javascript, preferably with a qualification at the end.

And finally: ideas for interesting languages to learn afterwards.

+2  A: 

Learn Javascript before you learn about AJAX. AJAX uses Javascript. A good tutorial for JS and AJAX is at W3Schools.

monksy
I wouldn't call that tutorial "good". It's fairly typical of W3Schools — horribly outdated, and riddled with inaccuracies and bad practices.
David Dorward
+3  A: 

Learn JQuery, and while you're doing it, try to learn about the javascript language too. Here are my Delicious bookmarks on javascript: http://delicious.com/euroclydon1/javascript

Josh Pearce
JQuery is not a language and you cannot use JQuery without knowing javascript so you have it backwards.
Rob
Thanks for clearing that up for me, Rob.
Josh Pearce
I think there are plenty of people out there using JQuery without having a very good understanding of Javascript. They just find examples and samples/howtos and go nuts.
sparks
couldn't agree more. Learn JQuery (and JS specifically). In 5 years, I can't wait to see what can be accomplished with more JS optimization, and deeper browser support of canvas and media.
webguydan
It's totally possible to learn JQuery without ever learning JavaScript. Not necessarily recommended, but if you need to get something into production by EOD and your JS developer is out with Swine Flu then yeah - you can totally bone up on JQuery and skip JS.Just sayin'. ;)
Myk
+2  A: 

Next languages would probably be Python or Ruby if you are looking to stay in the web game. I've been learning Ruby via Ruby on Rails and have been looking at Python and Django framework and those look pretty cool too.

easement
A: 

The trend I pick up is that Python is the up and coming language to learn. I know it will be the next one I pick up.

Rob
I would hardly attribute Python to being the latest and greatest. Its been around for a while.
monksy
A: 

AjaxTutorial.net looks promising. My first recommendation is to choose and get familiar with a framework like prototype or jQuery.

Ewan Todd
A: 

For structured beginners courses see wwww.w3schools.com. This is where I initially learned JavaScript and AJAX.

For really learning JavaScript, you can use https://developer.mozilla.org/en/Core%5FJavascript%5F1.5%5FReference which is a complete JavaScript 1.5 reference. Otherwise I would recommend JavaScript: The Definitive Guide.

Lastly, with regard to AJAX, learn Jquery and then just use it. The AJAX wheel is one that most sane people do not want to reinvent.

Also, in school I learned C# and MSSQL. I learned PHP and MySQL because that's what I needed for work and now love both. I'm trying to learn Python personally. I think its a great next step from PHP and will allow you to do both web and desktop development.

Noah Goodrich
"The AJAX wheel is one that most sane people do not want to reinvent." All well and good, but the coder who's left has some AJAX code in this site which is almost but not quite working. I have no desire to rewrite it from scratch in jQuery. (He didn't like jQuery, for some reason. I think he said there was too much stuff in it which was never used, and he didn't like the waste of including it.)
TRiG
jQuery can be easily be included and then used to replace the existing Ajax functions. Assuming that the previous coder wasn't a total douchebag, He still used a few core functions to provide Ajax functionality where needed that you should be able to rewrite. That said, this is why I recommended going to w3schools first. Before I picked a javascript library to use I learned what raw AJAX code would look like. Its always important to be able to understand what magic lies under the covers. :-)
Noah Goodrich
A: 

You say you are interested in learning new languages. Why not become better at what you do now. Try to become an expert. Not "waste" precious time on learning new stuff.

Roger
Why do I want to learn more languages? (a) It's interesting. (b) http://www.joelonsoftware.com/articles/LeakyAbstractions.html
TRiG
Technology is changing too fast. Becaming an expert in single technology can be a real waste of time. And you can always find experts on sites like this one.
Ivan Nevostruev
A: 

You describe yourself as someone who picks up new stuff while you work. Great! So google is your friend.
I wouldn't recomment any classes. I studied computer science and learned my programming at home and on the job. Not in any classes.
When it is about ajax, go and find the documentation of the ajax frame work you are using. jQuery for instance has great examples to learn from.
And always try to fully understand what you are doing. In regards to ajax, you have to find a good source for javascript tutorials/documentation. As a german developer I used selfhtml a lot. I guess it is also translated by now.
When it comes to languages to learn afterwards: there are many interesting, but I guess (depending on the environment you are working with) C# and Java are the best to learn OO from and will also be the best investment.

Ralf
+1  A: 

There's never been a better time to be an ActionScript developer. I know a lot of coders roll their eyes at that because Flash is seen as that annoying thing for splash pages and interactive banner ads, but you can actually achieve some pretty amazing stuff in AS3 without even using the Flash Authoring Tool. Of course, it brings a whole new set of possibilities to the table.

If you are interested in learning programming and have some time to devote to the language, I'd recommend Essential ActionScript 3 by Colin Moock. It'll not only teach you how to use AS3 but will serve as a good introduction to Object Oriented Programming in general.

If you know HTML and have learned a PHP and want to know how to grow, I'd say a jump towards OOP is probably going to expand your mind the most in the least amount of time. Plus you'll know ActionScript, plus you'll be ready to handle other OOP-based languages. It's win/win/win!

Myk
+6  A: 

Learn programming, but not languages. New languages appears almost every day. But knowledge of programming methodologies will make your programs better structured, easier to maintain and test. It doesn't depend on language you're using.

Here is a good start point - Programming Methodology (Stanford). This free course is nice video introduction to "what is programming is all about". BTW it'll help you to learn Java too.

Ivan Nevostruev
I'm glad the link is a video. While your advice is good in theory, it can also be a great cure for insomnia. I'd rather pick up programming while learning the depths of different languages, noticing their similarities and differences.
Josh Pearce
But some things like *Design Patterns* or *Software Architecture" will really much time to learn by this way. How will you know which code is good and which is bad?In fact you need both *methodology* and *languages*. But methodology is more fundamental. And it'll help you to understand languages too. Actually there are many things for real programmer to learn about: algorithms, testing, performance and more
Ivan Nevostruev
+1  A: 

Hi Timothy, For JavaScript and related technologies in the context of current web standards and techniques, these resources are worth checking out:

(I originally learned about these from Christian Heilemann).

Good luck with it.

Premasagar
A: 

Convince your employer to get you a Safari subscription, and then read tons of books on web development. They have all the best ones, and they're searchable. I regularly come across problems that don't have solutions in google, but do have solutions in safari.

You could start with "Ajax for dummies", if you really feel out of your depth ;)

Joeri Sebrechts
+1  A: 

One thing that all the other answers seem to have missed is the Art of Debugging: being able to track-down a problem and determine its cause is something that is extremely useful.

I've tried teaching this to folks, and it's not easy - part of it is knack, and part is practice.

For example, with PHP errors, going to the call or line the error reports-on is only proper about a third of the time (in my experience) - it's usually the line above, or many above, that is missing something vital (like a semicolon) that has cascaded into the error reported.

The same is true of watching the javascript console in your browser.

Stack dumps almost always report "innermost last" (or similar), and most of the time, that is the actual issue (or very close to the actual issue).

Practice working-through errors (especially if you can trigger them intentionally (bad input, etc)) - your skills at coding will improve greatly.


In addition to learning how to debug, also see OCW from MIT - http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/index.htm#undergrad

warren
I've found that for PHP debugging having a shortcut in my editor to add "exit(__FILE__ . ': ' . __LINE__);" at various points is a wonderful help.
TRiG
So double underscores become bold type? I didn't know that.
TRiG
if you encapsulate the whole works with backticks, it shouldn't
warren
`exit(__FILE__ . ': ' . __LINE__);`
TRiG
A: 

What AJAX framework, if any, is your current code using?

The O'Reilly book "Pocket Javascript" is a great general javascript reference. It's both browsers, which makes life a lot easier for a developer.

The official PHP website is actually pretty good, and everyone starting coding on that should step through their tutorial and browse what they have available.

As far as qualifications at the end, that's hard to find with PHP and Javascript, I think. W3C schools offers a PHP Certification which might be worth it, and might not.

After that, it really depends on what you want to do. C#, Python, Ruby on Rails seem to lead this game right now. I'm a Java guy, and love it. Your mileage may vary.

Dean J
We're using a home-made AJAX framework. And it's not too bad, I think. Not that I'm really qualified to judge.
TRiG
My definition of good is pretty broad; if it fills the need *and* folks can read it well enough to fix it, it's good. Sounds like it's pretty good to me.
Dean J
A: 

I thought about this a bit, and wanted to flesh out my earlier answer. What I'm saying borders on "religious war", as people feel strongly about some of this, but I'm giving the answer I can give.

If you want to do web stuff, Ruby or C# are the languages right now. I think C# is probably harder to learn, but more worthwhile, as C# can be used for a variety of things. (You can write XBox 360 games, do full featured audio in desktop applications, heck, you can do full featured desktop apps.) Ruby is primarily used for Ruby on Rails, which is to say, it builds websites. (But man, does it do it in a slick way!)

Python is similar to Ruby, except it doesn't build websites as slickly. As the tradeoff, it's an amazing scripting language. Python's main web framework is Zope, which Python developers don't all like. Outside of web work, Python lets you work with files and with data, and is pretty darn easy to write compared to languages like C. (The example I think is of a buddy using Python to work with terabytes of data, and finding it at least half the speed of C code designed to do the same thing.) It's also good for system administration; you use it to write scripts.

If you're very serious about it, don't worry about what to learn first; just learn a few of them to spread your experience. If something's boring or not all that fun for ya, move on for awhile.

http://projecteuler.net/ is pretty interesting; math problems for you to solve with computer programs.

Dean J