Opinions wanted re: learning front-end web development

I’ve been doing web-design on and off for a number of years, and I’m very comfortable with HTML and CSS, and working to web standard. I’m currently trying to work exclusively to XHTML 1.1 (Strict) and CSS 2.

I’ve definitely come to web design from the design side, not the programming side. But I am comfortable working on a remote server and navigating through a UNIX/Linux based environment, and I have enough javascript to comfortably tweak code. But I’m decidedly not a programmer.

But I’ve decided that I’d like to delve into that end of things, and take a further level of control with my work.
To that end I ask you, Dopers:

Which areas of expertise are advised? Critical? In which order?

My initial thoughts are that I really need to be comfortable with:

Javascript
Flash (and ActionScript)
Perl
PHP
MySQL
and maybe Python

Where do I start? What do you recommend?
Thanks in advance!

One other thing I forgot to mention re: Javascript. I’m very interested in learning DOM scripting; how much programming and JavaScript experience is necessary to get into that?
Do I need a fundamental grounding in working with JS or can I hop right in and start from there?

Thanks

Forget Perl and Python.

I took about the same course of action you did… XHTML and CSS into PHP and mySQL. ASP is also a good language to learn, as you will surely encounter some along the way.

JavaScript is becoming more and more valuable, and a good working knowledge of it will take you a long way. Until then, however, there’s great libraries out there that have made incorporating JS into your pages a snap.

I used to be extremely well-versed in Flash and ActionScript, but there seems to be a backlash going on right now. Flash is sort of anti-good-design, as it is inaccessible to search engines and to people with disabilities and is extremely hard to update, bookmark, and change. You also need plugins to view it and it’s kind of bandwidth hungry. If you want to learn how to make games that’s one thing… building a whole site with it is discouraged these days (although some of my clients still request it).

Pick up a book and start reading. My first book was PHP for Dummies. I hate those books in principle, but in reality they’re a good primer.

The DOM is basically just a set of objects and methods provided by the browser that you can manipulate using JavaScript. You could probably jump right in and learn both together; DOM scripting is pretty much the heart and soul of using JavaScript in a web browser.

For most purposes, you don’t need to be an expert in JavaScript to use it well on the web. You do need an understanding of simple programming principles; using control structures, basic problem solving and algorithm design, modularity, etc.

You generally don’t need the more advanced features of JavaScript. For example, you probably won’t need to worry about how closures or lambdas work, or a deep understanding of prototypes.
As for your list, I’d note that Flash is generally a bad choice for web design. Pages built in Flash are more CPU-intensive, slower loading, and not as accessible. Flash is generally best for applications that have a specific need for richer content delivery; e.g., streaming media and games. The fact that it is a popular choice for creating web pages doesn’t excuse it. :smiley:

Fair enough. I kind of feel the same way about Flash already. I included in that list mostly because it is a major web technology, albeit with major issues (that you nicely laid out)

So then, Javascript and PHP seem to be the early winners here. How about MySQL? A lot of what I want to do seems to rely on it.

Start with DOM? or PHP?

Thanks

That depends. Which do you want to learn first: client-side scripting, or server-side scripting?

PHP is a server-side language. The most common application for PHP is outputting HTML web pages; it’s not really related to front-end design itself.

MySQL is similar; it’s a database system and query language. Databases and back-end page-generating code are both fundamental parts of pretty much any non-trivial website, but don’t have much to do with the web page as it’s seen by the client’s browser. Are you interested in just client-side (front end) design technologies, or more in comprehensive website building? These are all good things to learn if you want to get into the whole process, but not necessary if you’re only interested in page design.

I’d like to be able to handle small scale back end stuff myself, such as form-handling, integrated list-servers, browser based upload/download, basic DB stuff.

Nothing enterprise level, to be sure, but enough to integrate small-business web transactions and the like. Mostly with Magento or OScommerce, I’m guessing.

Build your own Ubuntu server and install LAMP on it.

actually, that’s not a bad idea. Ubuntu I can handle. LAMP, not so sure. How’s the learning curve? Is it mostly command line or gui?

What would be the minimum hardware specs for a useful LAMP machine? I’m guessing MySQL would be the biggest resource hog, at least on a test/training machine.