[hquinn@HenryNeeds ~]$ cat /var/www/blog/post.md
March 23rd, 2016 || Time to Read: 7 Minutes
⇐ Back to PostsI've only been in the web development game for a little under two years, but I'm building applications for a federal agency that are getting me invited to speak at conferences. It took me a while to figure out how to get to that point, and I didn't have anyone available to give me a road map when I started. I spent a long time teaching myself, and in retrospect there are definitely easier paths to take. So here's my attempt to set new developers on the right track.
I got my start in high school with some basic C and HTML/CSS, then had classes in Java, C++, JavaScript, XML, and SQL in college. Once I graduated, I began using PHP and MySQL for a work project. I eventually picked up Meteor (full stack JavaScript framework), ECMAScript6, some NoSQL experience (MongoDB), and now I'm working with Ruby on Rails.
However, the way I went about learning didn't work that well, and was honestly kind of sporadic. It took a long time for fundamental concepts to really stick. I jumped between languages a lot, did tutorials, read some books, endlessly trawled through StackOverflow, and even went to a local codecamp for funsies to get where I am.
It's entirely true that once you learn one language pretty well and get the core concepts down, that it's easier to branch out and learn more. They're all pretty similar, the syntax is just a little different. But you can learn a lot of marketable skills very quickly.
In the end, I guess it worked out, but looking back on how I learned everything, there's definitely a way to streamline it:
The biggest benefit you can give yourself is to get the fundamentals down. Pick a single language (something like Ruby, JavaScript, or Python) and learn the hell out of it. The three I listed are pretty simple and you can see results quickly, but can also be insanely powerful when you start adding in frameworks and the like later.
Ruby - Codecademy: This gives you an interactive shell (so you don't need to install anything) and teaches you the basics of the language (variables, functions, methods) and gives you a quick way to test and see the results of the code you're writing. This is what I used to pick up Ruby, and it helped a ton.
Learn Ruby The Hard Way: Don't let the title intimidate you. It's all pretty straight forward, and the author makes sure you have a thorough understanding of WHY the things you're building work the way they do. That insight can help a lot later down the road.
Free Code Camp: This is an open source learning framework. This takes you from the very basics of using JavaScript as a language to learn fundamentals (not necessarily for web development, but it walks you through a LOT). It also provides you with a support network of other people to talk to about solving particular problems, and eventually folds more in (HTML, CSS, API's) to continue building bigger and better things. This is what I used to learn most of what I know now, and I consider it invaluable.
It's important to note that you don't need to finish Free Code Camp. They add new material so fast, that I'm not sure if anyone ever has. It wouldn't hurt to finish one of the modules and get a certificate. Employers like to see that you can commit to something and finish it, but if you want to move to working on personal projects after doing a few of theirs, absolutely make that move.
JavaScript - Codecademy: Again, this gives you an interactive shell so that you can write, test, and see the results of your code right in your browser. This really focuses on fundamentals.
Automate The Boring Stuff With Python: This is a fun way to learn a language. You pretty quickly start building some things that help you in real life.
Python - Codecademy: Again, this gives you an interactive shell so that you can write, test, and blah blah blah. Starting to see a pattern here? Codecademy is really good for picking up the syntax of a new language.
I know that's ^ a lot. But like I said, pick one for now and roll with it.
Once you have the basics of a language down, it's easy enough to jump from one to another. I find that the Codecademy courses are enough to help me understand the syntax of a new language, and anything they don't teach me, the language's official documentation will. But now you're getting to the point of building things on your own, whether it be scripts, sites, or applications.
YOU NEED. TO KNOW. VERSION CONTROL.
I recommend Git. It's widely available, open source (created by the guy who made the Linux kernel), and it plays nice with GitHub and BitBucket. It helps you keep track of changes in your code, helps you share code with others (so they can read it and recommend changes, or use it as a basis to hire you), and offers a convenient way to have offsite backups.
GitHub's Git Introduction: This one is awesome for beginners and mostly teaches the command line (you can do this from any operating system). Do it twice. Do it three times. Just make sure you understand it.
GitHub's Git Lesson: Once you have the Git Intro down, give this one a shot. It teaches you how Git interacts with GitHub. And helps the idea of branches and pull requests make a little more sense.
Learn Git in 20 Minutes: This is a pretty well known talk that can help get a lot of the fundamentals down. Git is going to be a little different that anything you're used to, so it's important to understand the concepts. This uses visual aids to help it sink in.
Getting Git Right: This is an incredible resource from Atlassian. It teaches a lot: from basic to advanced Git commands, different workflows, and answers almost any question you'd ever have about Git. Keep this in your bookmarks bar; you're going to need it.
From there, I'd say just keep building stuff. Start adding frameworks like Meteor, Django, Rails. Find something you'd like to use, like a small application to let you and your co-workers keep track of which lunch spots you like, or something to keep track of how much weight you lift in a year.
Personally, I built a few small things for FreeCodeCamp, and just kept rolling with it. Once you build a few projects, you'll find a new piece of technology that makes a certain part of development easier. Like, using Handlebars and realizing that templating engines are a game changer. And then learning about asynchronous database calls with Meteor, being able to make applications for several platforms using one codebase, and using frameworks like Rails to abstract out a lot of the boring stuff in web development. You just have to keep going and continuing to build more interesting things.
It's a big, wide world.
And Reddit user /u/eru_melkor makes a really really really good point:
Don't suffer from analysis-paralysis.
There are going to be points where it seems like there are far too many options out there. Don't let that stop you from building. It's a big hurdle that most of us have to get over.
But Henry, how do I know I'm using the right tool?
Honestly, in the beginning, you don't. You just build, find a pain point, find something to relieve it, and move on. I didn't even touch on hosting, testing, containerization, or continuous integration here - but that's because you don't need that stuff yet. Just build using what you know until you come to a logical point to add something else into the mix.
And I know this is a lot. I truly get it, but we all have to start somewhere. I mean, just check out the first web page I built back in 2011.
/Cringe.
But now I have a pretty good resume under my belt, with plenty more projects. You just have to keep chugging away and in a year or two you'll be looking back on some of the old stuff you wrote thinking how impossible you thought it might be to get to where you are.
Life's funny like that.
And truly, if any of you reading this ever need help with any of it (syntax, getting stuff installed, setting up a development environment, getting your first website hosted) absolutely feel free to shoot me a PM on Reddit. I love helping people get their start, so reach out!
Made with
in New Haven || © 2023, Henry Quinn