Programming: A Beginner's Guide
Tags: programming, beginners, productivity, career
Published: 2019-03-07 20:58:06

---
title: Programming: A Beginner's Guide
published: true
description: A beginners resource to the world of coding
tags: #programming #beginners #productivity #career
---

   You've decided you want to learn how to code. Maybe you want to learn a new skill, create the app you've been thinking about for years, or perhaps want to switch careers. These are all great reasons to dive in the world of code. But where do you start? There are so many different programming languages, concepts, schools, learning platforms, tutorials, etc.  If you are struggling with knowing where to start, I've put together this guide to provide a few different routes/resources you can take to learn how to code, and how to achieve your goals.


   Before we begin, there are widely varying opinions on the best programming learning path. This guide includes information and learning resources, with links if you would like to explore more. There is no "correct" path to take when learning programming, but hopefully these resources will help you get started on your coding journey.  At the end of the day, it's your responsibility to pick the path that you feel is best suited for yourself.
 
##Intro-Resources
Both of these courses(taken online) provided by Harvard and MIT are freely available to anyone who wants learn the basics of computer science, and is a great start to learn the fundamentals of programming.  
* [CS 50](https://youtu.be/5azaK2cBKGw)
    + "CS50 is Harvard University's introduction to the intellectual enterprises of computer science and the art of programming. Anyone may take CS50, even if not a student at Harvard."
* [MIT: Intro to CS and Programming in Python](https://youtu.be/ytpJdnlu9ug)
    + "Introduction to Computer Science and Programming in Python is intended for students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems and to help students, regardless of their major, feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals."
 
##Languages
   Before you begin writing your first line of code, you need to identify the language you're going to learn. If you aren't at the stage of needing your programs to perform specific tasks (languages are better than others at certain things), I would suggest one of the languages listed below.  Python is the most popular languages for beginners, as it's a very readable and flexible language.  Javascript is the most popular language across the tech industry, but if you are starting with JS I would suggest to learn HTML/CSS prior to jumping in to JS.  If you're not starting with JS however, I recommend starting off with Python or Ruby, as HTML and CSS are NOT programming languages and this can be confusing to new coders.

* [Python](https://www.python.org/doc/essays/blurb/)
   + "Python is relatively simple, so it's easy to learn since it requires a unique syntax that focuses on readability. Developers can read and translate Python code much easier than other languages. In turn, this reduces the cost of program maintenance and development because it allows teams to work collaboratively without significant language and experience barriers."
* [Ruby](https://en.wikipedia.org/wiki/Ruby_(programming_language))
   + "Many Ruby developers find it fun to work with Ruby, and fun is a great motivator when learning to code. Ruby is a very high level language, which means Ruby abstracts away (i.e. handles for you) most of the complex details of the machine. Thus, you can quickly build something from scratch with less lines of code. Ruby was made popular by the Ruby on Rails framework, a full-stack web framework that makes prototyping a breeze, making it a web framework of choice for many startups and coding beginners alike."
* [HTML/CSS](https://www.w3.org/standards/webdesign/htmlcss) 
  + "Hypertext Markup Language (HTML) is the standard markup language for creating web pages and web applications. With Cascading Style Sheets (CSS) and JavaScript, it forms a triad of cornerstone technologies for the World Wide Web."
* [Javascript](https://www.w3schools.com/whatis/whatis_js.asp)
  + "It [Javascript] is a programming language that is characterized as dynamic, weakly typed, prototype-based and multi-paradigm. Alongside HTML and CSS, JavaScript is one of the core technologies of the World Wide Web.[9] JavaScript enables interactive web pages and is an essential part of web applications. The vast majority of websites use it,[10] and major web browsers have a dedicated JavaScript engine to execute it."

##Personal Projects
   One thing most programmers will agree on is the value of projects, especially personal projects that YOU want to build.  I can say with confidence that the majority of my learning and understanding can be attributed to the projects I've built. Not only are projects fun and stimulating, in the end they are much more effective than books and tutorials. User books, tutorials, and videos to learn the basics...and then transition to project mode when you feel you have enough of a foundation to create something.  Even when you start a new project, you will not know everything you need to know in order to finish, but having that foundation and utilizing online resources (section on that below) will likely get you started off on the right foot. 

   If you're struggling to think of beginner projects, [check out this list](https://knightlab.northwestern.edu/2014/06/05/five-mini-programming-projects-for-the-python-beginner/) that includes five small projects in Python. 
    
##Learning Platforms
* [FreeCodeCamp](https://www.freecodecamp.org/)
    + "FreeCodeCamp is a non-profit organization that consists of an interactive learning web platform, an online community forum, chat rooms, Medium publications and local organizations that intend to make learning web development accessible to anyone."
* [TeamTreeHouse](https://teamtreehouse.com/)
    + "Treehouse believes in the democratization of technical education in order to overcome economic and psychological barriers. Our students learn at their own pace and become job ready within months at a fraction of the cost. We are committed to making education accessible to students of all races, genders, sexual orientations, and socio-economic backgrounds."

* [The Odin Project](https://www.theodinproject.com/)
    + "The Odin Project is one of those "What I wish I had when I was learning" resources. Not everyone has access to a computer science education or the funds to attend an intensive coding school and neither of those is right for everyone anyway. This project is designed to fill in the gap for people who are trying to hack it on their own but still want a high quality education." 
 
##Bootcamps/Prep
![Alt-text-of-image](https://upload.wikimedia.org/wikipedia/commons/5/59/Drill_instructor_at_the_Officer_Candidate_School.jpg)
  At the time of writing this post, I am currently a software engineering student at the Flatiron School in Seattle, WA. If you're unfamiliar with bootcamps, they are defined as 
*...technical training programs that teach programming skills employers are looking for. They enable students with little coding proficiency to focus on the most important aspects of coding and immediately apply their new coding skills to solve real-world problems.* 
There are varying opinions on coding bootcamps, as most of the material taught at coding bootcamps can be learned on your own for free. Bootcamps tend to cost anywhere from $5,000-$15,000, depending on the school and location.  For me, this was a great option to immerse myself in the programming world, and to accelerate my learning. You may find bootcamps are a great fit for you or you might prefer to learn on your own, both can be great options.  My advice for bootcamps is to focus on narrowing down schools that have a great history of job placement success, and include a dedicated career services to help you find that dream job upon completion. 

   The three coding bootcamps below all have free prep courses (which I've linked to) that you can take online, and can are all amazing learning platforms.  I highly recommend utilizing these free courses to start your learning. Flatiron School's free prep course even includes instant chat access to real instructors that are able to help you while working.

* [Flatiron School](https://flatironschool.com/free-courses/coding-bootcamp-prep/)
* [FullStack Academy](https://www.fullstackacademy.com/bootcamp-prep) 
* [Hack Reactor](https://www.hackreactor.com/prep-programs) 
    


##Interview prep
![](https://cdn-images-1.medium.com/max/2000/1*vLadxMniF0KW0HWeGkipJw.jpeg)
   If you're learning code in order to switch careers or enter the job market for the first time, you will likely need to practice interview style questions, and learn to talk about your thought process and code. Below are some of the top resources to prepare for interviewing. 

* [Cracking the Coding Interview](http://www.crackingthecodinginterview.com/)  
    + Cracking the coding interview is arguably the most popular resource for interview prep. "Cracking the Coding Interview gives you the interview preparation you need to get the top software developer jobs. This is a deeply technical book and focuses on the software engineering skills to ace your interview. The book is over 500 pages and includes 150 programming interview questions and answers, as well as other advice."

* [Awesome Interview Questions](https://github.com/MaximAbramchuck/awesome-interview-questions)
    + A curated list technical interview questions, broken down by category/language 

* [Leetcode](https://leetcode.com/)
    + "The purpose of LeetCode is to provide you hands-on training on real coding interview questions. The Online Judge gives you immediate feedback on the correctness and efficiency of your algorithm which facilitates a great learning experience."

* [HackerRank](https://www.hackerrank.com/)
    + "HackerRank is a technology hiring platform that is the standard for assessing developer skills for over 1,000 companies around the world. By enabling tech recruiters and hiring managers to objectively evaluate talent at every stage of the recruiting process, HackerRank helps companies hire skilled developers and innovate faster."


##Tools/Resources
* [Stack Overflow](https://stackoverflow.com)
    + 'Founded in 2008, Stack Overflow is the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.'  Stack overflow has been a staple in my own coding journey. Nearly every question you have has likely been a topic of discussion on Stack Overflow.  It will be your best friend while learning code.
* [Repl.it](https://repl.it/)
    + Repl.it is a neat site where you can choose a programming language, write some code, and it will instantly show you the output of that code on the right hand side.  This was my favorite tool when starting out, as I could test code without have to save/open files on my computer. 
* CSS Tools 
    + [Flexbox Froggy](https://flexboxfroggy.com/)a game where you help Froggy and friends by writing CSS code!
    + [Grid Garden](https://cssgridgarden.com/)
    + [Digital Color Meter](https://support.apple.com/guide/digital-color-meter/welcome/mac) *Mac only*
* [Rubular](https://rubular.com/) 
    + Test [regular expression](https://en.wikipedia.org/wiki/Regular_expression) in your browser
 

* Text Editors(where you write code) 
    + [Atom](https://atom.io/)
    + [VScode](https://code.visualstudio.com/)
    + [Sublime](https://www.sublimetext.com/)


Thanks for reading! I will continue to update this list as I find more resources to share with everyone.