What're the essential web languages for a new developer?
September 17, 2008 8:50 AM   Subscribe

I'd like to learn some web languages to help me take advantage of APIs and generally be more useful.

It's been a crazy month and a half. After letting programming lapse entirely, both as hobby and profession, I've found myself seated in the role again. As the only person with even the vaguest idea of how programming languages work, I've been appointed the job of "Web development guy" at the small company I work for.

This has turned out to be wonderful. I'm kept busy, I get wide creative latitude and I genuinely enjoy the act of creating. And, if I do say so myself, I'm not too bad at it. I dove right in reading up on modern CSS, digging through the archives of Alistapart, challenging myself to implement complex solutions and generally learning by doing. I read a ton on best practices and worked hard to make my web code pass the "drop-dead" test- If I died today, I'm certain someone with only minimal knowledge could pick up my code tommorrow.

So this is great! But now I'm looking to try and be even more useful. I'd love to start learning some web-friendly languages so that I can flex my programming muscle. There are things no manner of CSS wizardry can accomplish that I'd like to be doing. If there's an API that I think could be helpful, I'd love to be able to take advantage of it.

But, like I said, I'm still rusty. So I'm looking for two things

-What are the vital web languages that a budding development dude should be familiar with.
-Where should he learn them?

Books, videos, web tutorials- I'm open to all of them. I'm just looking to solicit advice from folks who are in the trenches. I'm not looking to be able to brew my own social network or create a mega database, but I'd like to know enough to generate some dynamic content or employ some Java tricks when most pedestrian methods fail.
posted by GilloD to Technology (16 answers total) 24 users marked this as a favorite
I should mention that my imagined answers are: Java, PHP, Ruby. So tell me how far off base I am.
posted by GilloD at 8:55 AM on September 17, 2008

Start with Javascript and its most badass library, JQuery. You'd be amazed what you can do with just HTML, CSS and Javascript.

(You mentioned Java several times ... do you mean Javascript? Aside from the name, the two have little to do with each other. Or do you mean Java applets? If it's the latter, I'd focus a lot more on the former. Java applets are nowhere near as prevalent as they were a few years ago.)
posted by Nelsormensch at 9:17 AM on September 17, 2008

Honestly, as much as I hate to say it, the most important language to know for the web right now is Javascript. The cool stuff on the web is all happening on the client-side, not on the server-side. For a server language, you'd be well served by Java, PHP, or Ruby as you mentioned. I'd avoid Java unless you had a particular reason for it. I'm also partial to Ruby over PHP, but PHP has its place if you just want to toss up something simple.

But you can do so much with Javascript these days, especially with things like Gears and HTML 5. And like Nelsormensch said, jQuery rocks.
posted by AaRdVarK at 9:21 AM on September 17, 2008

Time to get started on Javascript, then! A Q, however- Javascript can obviously do a lot of fancy, pretty things that HTML/CSS alone cannot. However, isn't there a temptation here to bloat one's code with pretty tricks?

Is there a place for best practices/live examples to understand where best to use Javascript?
posted by GilloD at 9:31 AM on September 17, 2008

It's not a pretty language, and there's a LOT of bad code floating around out there, but PHP is pretty much the 'English' of web development these days. Most everyone speaks it, and it's stupid simple to experiment and learn with tools like MAMP and WAMP. Languages like Ruby and Python are sexier, and if you're really passionate bout clean, elegant code the communities around those tools will probably be more helpful.

As others have said, though, learning JavaScript and understanding the DOM -- then leveraging it with a library like jQuery -- will put a lot of really crazy stuff in your reach.
posted by verb at 9:34 AM on September 17, 2008

I'm leaning towards the opinion PHP is probably the best path to take.

There are some very compelling reasons to use both Java and Ruby on Rails, but in terms of the ease with which you can create and deploy dynamic web pages, PHP is probably the simplest proposition. Certainly you'll find much wider support for PHP out of the box among hosting companies, if only because it's available by default in so many Linux distributions.

Another technology to consider would be Microsoft's .Net framework. It's pretty damn good according to a lot of people I've spoken to, although it's somewhat more platform-dependent.
posted by le morte de bea arthur at 9:36 AM on September 17, 2008

Any suggestions on where best to start with PHP? I'm open to a good ol' paper book, but I've certainly found web resources to be considerably more useful
posted by GilloD at 9:37 AM on September 17, 2008

javascript and actionscript3 on the client.

php, python and ruby on the server.

i really like working with java, but there's a lot of boilerplate and coding overhead. and if you want to process text, you'll get carpal tunnel in a week.

if you really want to make yourself interesting, you'll get into the geoweb. check out geoserver and, of course, google and yahoo maps.

i agree with Nelsormensch about java applets. flash has largely supplanted java for things that are best done in that way, and the new VM is very, very fast. the actionscript3 API is vast and still expanding, with the latest player offering native 3D transformations better filesystem access. that's on top of raw sockets, streaming HD video, etc.
posted by klanawa at 9:39 AM on September 17, 2008

Python. it's way cooler than PHP.
posted by GuyZero at 10:21 AM on September 17, 2008

Sorry, I should elaborate. Python is a much, much better language on a fundamental level and has lots of interesting libraries and frameworks available for it as well as interesting execution environments like Google's AppEngine. Python's built-in data types are a real joy to work with.
posted by GuyZero at 10:25 AM on September 17, 2008

php.net is a good place to start.

"It's not a pretty language, and there's a LOT of bad code floating around out there, but PHP is pretty much the 'English' of web development these days."

Well said. It's very easy to start using PHP - which means it's VERY easy to write bad code. If you're going to pick up PHP, you need to do constant research to find out what you're still doing wrong ;) Learn about security and OOP, areas where PHP programs tend to fail. You'll likely want to use a database with your new web app, so look into MySQL as well.

Also do NOT start out by using any frameworks. You need to learn how to actually write the code first. Try doing some simple applications to teach yourself.
posted by jesirose at 10:45 AM on September 17, 2008

HTML, CSS and JavaScript on the client-side. These are no-brainers and are all essential. I know you want to know about programming languages but CSS is pretty much essential as tables are considered bad form. The best book, despite being slightly dated, is CSS Mastery.

JavaScript is used for interactivity without refresh, usually via Ajax, as well as other cool features, and usually combined with a framework to take some of the heavy lifting out of it - jQuery is the most popular and is very simple to use but there's plenty of other chocies. The worry about bloat isn't really an issue as long as it doesn't look stupid when many sites are largely JavaScript-driven and the concept of "progressive enhancement" whereby you make a page that works without JavaScript and build up from there. There's plenty of ways of using JavaScript that aren't simply bloat. O'Reilly's JavaScript: The Definitive Guide is well regarded, and JavaScript: The Good Parts by Crockford is recent and has got good reviews but I personally haven't read it. Mozilla's JavaScript and DOM reference are stunningly useful. Quicksmode.org is also a great resource.

I'd regard Flash (whether developed via Flash itself or Flex) as much less important than some people make out, and is largely used to fill gaps that HTML and JavaScript can't which is increasingly streaming video and sound. Silverlight also exists, but is practically irrelevant since so few people have it installed.

Server-side is largely a matter fo taste. PHP is the most popular language, with most people using an off-the-shelf CMS system (Joomla, Drupal, Wordpress) if the site is something fairly generic rather than reinventing the wheel. ASP.NET is reasonably popular, but obviously Microsoft-only. MVC frameworks are have become fashionable recently, so you have the cool kids using Ruby on Rails or the Python-based Django framework, and there also exists various MVC frameworks for PHP like CakePHP or Symfony. There's also lots of other choices that are less popular but have their niches - for example Java Struts in Enterprise.

Agile Web Development with Rails is well regarded for RoR, and the Django book was the only game in town for Django last time I checked. I don't know what books are well regarded for PHP but ensure whatever you do read it's modern and up-to-date with best practices since security is a big problem with PHP.
posted by HaloMan at 11:20 AM on September 17, 2008

I'll give a bit of different advice from what everyone has said above.

To start with, definitely JavaScript and ECMA-Script

But on the server-side, what languages are you most comfortable using? Because just about everything but C++ these days has a pathway into active server-side web development.

If you come from a bash/awk/sed background, then perl is a logical extension.

If you are comfortable with Java, you have your choice of sever-side technologies. Or if you just want to stick in an interpreted OO language, python and ruby are good.

If you've drunk the cool-aid of functional programming, then there is a small lisp web development community with its own web frameworks. Although that won't pass the drop-dead test.

On the other hand, if you do shared hosting you should check and see what your web host supports. There is no point in diving into python if you won't be able to build anything with it.
posted by KirkJobSluder at 12:50 PM on September 17, 2008

If you end up looking into frameworks for generating dynamic content, I highly recommend checking out python. Specifically the TurboGears framework. It greatly simplifies putting together an MVC style webapp that is very AJAX friendly. Very easy to get up and running with it, as well. I am using an older javascript library for ajax, but I find the API and docs helpful for my minimal requirements. PrototypeJS.
If you are looking for widgets, I recently checked out DOJO, and thought it was shiny, but incompatible with my requirements (drag and drop across an IFRAME into FCKeditor).
If you want to go the Java route, and are willing to flip out with xml configuration files for a tomcat instance... IceFaces is another setup for nifty webpages I recently looked at.
posted by bastionofsanity at 12:52 PM on September 17, 2008

DOJO web toolkit.
posted by bastionofsanity at 12:54 PM on September 17, 2008

I'd definitely approach learning Javascript through a framework like JQuery.
posted by PueExMachina at 4:33 PM on September 17, 2008

« Older So, tell me about so   |   How do I use footnotes properly? Newer »
This thread is closed to new comments.