Someone emailed me recently and asked me what he should learn
if he wanted to become a web developer. I forwarded his request to a
mailing list I'm on, and my good friend Craig Buchek wrote the
following excellent reply.
There's a HECK of a lot to learn to be able to do web
development effectively. Just to be ABLE to do it, you have to learn:
HTML
CSS
PHP or some other server-side language
To do it EFFECTIVELY, you've got a lot more to learn:
SQL
JavaScript
libraries and frameworks
a bug tracking system
Subversion or some other revision control system
IDEs
other tools
Apache
Linux command line
To do it WELL, there's even more:
usability
unobtrusive JavaScript
separation of concerns (MVC, etc)
testing
customer relations
HTTP protocol
AJAX
I think that skipping PHP and the others and going straight to
Rails is a good idea. Maybe. At least if he's talented. But he'll still
have to learn a lot of things before he's any good at creating a site.
(Don't
forget that we found Rails easy to learn because we already knew a lot
about web development.) He'll still have to understand HTML and CSS.
The Agile Web Development with Rails books is excellent, but it takes a
lot to get through. If you're the type who can read a manual to learn
how to do something, then it's fine. But if you need to start out with
a tutorial, then you'll need to start with a different book. If you do
go this route, I'd recommend learning in this order:
HTML
CSS
Apache (as little as possible to get 2 virtual hosts
running)
Rails
Subversion
Test-Driven Development
Ruby
SQL
If you want to make a living at it, I'd expect it to take at
least a year of full-time (self-)education. Everyone learns
differently, so it's hard to recommend learning materials. I'll offer
some ideas though:
books (my favorite; I look for conciseness)
formal training classes
(community) college classes
local user groups (attend if topic is pertinent)
online videos/screencasts
podcasts
web tutorials
blogs (hard to get the basics though)
personalized training
mentoring
If he just wants to play around, I suppose the order is not as
important. Learn things as they interest you. Eventually, you'll find
you've learned a ton and enjoyed doing it.