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 to a 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 how to 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 set up? Have you got a server 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, set up 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.

What to do server-side? That’s like asking what kind of ice cream I should like. Seriously, it’s about where your comfort zone is. If you like the whole javascript thing, take a good look at node.js — javascript applications on the server. Personally, I’ve always resonated with scripted languages (I can’t abide compiled languages, never could), so for server-side coding, I work with Node, PHP (http://php.net), or <shudder> perl (http://perl.org). I like frameworks, both client and server, so I’ve been playing with Backbone and Marionette (http://marionettejs.com/) (front-end MVC) or Yii (http://Yiiframework.com/, an MVC for PHP). In every case, I’ve let myself be led by my curiousity, and by questions, whether from clients or from peers.

How solid an understanding of front-end development do you have? Are you using OOP principles in your javascript? Have you looked at books like Pro JavaScript Design Patterns: The Essentials of Object-Oriented JavaScript Programming by Dustin Diaz and Ross Harmes? Or, if you prefer online materials, I consider Addy Osmani a vital resource (notably these two: Learning JavaScript Design Patterns and Patterns For Large-Scale JavaScript Application Architecture (http://addyosmani.com/largescalejavascript/)). One of the beautiful things about these is, they can be applied to server-side code, when you start tinkering with Node.js

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.

If you have the basics of HTML, CSS and javascript, you’ve got what you need to set up a website. You can set up a static HTML site, with however many pages you need, simply to get the feel. See if you can completely abstract the presentation layer (the CSS) from the document (the HTML). A prime example of this would be http://www.csszengarden.com/ — that’s an example of one base HTML document being completely changed by using a different CSS layout. Hell, take that HTML (treat it as locked), and create pure CSS for that. That way, you aren’t working with many hats at once, you’re JUST focusing on the CSS itself.

Leave a Comment

Your email address will not be published. Required fields are marked *

/* add by OCEANUS */