This started as a reply to a post on reddit r/phphelp. I’ll likely add to it as I find new things or think of bits and pieces to add.
Do not think you have to be a “full stack” developer. Unless you dedicate many years, you will be a jack of all trades but master of none. I would suggest going down one of the following routes. I do post PHP-specific linkage below on the back-end side, but the overall logic still applies on what to do.
Starting with the front end (what shows on your browser)
If you are wanting to focus on web development (you like design, you like making things pretty):
- Focus on learning web basics first: HTML, JS, CSS. For that, you just need a web server (nginx, apache, or even *cringe* IIS) I personally suggest nginx. Learning a back end language at this point will just complicate everything, and if you decide front-end isn’t for you, then you will not have wasted as much time, and can move on to trying out back-end programming.
- When you are ready to start dynamically generating what comes from your server, then start learning a back-end language.
- I am not a fan of wamp/mamp/xampp… yes, they make it “easy” but it is not a realistic representation of what you will actually deal with on your actual server(s) on the internet. Learn to configure the server software yourself. Maybe learn to use Docker when you start getting into back-end stuff. You will be ahead of the curve and gain a much better idea of how everything fits together and how to scale processes.
- When learning web technologies https://developer.mozilla.org/ is your friend. Look for these links in your search results. Excellent documentation.
- You will inevitably get sucked into new technologies (that’s just how the JavaScript community is), so caniuse.org will be your friend to know when you can actually start using something that all of the popular browsers support, or just not support certain browsers that suck at implementing newer tech *cough*safariandopera*cough*. Hopefully you won’t have to worry about IE like the rest of us since the move to Edge.
- Do not worry about learning frameworks like React, Vue, etc. Learn the basics first. If you are looking at tutorials and they mention npm, you are learning to do JavaScript from the wrong place.
Starting with the back-end (where the really fun logic is)
If you want to focus on back-end services (APIs, databases, etc. You like to focus on logic, information, and you suck at photoshop like me):
- PHP has a built-in web server you can use to get started. No need for any other software if you are starting to learn. You can also just run php scripts directly in your terminal without having to worry about a browser.
- Don’t worry about databases yet. Start with the basics… string manipulation, logic operators & structures, Object Oriented Programming patterns.
- Go through a series of beginner tutorials like on codecademy or laracasts.
- php.net is your friend (pay attention to comments!)
- phptherightway.com is also your friend
- w3schools is not really your friend at least when it comes to PHP. Every time I have seen something on it, it’s usually the wrong way or oversimplified or overcomplicated…there are actually browser extensions to hide w3schools from google results. That should tell you something.
- Do not worry about learning frameworks like Symfony or Laravel. Learn the basics first.
- If you are looking at beginner tutorials that start mentioning composer, you are learning from the wrong place.