#The List

In my last post I talked about the list of 77 things I needed to know before I could call myself a Ruby developer, and where I’m at in my progress. This post is the actual list.

A caveat here. I did not write this list. It was written by my instructor, James Gray of Gray Productions and @JEG2 on Twitter.

James is a former member of the Ruby Rogues Podcast, and you can get his take on a lot of these topics in detail there. Ruby Rogues is a great resource for any Ruby developer, at just about any level of experience. I’m slowly working my way through the back catalog.

I have his permission to share the list here. I take no responsibility for his liberal use of the Oxford comma, for which there is no excuse.

##Programming Lessons

###Ruby

  • Tools: ‘pry’ and ‘ri’
  • Data types
  • Variables and constants
  • Math
  • Logical operations
  • Flow control
  • Error handling
  • Defining and using methods
  • Positional arguments
  • Keyword arguments
  • Operator overloading, assignments, predicates, and dangerous methods
  • Basic blocks
  • Advanced blocks
  • Basic iterators
  • Advanced iterators
  • Basic I/O
  • Advanced I/O (with character encoding)
  • Regular expression
  • Basic objects
  • Classes and modules
  • Reflection
  • Namespaces
  • Inheritance
  • Encapsulation, polymorphism, and duck typing
  • Mix-ins and refinements
  • Core, standard library (for serialization, HTTP, etc.), and RubyGems
  • Project layout
  • Code style
  • Dynamic Ruby: open classes, hooks, metaprogramming, and DSL’s
  • Unit testing
  • Test doubles
  • Test-driven Development (TDD)

I’m purposely skipping:

  • Concurrency
  • Glue code
  • Command-line Ruby
  • Debuggers
  • ‘rdoc’
  • ‘Struct’

###Strategy

  • Our primary job is to manage complexity and abstraction
  • Code’s primary purpose is to communicate with the reader
  • The power of names
  • Ya Ain’t Gonna Need It (YAGNI)/Less is more/No code beats no code
  • Don’t Repeat Yourself (DRY)
  • The Single Responsibility Principle (SRP)
  • The Agile Manifesto
  • Patterns
  • Data Structures
  • Algorithms

###Unix

  • Basic shell usage
  • Basic SSH usage
  • Cron jobs

###Git

  • Basic version control

###Web

  • Basic HTML
  • Basic CSS
  • Basic JavaScript and jQuery
  • Basic HTTP with ‘curl’
  • ‘Sinatra’
  • Forms and parameters
  • Templates
  • Cookies

###SQL

  • Data Description Language (DDL)
  • Adding, changing, and deleting records
  • Querying records
  • Database design: primary keys and normalization
  • Database optimization: indexes

###Rails

  • ‘rails new’, project structure, and The Golden Path
  • Tools: ‘Bundler’, ‘rails server’, and ‘rails console’
  • Model View Controller (MVC) basics
  • Basic ActiveRecord, migrations, and Convention Over Configuration
  • Advanced ActiveRecord
  • Routing
  • RESTful routing
  • Controllers
  • The session and flash
  • Filters
  • Views
  • Rails style forms
  • Helpers
  • Ajax
  • Building APIs
  • Sending email
  • Testing Rails
  • Plugins and engines

I’m purposefully skipping:

  • Caching: ‘memcached’ and ‘Redis’
  • Deployment