Ok so if someone wants to make apps/learn to code where's the best place to start? I know the rabbit hole is large and deep, but humor me.
You're correct that the rabbit hole is large and deep. Three new Javascript frameworks will probably be launched before I finish writing this.
I can only speak for web applications, as that is my background. Also note that I wouldn't consider myself to be a "real developer", only good enough to be remotely dangerous. My career has had me coming in and out of roles where some dev skills are required, and I've never written code consistently for years - which is what I believe what it takes to get "good".
With that out of the way, here are some basics that you need to understand to get started on a path. You can break things up into 2 major chunks:
- Front End - This is the presentation layer that the end-user sees in the browser. The foundational technologies used for this are HTML, CSS and Javascript (which can also be backend, but ignore that for now).
- Back End - This is everything behind the scenes that makes a web application function. Language examples here are C#, Ruby, Python, PHP, Node.js, etc (there are many more). Also database stuff, like SQL. So as a simplified example on this forum, you see posts (front end) but there are back end functions that are storing / pulling these from a database and pushing them to the client-side (front end), user notifications, account login functionality, etc.
There is a lot more to it than this, and I'm trying to keep things as simple as possible. To start, here are my recommendations:
- Pick a backend language to start with. I wouldn't overthink this too much. Once you understand the foundational concepts and get decent with them, it's not too hard to pick another language up. PHP gets shit on a lot, but the truth is modern versions of it are actually very good and it's still used in a lot of places. It has a huge community, it's fast, and is simple to learn. Node.js might be another good place to start, although the entire Javascript ecosystem might be a bit intimidating out of the gate. Ruby is another simple language, but it's fallen out of favor in recent years. Python is very popular, but I'm not crazy about using it for web applications.
- Once you've picked a language, do some online courses. Lot's of free shit out there,
@tardigrade posted a good one.
- After that, I'd recommend picking a personal project and trying to build it, without being handheld through the process w/ an online tutorial. Get good at googling to hunt down answers, and prepare yourself for a lot of frustration and some extremely gratifying "aha" moments.
- In the middle of all of this, you'll probably be introduced to databases, CRUD (create/read/update/delete), and will need to learn some SQL (although later on you likely won't be writing raw SQL, but I don't want to confuse things at this point).
- Also in the middle of this, you will likely want to learn about working with source control and repositories. E.g. git.
- Then write some more. That's the trick. Just keep building stuff and your knowledge will build on top of itself.
- Possibly at this stage go through earlier projects and refactor. You'll know enough now where you'll realize how shit your earlier code was, and will have much better ways to solve the problems you faced early on. Refactoring is just a fancy way of saying making your code better / cleaner without changing its functionality.
- Next step, start using other people's code to speed up your development. Learn the package manager for your language and how to use it. An example of this for PHP is Composer, Node has NPM, Python has PIP, etc. Basically you can find libraries other people have written and then use that functionality in your own project without needing to write it yourself. At this point, depending on the language you've decided to go with you might want to also start exploring frameworks. For example, Laravel for PHP is a good one.
Then just keep writing and learning.
Learning front end is a completely different path, but you'll be introduced to it as you're working through the above.
I'm probably forgetting a ton of shit.
Edit> If you decide to go the PHP route, this course introduces a bunch of concepts and is probably a good place to start:
We all start somewhere. When it comes to web development with PHP, well, your first stop is this series. Designed specifically and exclusively for beginners, here, you'll learn the fundamentals of PHP - all the way down to defining variables and arrays. If you feel somewhat unprepared for the...
laracasts.com
Note that this requires some basic HTML and CSS knowledge, so might want to take one of those courses first. It's really easy to get started with that, although mastery takes some time.