When I first started learning web development, I went with the obvious introduction- learning HTML and CSS and then attempting to grasp Javascript. I wish someone had told me to focus on more important fundamentals, which are the concepts that underlie programming. I am writing this post for anyone who doesn’t know where to even start in web development, and for those that have been trying for awhile and can’t seem to get through repeated roadblocks. This is what I wish I had know a year ago, before spending any money or jumping into more advanced material.
I’m recommending these steps for learning programming fundamentals. Going through this introduction will prepare you for further exploration of web development, data science, or software engineering. Starting here will give you the fundamentals needed to understand tutorials and succeed in coding bootcamps or free online curriculums.
Disclaimer: These steps are influenced by the first Tealeaf Academy course I took. I’ve stumbled through lots of different resources, and that course was the best one by far. Tealeaf Academy has since been replaced by Launch School, which is a great program but goes into great detail on Ruby. I wouldn’t commit to Launch School unless you’ve decided Ruby on Rails is what you want to ultimately learn.
Step 1: Learn Programming Fundamentals
Whether you want to focus on the front-end or the back-end, you’re going to end up using these principles. These concepts include:
- Variables
- Methods
- Loops and Enumerators
- Conditional Statements
- Arrays
- Strings
- Numbers and Operators
Choose a simple programming language language to start with, like Python or Ruby. This way you can focus more on the concepts and less on the syntax. Syntax is how you format your code, and can get pretty confusing in languages such as Javascript, which uses an abundance of curly brackets and semicolons. The language you learn first ultimately does not matter. Seriously, it doesn’t. The concepts you learn here will easily carry over to another programming language. I went through an entire course on Ruby and have now decided to switch to C#. I do not regret the Ruby course at all, as the fundamentals are already carrying over in the limited studying I’ve done. Additionally, I love Javascript, but I wish I had started with Ruby. The nuances of Javascript can be really confusing when you’re first learning to program.
Depending on the language you choose, these are the learning materials I would recommend you use to learn the basics.
Ruby:
Launch School: Introduction to Programming with Ruby
Python:
Learn Python The Hard Way, Exercises 0 and 1
Think Python: How to Think Like A Computer Scientist (Ch 1-14)
Do all the exercises to get the most out of these books. I have read parts of Think Python and have worked through all of Launch School’s book. Think Python focuses more on computer science fundamentals, which could be pretty useful in the long-run. I found Launch School’s exercises to be more practical for web development. You really can’t go wrong with either one, though.
There are alternative online classes for this, but I recommend going through a book because: 1) You’ll have material you can easily refer back to, which is harder with videos. 2) It’s really important that you write code and are actively engaged early on. A book reduces the temptation to just sit back and passively watch a video. 3) I’ve gone through a lot of tutorial videos, and none of them have been able to cover the basics as well as a book can.
Step 1.5 (optional): Learn to Use Git and Github
Before you start writing your own programs, I’d strongly recommend learning the basics of Git and Github. Here’s an article to get you started, and Launch School’s book goes into more detail. At the very least you need to know how to set up a repository, commit changes, and push your work to Github. You could probably put this off until Step 4, but the sooner you learn version control, the better. While you’re at it, learning more about the command line wouldn’t hurt either.
Step 2: Write A Few Small Programs
Now that you have a solid grasp on the basics, you’re ready to write your own procedural console programs from scratch. In my Tealeaf Academy course, I coded a few games: Tic-Tac-Toe, Rock-Paper-Scissors, and Blackjack. These are pretty good projects to start with. I would recommend coding something that you can easily find example solutions for on Github or elsewhere. Even better if you can find video tutorials walking you through a solution. Of course, try your best to code the programs yourself before peeking at the answer.
Step 3: Learn Object-Oriented Programming
This is probably going to be the most challenging step. Knowing how to write code in an object-oriented fashion will help you in any programming language, and tends to be necessary for larger applications. Continue learning in whichever language you chose with the following resources.
Ruby:
Launch School: Object Oriented Programming with Ruby
The Odin Project: Make sure you understand the “points to ponder” and can do the quizzes under “test yourself”.
Python:
Think Python (Ch. 15-18)
Udacity: Programming Foundations with Python
Step 4: Write OO Programs
Take the programs you wrote in step 3 and try to rewrite them so that they are object-oriented. If you’re having great difficulty doing this, don’t worry too much. Object-oriented programming takes time to grasp. Do what you can and then consider moving onto one of the resources below.
Next Steps
If you’ve made it this far, congratulations!! You have a firm grasp on programming fundamentals and probably a pretty good idea if this is something you want to further pursue or not. You have a lot of options for further study depending on what you’re interested in. I’ve listed some resources below.
Free Code Camp: Learn front-end web development, and full-stack Javascript. Free.
The Odin Project: Full-stack web development curriculum using Ruby on Rails. Free.
Open Source Data Science Masters: Curriculum for learning data science composed of online resources. Free.
Coursera: Numerous web development, computer science, and data analysis course specializations. Free
Udacity: Nanodegree programs in web development and data analysis. A few have job guarantees. Start at $199/month. Free courses.
Launch School: Full-stack web development with Ruby on Rails. Helps with job placement once you get through the first several courses. $199/month. Highly recommend if you want to learn Ruby on Rails.