- "I want to develop web applications. Where should I start?"
First learn HTML
- "Ok, I got that, but my web pages look very bland. What am I missing?"
Now you need to learn CSS.
- "Now my pages look great, but they don't do anything."
To make applications you need server-side code. You could learn Java, C#, Python, Ruby, PHP or a host of other languages. I would recommend Python.
- "Now how do I wire up my Python code to my web page."
Oh, you need a framework to do that. Again, there are many to pick from. Try Django.
- "Ok, I have Django down. Am I ready?"
You will need to learn databases to be able to persist data between visits to your page. Mysql is a free and powerful database. Don't forget to understand how to normalize your database into third-normal form, but also how and when to denormalize your database for performance.
- "Now that I understand databases, how do I tie it into my application?"
Django has a powerful ORM that will map your Python objects to database tables. Oh, you did learn Object Oriented Programming when learning Python, right?
- "I have learned object-oriented programming, and Django's ORM. I'm ready to build web applications now, right."
Well, you want to do it right I presume. Now you need to learn how to do asset management, how to write RESTful APIs, and how to use virtualenv to manage your Python libraries.
- "Fine, I can manager all of my application resources effectively and write APIs. Am I ready now?"
All that code needs to run somewhere. You can't serve it up from your development machine using the dev tools. You need to learn Linux. I prefer Ubuntu. You will need to learn how to install software with apt, write bash scripts, and generally get around using the command line. This will include using a terminal-based text editor like vim.
You will need a production-ready web server software like nginx. You will need to know how to install, configure, and maintain it.
- "Certainly I'm ready now."
- "Okay, okay, okay. I've got all of that down. I'm ready to start building."
You can't just write code. You need something to maintain that code. You now need to learn git so that you can keep versions of your code and share it with anyone else working with you. It's important that you can fork, commit, branch, stash, and rebase.
- "Okay. I'm ready for whatever insanity you still have to throw at me."
One last thing. Since you don't have a computer science degree or any professional experience, you now have to convince someone to hire you based only on your interviewing skills. You do know how to sell yourself, right.