The List
#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