How Do I Become a Web Developer?

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 two 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.

Craig

WebSanity Top Secret