Created
May 28, 2015 03:47
-
-
Save daphsta/af6bc83044979dd8796a to your computer and use it in GitHub Desktop.
Things you should know to qualify as a mid-level Ruby on Rails dev
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Things you should know to qualify as a mid-level Ruby on Rails dev | |
Ruby | |
Metaprogramming | |
- Dynamic methods, writing DSL, instance_eval(), singleton methods, singleton class | |
- understanding mixins | |
Create Ruby Gem | |
Design Patterns (when to use): Template Method, Strategy, Observer,Composite,Iterator, Commands, Adapter, Proxy, Decorator, Singleton, Factory, Builder | |
SOLID principles (Single Responsibility Principle, Open/Closed Principle, Leskov Substitution Principle, Interface Segregation Principle, Dependency Inversion Principle) | |
applying refactoring techniques by using the above principles | |
Resources: Refactoring by Martin Fowler, Clean Code by Uncle Bob, YOW conference- Kevlin Henney, Sandi Metz- POODR | |
Rails | |
Understanding of Rails stack | |
- engines, filters, plugins, gems, rack, middleware(metal) | |
Ability to write generators | |
Rails patterns | |
- Value Objects,Service Objects,Form Objects, Query Objects, View Objects, Policy Objects, Decorators | |
Tests | |
feature tests | |
when to mock/stub | |
api tests | |
building API Rails app (understand APIs) | |
Single Table Inheritance (STI) | |
basic data modelling | |
Other necessary skills to survive | |
Simple bash scripts | |
ability to use other Ruby frameworks | |
Create rake tasks run with cron | |
basic *nix knowledge | |
Setup continuous integration, continuous deployment, infrastructure management | |
- eg: Capistrano,Chef,Jenkins, TravisCI | |
- undersand containers - eg: Docker, Rocket, CloudFoundry | |
understand REST | |
read jsonapi.org | |
understanding of memory management | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment