What exactly is the correct path to learn Web Development? What languages should I know for front-end and back-end development? How much should I know to start a project, and are courses from Codeacademy and Udacity enough to gain those skills?
Good questions, and hard to answer in that there’s no one way up this particular mountain. I talk to developers and designers and back-end geeks every day, and I think it’s safe to say I’ve never heard the same story twice. I think that may be the best way of finding your path — hear as many stories about people as you can, and follow the ones that resonate with you.
Personally, I started as a graphic designer and typesetter in my father’s print shop at the age of fifteen. This led to an interest in typography and graphic design, as well as computers in general. At the same time, I was learning BASIC programming in high school, then got an associates in computer programming from a local tech college (BASIC, COBOL and RPG-II). That degree has proven totally useless, but I continued in the graphic design thing for some time.
While working on print design, the company I worked for was having a techie come in every month to perform network support and updates to clients and server, and I was constantly pestering him with questions. I became the in-house ID admin, because I was curious. If anything, curiousity has defined my career trajectory. Ultimately, I was offered a job with the IT geek, serving the same position with many graphic design shops around New England.
While in that position, the boss sold some vaporware toa few clients, involving an intranet-based data warehouse solution that would integrate directly with their design software. He took care of the client-side interface (Mac OS9, native interface to QuarkXPress), and I was given the server-side and browser-based components to write (MS SQL server, ActiveState’s PHP). This was where I started to play with *real* coding, and UI/UX work. And I absolutely loved it. This was about 1996-97.
Since, I’ve worked on my own, doing freelance and consulting. I have established the basics (HTML/CSS/JS on the client, PHP/perl on the server) so that I could support client needs, while continuing to feed my curiousity with “the other side of the mountain” coding — working with Node.js, or Firebase, or D3. These are things that I may not need for current clients, but that I find fascinating. And by learning a broad spectrum of tools, I’m not only learning the tool itself, but the logic and algorithm behind it.
Note that I don’t have any formal education in the field. I’m by no means an expert. Everything I’ve learned, I’ve learned through thirty years’ slogging through the trenches. But that has gotten me into some great opportunities — I learned colorimetry from Apple’s best experts, and then rolled into teaching clients what I’d learned. I’ve been an Adobe Certified Expert (ACE), teaching clients howto use their tools more effectively. I’ve learned, and taught, SO much, and I continue to learn all I can, simply because I like to know stuff.
So rather than worrying about which online curriculum will do what you want, I would look at “how can I start to use what I’ve already learned?” Do you have a site setup? Have you got aserver you can mess around with and reconfigure? If not, I would recommend looking at something like Koding (Page on Koding), as it’s a free VPS giving you a fast development space that you can reconfigure however you want. You can install different back-end languages and experiment with them, then blow them away and start over. Look around places like Stack Overflow, find programming questions that you’ve run into or that interest you, then research the answers and formulate something useful. Play around on http://jsfiddle.net or http://jsbin.com, setup single-use front-end projects. Break them, and see what it’ll take to fix them differently.
As to learning the how and why of the internet, take a look at How Does the Internet Work? It’s a slightly technical rundown from Stamford, and it’s actually a pretty decent document.
This may have been more of a ramble, and for that I apologize — but there is no one correct and true way of becoming a web geek. Some come from a graphic design background, some from a rigid Java background — hell, I’ve known circus performers who became incredible developers. It’s about being a fearless coder.