So You Want to Learn How to Program

There’s only question that I’ve been asked more than “What do I do to learn how to program?”*. I’m pretty certain that the programming focused question will surpass the current champion sometime in 2017. In this post, I’ll answer how to learn to program at a high level, follow up with some concrete references for getting started as well as my roadmap for Ruby and Rails.

Drop-In Programming

Motivation

There is only one secret to learning software development successfully: motivation. Stay motivated. If you know why you’re motivated, you’ll be able to best nurture your interest and desire. Are you learning software development so that you may edit a webpage? Customize your myspace page? Build a website? Know how to speak coherently to your contractors as you spec out your nifty startup? Script hot keys in your video game? Write a pokebot for facebook? Webscrape your favorite youtube videos?

If you have an existing end goal in mind, re-visiting it will help when you find yourself struggling with a new concept or piece of technology.

Mentors

Another way to help maintain your motivation, and the second most important thing you can do is to find mentors. You don’t have to have multiple mentors but find at least one. A good mentor will help you maintain your motivation by focusing on your successes, acknowledging your struggles, and helping you when you get stuck on the little things.

Getting stuck on the little things happens all the time to all programmers of all experience levels. For example, you found a nifty stack overflow solution and you pasted it in your editor and it doesn’t work. You understand the solution on stack overflow, it makes sense that it should work but it does not.

As a programmer, I always feel ignorant. I always feel that there is more to learn or that something I’m trying to learn seems very difficult. It makes my brain hurt. That’s normal. Eventually, you have longer and longer stretches of productivity but those moments of struggle never fail to re-appear. If you can learn to love the process, you’ll love programming.

Beginners resources

For beginners with no experience with software development, check out scratch.

There are numerous other resources for getting started.

Band of Coders Girls Academy Girls Who Code Black Girls Code WIT Girls 100 Girls of Code (in Conyers, GA)

These two links will help you find the nearest support group. Code.org Coder Dojo

Here are some good intro sites. Kids for Coding Hour of Code

Fun ways to learn: Code Combat Code Wars Human Resource Machine

Thanks to Jessica Dennis, Niya Panamdanam, Jeff Ammons, Liz Ojukwu, marshmallowrobot, Angel Banks, and Jennifer Mann for the above suggestions.

Ruby and Rails

If you’re looking for my recommendations for Ruby/Rails, read on.

1. Use virtualbox to set up a ubuntu instance, https://www.virtualbox.org/.

2. Set up rbenv, git, ruby, rails, mysql, and postgresql: https://gorails.com/setup

3. Start on a ruby tutorail: http://ruby.learncodethehardway.org/

4. Do a command line refresher: http://cli.learncodethehardway.org/book/

5. A somewhat simple rails app tutorial: http://guides.railsgirls.com/app/

6. A good comprehensive rails tutorial: http://www.railstutorial.org/

There’s a lot going on when learning how to develop web apps. If you can compartmentalize and focus on one or two things at a time, it’ll be much easier going. Here’s a nice little blog post about all the things that are involved: https://www.codefellows.org/blogs/this-is-why-learning-rails-is-hard/ .

p.s. Don’t burn yourself out attempting too much. Find small wins. Celebrate your successes. Do not take mistakes or failure personally. Know that programming is a continual effort to learn new information on a daily, weekly and monthly basis.

*. “Have you cleaned your room?”