There’s lots of great advice about learning web development (creating websites and web applications) from people much smarter than me with far better web development skills. That said, if someone were to ask me where to start, my recommendations would be:
- Start tinkering with your language, to learn key concepts, fundamental syntax, and validate that you like it — you can use free online tutorials, like https://www.codecademy.com and the http://learncodethehardway.org series, or great books like O’Reilly-published books
- Pick one of these three languages to focus on:
- Python is a precise language, often used in the academic and research domains, where there is often considered a right (pythonic) way to do things (great if you’re interested in exploring/mining/analyzing data and statistical analysis, due to powerful math libraries) (here’s a great post that compares Python and Ruby)
- Ruby is an elegant programming language with lots of cool, convenient ways to do stuff — it was designed to be a great experience for developers (often used by tech startups and rapid prototyping projects)
- JavaScript is super-popular, convenient because you can it use it for front-end (what the user sees) and back-end (how the server works) — JavaScript for web development is a hot, popular field which is great; but it’s also changing super-fast, with new frameworks coming onto the scene all the time, so it can be hard to keep up with
- Modern web development usually relies on a framework to help you build web applications quickly (instead of manually creating everything) — each language has some leading frameworks to choose from (choose one to focus on initially, instead of bouncing all over):
- Python has Django (big, powerful, complex), Flask (small, simple), and a few others
- Ruby has Rails (super-popular, big, complex, “magic” in how it makes stuff work) and Sinatra (small, simple)
- For the differences between Rails and Django, check out this great post Quora post
- Go to local meetups, or other technology community events (e.g. conferences, training sessions) and meet people who are interested in the same type of technology as you — it’s a great way to get support, validate that you’ve picked the right technology area to start in, and have fun
- Explore sites like Quora, StackOverflow, HackerNews, and other sites to get inspired and read about what people think about relevant to what you’re trying to accomplish (do this frequently, but don’t let it become your primary focus — keep working on becoming someone who can create cool stuff, and not just read and talk about it)
- After tinkering for a little while (don’t get stuck forever in the previous steps), you need to pick a foundational book or online tutorial to work through in detail (it’s imperative that you don’t bounce around between lots of different tutorials — be intentional in going all the way through one, so you learn incremental, cohesive lessons) — tutorials like:
- To learn Python Flask, I recommend Miguel Grinberg’s free Flask Mega-Tutorial or his great book Flask Web Development (well worth paying for)
- To learn Python Django, check out Django’s official tutorials
- To learn Ruby on Rails, the most popular tutorial is Michael Hart’s free Rails tutorial
- I don’t know the world of JavaScript development well, so check out great resources on some of the sites mentioned or ask people at your local meetup
- If you use a Microsoft Windows computer (instead of Mac or Linux), it can be really hard to get started with development — instead of going through frustrating tutorials about environment setup that can be super-frustrating, I strongly recommend you use a free, online development environment such as Nitrous.io or Cloud9 (I use Nitrous and love it)
- When you run into problems, which you will many, many, many times; try working through this process:
- Google the error code and keywords, like the language and framework you’re using
- If that doesn’t work, consider asking friends you’ve met at meetups or posting it to StackOverflow and asking for help
- You may need to learn some adjacent skills as you work through this, like git (a version control system that lets you save versions of your code and publish them online) or using the Linux command-line to navigate around a web development server (most web development happens on Linux-based servers) — check out Command Line Crash Course or Learn Github in 15 minutes tutorials for help in those areas
- Once you’ve worked through a tutorial or two, it’s important to start trying to create your own stuff, using what you’ve learned and answering frequent questions you’ll have with Googling — don’t take too long going from step 1 to 9
Notes:
- If you want to build big, complex software directly for (inside of as an employee or contractor) huge organizations (e.g. Government and Fortune 500 organizations), you should learn Java or Microsoft .NET technologies