Like A Girl

Pushing the conversation on gender equality.

Code Like A Girl

Want to Learn How to Code? Read this.

I would love to tell you that teaching yourself how to code will be easy, but it’s not. It’s going to be hard. Most days you’re going to feel like throwing your computer out the window. You’re going to feel stupid and ask yourself “why am I doing this?” You are going to feel like giving up.

Before you go into this journey you have to ask yourself why are you doing this? Why do you want to become a developer? Why do you want this change so bad? Because I can tell you straight up, if you don’t really want it, like really, really want it, it’s not going to happen for you. I can tell you of a million ways to do a certain thing but without the motivation and passion from you, it just won’t happen.

As you go through this, you always have to keep your end goal in mind. You have to remember why you started, why you decided to change your current situation, why you want a different job. Learning how to code will test your character, resilience, passion, and patience. You will acquire skills that will not only help you with learning but also in life. Programming is rewarding and every second that you put towards it expands your wisdom and builds your character.

When I quit my job to learn how to code, I woke up everyday at 6 am, like I had a job, and read, studied, and coded all day. I did this for about 4 months until I felt somewhat ready to apply for jobs (you will never feel fully ready). It was hard, but it worked. I got a job in my first round of searching and it’s been one of the best things to ever happen to me.

The following resources are heavily catered towards full-stack/ruby on rails since it was my area of interest and what I got a job in. I have used all the resources listed here, I would add more but I don’t want to recommend tutorials that I haven’t gone through myself.

Some personal advice

I cannot emphasize enough how important it is to build your own projects as you go through the tutorials. You will quickly forget what you are learning if you don’t use the tools that you’re learning as you learn them. When you create your own project, you’ll run into challenges and solving them will give you the most valuable experience. You will find that the rest of your career will be very similar to what you experience then. Not to mention, you can then use your genuine, unique projects to showcase to possible employers.

“For the things we have to learn before we can do them, we learn by doing them.” — Aristotle

Where to start

When people ask me where they should start with learning how to program I always recommend Codecademy. While their free tutorials are not deep enough to prepare you for the real world, they are a good introduction to what you’re getting yourself into. You can also find out which language you’d be interested in for starting out your career. All beginners should start with the following:

  1. HTML & CSS
  2. Sass
  3. Javascript Intro
  4. Command Line

Front End Engineering

Front-end developers make page designs come alive. As a front-end developer you’ll work on the structure of the page, making it pretty and making it interactive (think buttons and animations). Your code will live in the browser and you’ll use mostly HTML, CSS, and Javascript. The front-end usually asks the back-end for data to show to the user.

I recommend taking the following:

  1. Responsive Design
  2. More Javascript
  3. Angular
  4. React

Back End Engineering

Back-end developers deal with handling requests from the front-end. They program the application, query the database, and manipulate the data before giving it back to the front-end. Their code lives in the server.

I recommend taking the following:

  1. Ruby
  2. Ruby on Rails
  3. SQL
  4. Elixir — more advanced

Note: If you want to be a full-stack developer, follow both front-end and back-end recommendations. I recommend learning both as it gives you all the tools to create your own projects.

No engineering background? No problem.

I understand that not everybody that wants to get into programming comes from the same background. The learning curve is not going to be the same for every single person, but as long as you get some practice with the fundamentals of programming, you should be okay.

When you are coding, you are writing a program that knows how to make decisions based on the information it’s given. While some languages come with handy built-in functions for processing data, it is pretty imperative to know the basics of conditional statements, if and else, for loops and while loops. If you have no clue what these are I recommend taking a look at programming challenges such as the ones in CodeByte. These are a ton of fun and if you enjoy figuring them out there is a high likelihood you will fall in love with programming.

The good stuff.

I fell in love with Ruby as soon as I took the tutorial on Codecademy. At the time, they didn’t have the premium account option so I did some research and decided to take the Ruby on Rails Specialization on Coursera. This particular class was free at the time, but I would have paid for it if I had to. The course is very in depth, the professors are great, and the platform is super user friendly. You can also ask the teacher assistants questions if you get stuck on homework problems. The assignments are hard and will take you longer than they say they do, but you will learn a ton from them. I found this class to be reflective of how programming really is. It always takes longer when you’re figuring stuff out. If you can make it through this class, you can probably get a coding job, I know I did.

Other resources for Ruby:

  1. Codeschool
  2. Ruby Monk

If you would like to stick to the front-end stuff only (or if you’re doing full-stack), I highly recommend the following courses (which are part of the ruby specialization). The professor for these classes was my favorite ever and the classes were fun and engaging:

  1. HTML, CSS, & Javascript
  2. Single Page Web Applications with Angular JS

Other front-end free tutorials I recommend:

  1. 30 day vanilla JS Coding Challenge
  2. React Tutorial

Google and Stack Overflow

As a developer you are learning all the time. Google will be your best friend. I would be surprised if I could go through a whole entire day without googling something. Googling is learning! You can also type straight up errors from your code into Google and you are very likely to find an answer, especially if you’re coding with a language that has been around for a while (like Ruby or Javascript).

Most of the hits you get from you googling answers will be from stack overflow. Stack overflow has a huge community of experienced and not-so-experienced devs willing to help you out if you get stuck. So don’t be afraid to ask. You could lose dozens of hours trying to solve a problem that someone else has already had and asked about. Get comfortable asking questions. You will get help.

Bookmark these websites

  1. Rails Guides
  2. HTML, CSS, Javascript docs
  3. Ruby gems — someone has already done it for you
  4. Railscasts — learn by video!

Tools

  1. Code Editor — I use Atom, another good one is Sublime
  2. Chrome Developer Tools
  3. Terminal — iTerm for Mac

Books

  1. Ruby on Rails Tutorial by Michael Hartl
  2. Programming Elixir by David Thomas — more advanced

Podcasts

  1. Software Engineering Daily

Meetups

Meetups are a great way to meet people that are in the same boat as you. A lot of bootcamps will have free classes to promote their business and you can checkout their facilities and talk to their teachers. There are other community meetups more catered towards specific languages and/or frameworks that you should attend to stay up to date on technology and network with people from different companies. Sometimes recruiters will sponsor meetups since they are hungry for developers, which is great if you’re looking for a job. One I attend occasionally is Girl Develop It, which has meetings all over the U.S. and it’s great for women starting out in tech.

Bottom Line

Coding is hard and it’s not for everybody. You will really build great habits and character if you can get through this on your own. Programming is rewarding and fun and so worth the struggle. Let me know if you have any questions about anything, I would love to help you get started!