#Programming Lessons

Shortly after I started learning Ruby, my primary instructor created a master list of 77 things I needed to know before I could call myself a Ruby Developer.

He broke the list down into seven categories:

Ruby

The largest section of the list, of course, dealt with Ruby and its main tools. To date, I’ve marked off most of that list. Included on the list are tools, such as ‘pry’, ‘ri’, RubyGems and the standard library.

I started out with basic if-else statements and loops, before moving up to methods and method arguments. Around the same time, I was introduced to basic iterators, like ‘each’ and ‘sample’.

Eventually, I covered classes, instance variables, and blocks.

Along the way, I was rewriting the same few projects with each new set of tools, with the goal in mind of making the code simultaneously shorter, and more readable.

Around the time I covered class objects, I began getting access to encapsulation.

My largest project to date, a still-unfinished text-adventure game I call Tales of Bardorba, introduced me to project layout and, inheritance, and managing a significant number of objects at the same time.

Over the last month, I’ve been doing less core Ruby, because I’ve been learning HTML, CSS, JavaScript and JQuery so that I can interface with the front end. I did find time to learn Ruby’s regular expression interface (very fun), read up on Github’s Ruby code style guide (that’ll be a blog post on its own) and duck typing. Polymorphism is my new favorite thing.

I’ve covered DSL’s a little bit, but not enough to pretend I really understand it, and I’m going to get around to metaprogramming soon.

Strategy

I’ve covered a lot of basic coding strategy. At some point I’ll do a full post on the Agile Manifesto.

One of the things it took me a long time to get any good at was “Don’t Repeat Yourself (DRY)”. I had a bad habit of repeating patterns, within code that only had small changes from code I’d already written. My instructor finally got me to come around with the following adage:

If you write something more than once, you should cringe. If you write it more than twice, then it should be broken out into its own structure.

The recent lessons I’ve taken on polymorphism and duck typing will contribute to improving my code in this regard even further.

Unix

I covered basic shell, SSH and cron jobs. The main project I’m planning on doing next will require cron.

Git

Considering the host of this blog, I think I’ll be okay on this one.

Web

This is my main focus right now. I recently finished Jon Duckett’s wonderful HTML & CSS textbook. I will write about it in more detail in the future. His JavaScript and JQuery book is my current project. I just reached the JQuery chapter.

I believe my next step in web development will be ‘Sinatra’.

SQL and Rails

I haven’t checked any of the boxes on these yet. I’m approaching Rails entirely from the bottom up. I want to be able to do as much as possible in Ruby, before I ever try to do it in Rails.