This last few weeks I have been asked a lot how you can learn to program, how you can start in the world of Web development, how to buy/configure domains and hosting, what's a data base, what's HTTP or JS, or a Cookie, etc.

OK. Let's be clear, I'm not going to explain anything about all this techniques/technologies. There are literally tons of manuals, tutorials, books and everything on the Internet.

But I want to say that starting in the world of Web Developent is very hard. I'll try to explain why just listing the stuff I think you must know as a web developer:

  • You must learn what a Web Server is...
  • ... and what is HTTP (HTTP Codes, Cookies, Methods, Headers...)
  • For really understand what web server is, you must know a little bit about IP and TCP protocols.
  • You must know something about domains, and that means learning how DNS works.
  • You have to configure a subdomain? You must learn more about DNS and what is a VirtualHost.
  • Ok, what about learning HTML?
  • And CSS.
  • And JavaScript. I mean a JS library such as Mootools or JQuery, not using "document.getElementById" and stuff like that.
  • Learn what AJAX is, and how to use it.
  • And PHP.
  • And a PHP framework (Yes. Seriusly. Your code sucks!)
  • And using a library for accessing to a database...
  • ....Oh! Wait. What's a DDBB? Ok, You must understand a little bit how it works, learn how to create tables and learn...
  • ...SQL (maybe you want to use a ORM for accessing to you data? Maybe not. )
  • And, after learning all this tecnologies/protocols/libraries you will have all sort of problems with IE6, 7, 8 and 9. And with Firefox and Chrome, of course. (Cross-browsing incompatibilities. Good luck with that!)

Other stuff that is highly recommended to learn:

  • It would be nice, as you are now a programmer, to use a VCS (Vesion Control System).
  • Learn about usability. It's very important since you probably want your page to be used by people that will not take a course of 15 hours onĀ  "How to use your webpage". If they don't know how to do something, they will go everywhere else where it's more easy to get the job done.
  • Learn (something) about desing. You shuld know that the back background with green text is not that cool.
  • Understand and configure the robots.txt file.
  • Learn a few thing about SEO.
  • Learn how to render a page in a mobile device.

And more advanced stuff can be:

  • Use RAM cache or NoSQL for high performance
  • Long pooling requests
  • Load balancing
  • High Availability
  • Build scalable web site
  • Get metrics of you application (monitoring and knowing what you users are doing on you web page)

And this is the list of the things that have come in my mind in 10 minutes. This is not a complete list, of course. But just with that you have a looooot of stuff to learn.

So, if you are planning to learn build web pages, take a deep breath and start from the top of the listĀ  to the bottom (or just pick the items that cach your attention). It will take you, well, a few months if you are very lucky and you invest a lot of hours every day playing with all this technologies, to start understanding the whole process of creating web pages. It will take a few years to fully understand how all the pices fit with the other.

I want to encourage you to start learning web development today. It's very fun and you can build amazing stuff. But I want to warn you that is not something you can learn in two weekends, and you will have to dedicate a lot of time reading documentation, manuals and books and trying new things.