Friday, April 11, 2014

Learning to Program: Where the Hell Do I Start?

Updates in italics

I've been having one of those moments where everything in my life has seemed to shift or in some cases, change drastically. I've been a part of the tech community in a social or supportive capacity for many years. I've never taken on any technical projects. My background is in the humanities with several years of political volunteer work followed by non-partisan civic volunteer work. I'm ending a 14 year run as an at home mom with a new job, which I'm very thankful for, but it doesn't provide the kind of intellectual challenge that I feel like I've been missing. So it's time for a new project. I'm about to learn how to program.

I've been familiar with Rails Bridge which seems like a great place for me to start. I've just missed a local event, but thanks to Twitter I have many great options to try out. I'm going to compile them right here for my own reference. I'm excited to see what will and what won't work for me.

As I collected suggestions on where to start, in became clear that they were falling in a few categories. As a very basic opener, I started at Try Ruby and I'm reading Why's (Poignant) Guide to Ruby as they were the very first suggestions from my partner who knows a thing or two about such things.

Tutorial
Try Ruby
CodeKata
Developing iOS Apps
Lua Missions
Codecademy

Workshop
Clojure Bridge (locally: Clojure.mn)
Rails Bridge
Dev Bootcamp

Academic/Basic Skills
Structure and Interpretation of Computer Programs
Khan Academy
Udacity
Coursera
EdX/HarvardX
MIT Open Courseware
TheNewBoston

Community
Stack Overflow
OpenStudy
Reddit (/r/learnprogramming) 

Tools
Scratch 
RubyMotion
Apple Xcode

Reading Material
Why's (Poignant) Guide to Ruby
No Bullshit Guide to Math and Physics
Learn Python the Hard Way
Learn to Program, Second Edition (The Facets of Ruby Series)
Land of Lisp
Learn You a Haskell for Great Good
Beginning Ruby
The Well-Grounded Rubyist
Programming Ruby: The Pragmatic Programmers' Guide
Starting to Learn Computer Programming with Rebol
C Programming Language

Other Possible Starter Languages
Wolfram Language
Julia Language

I was directed to another blog post (108 Ways to Learn to Code) of a similar nature written by someone who is already in the field. It provides better descriptions which come from experience that I don't yet have. Another helpful blog post: "So, you think you want to be a web developer?" In the context of this post I'm most definitely a beginner, but I'm on this path for the challenge, not necessarily a new career path. I want to have fun, I want to enjoy it, I want it to be hard. If a new career path is where this leads, that's wonderful, but I have no delusions of grandeur (at least not when it comes to programming). 

I think the best approach for me will be to brush up on some basic skills and concepts while playing with something like Scratch in hopes of applying some of those skills while learning them. I prefer to jump right in, even if it's a simple or slow start. I realize I'm starting at an elementary level (my oldest son played with Scratch a couple years ago in a kids programming class), but that's where I am.

Locally, I'm hoping to attend Minnebar over the weekend and next month's Clojure Bridge. I believe it will be valuable to seek out a peer group. I know of a couple networking groups for women in tech that I'll consider in the future. My intention is for this blog to be as technical as my skills allow. I will continue to update this list as I receive new suggestions. I want to offer a huge thank you to everyone who reached out with ideas and suggestions on twitter, in person, and via email.

And so it begins! Cheers!

6 comments:

  1. I have to recommend the books by @david_a_black and @peterc for getting going, followed by the @pragdave classic ... 02.

    ReplyDelete
  2. I will definitely be following your blog as my husband has been wanting to teach me how to code for years! Good luck! Dream big! Learn well, but most importantly, keep it fun!

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Julia, with its high performance, optional typing, and notebooks (IJulia), looks like a really promising "starter language". Not only is it easy to use, it's also an excellent language for professionals so you'll get lots of mileage out of it. If you're okay being limited to running programs online, the Wolfram Language looks pretty damn cool.

    As for how to learn to program -- hmm, in 1991 I went to the library and read books about BASIC. I don't think that path is advisable today.

    ReplyDelete
  5. Here's a quicky: http://re-bol.com/starting_computer_programming_with_rebol.html
    It's about an hour read if you look at all the code in detail. It takes you from the absolute basics about variables, loops, functions, objects, and other fundamental code structures, all the way through building more than 20 complete little GUI apps with the Rebol R2 language.

    ReplyDelete
  6. Thanks for the suggestions! I've updated the post so I can call on them as I'm able.

    ReplyDelete