SlideShare a Scribd company logo
1 of 31
Becoming a
Rails Developer
The Rest of the Story
● Chief Architect at Synaptian, Inc.
Nathanial “Nate” L. McConnell
● Work
o nate@synaptian.com
o @SynaptianNate
o +1 (866) 773-0016
● Personal
o fluxaugur@gmail.com
o @FluxAugur
o +1 (423) 631-4096
Purpose
There is more, much more, to becoming a
Rails developer than “simply” learning Rails.
Learning Rails is hard, and “learning Rails”
encompasses a wide range of technologies.
We need a process.
● Lots of technical details:
o Understanding Ruby
o Understanding the MVC pattern
o Understanding the object-oriented model
3 Key Challenges
● Object-oriented programming
o Classes & modules
o Attributes & methods
o Inheritance & mixins
● Functional programming
o Blocks
o Procs & lambdas
● Flow control
o Conditionals
o Enumerables
● REPLs & debugging
● Metaprogramming
Competencies - Ruby
Learning Ruby
● Ruby in the browser
o Code Academy
o Try Ruby
● Installing local dev environment
o RubyInstaller
o rbenv
o RVM
● Books
o Programming Ruby
● Screencasts
o Ruby Tapas
● Courses
o Ruby Koans (Test Driven Development)
Learning Ruby - *Further Reading*
● MVC
o Asset pipeline & preprocessors
o UJS
o Performance
 Monitoring
 Caching & pagination
 Background tasks
● REST
o Routing
o APIs
 JSON & XML
 Hypermedia
o Nested resources & namespaces
Competencies - Rails Framework
Competencies - Rails Framework
● ORM
o Relational schemas
 Migrations
 Normalization
 Foreign keys
 Indexes
o Document stores
o Associations
 Dependencies
 Eager loading
o Validations & callbacks
● User Management
o Authorization
● Conventions & best practices
o I18n & time zones
o ActiveSupport
o Security & defaults
● CLI
o Rails console
o Rails generators
o Rake tasks
● ActionMailer
Competencies - Rails Framework
● Guides
o Ruby on Rails Site
● Books
o Agile Web Development with Rails 4
● Screencasts
o RailsCasts
● Tools
o Git & Github
o Heroku
● Source Code & Documentation
o Ruby on Rails Documentation
Learning Rails
● Every man for himself isn’t an option for organized development teams
● Mentoring - mentors assigned to new devs. Mentor guides new dev on
a starter project teaching all essential parts of the architecture. Next
phase, dev starts working on real-life project.
● Code Review - knowledge sharing with community commentary. Use
pull requests to share knowledge of experienced devs and ensure that
production code remains high quality. Never approve your own pull
request. Unfortunately, this can result in the new devs being “blocked”
until someone finishes reviewing the code.
● Pair Programming - Even the best dev can benefit from another pair of
eyes checking their code. When two people work together on a
feature, this helps them both improve their skills. Downside is the
expenditure of twice the manpower for the same amount of work.
Standard Learning Process
Process in Practice
Practically, we use these methods based on the needs
of a specific situation, when we feel they outweigh
conventional systems.
“Experience is what you get when you didn’t get what
you wanted.”
- Randy Pausch, The Last Lecture
● RVM & rbenv
● Gems
o File structure
o Open-source etiquette
● Bundler & dependency management
Competencies - Rubygems
● Version control systems
o Distributed VCS
o Branch
o Merge
o Diff
● Github
o Fork
o Pull requests
● config
o Remotes
o Default behaviors
Competencies - Git
● Syntax highlighting
● Discoverable shortcuts
● Scope awareness
● Extensibility
● Power editing
o Multiline edits
o Pasteboard history
o Rapid file switching
Competencies - IDE/Text Editor
● Application architecture
o Modularization & SOA
o Encapsulation of domain logic
● Agile process
o Project ownership & user stories
o Iterative cycles
 Testing & pairing
 CI & code review
 QA & debugging
o High-bandwidth communication
● Project management
o Planning & estimating
Competencies - Software Eng.
● Select
o Group
o Order
o Limit
● Insert & update
● Transactions
● Joins
● Performance
o Slow query logs
o Query plans
o N+1 avoidance
Competencies - SQL & Data Mod.
● Types
o Unit
o Functional
o Integration
o Performance
o Acceptance
o Regression
● Tools
o RSpec & MiniTest
o Factories & fixtures
o Mocks & stubs
● TATFT
Competencies - Tests
● Automation
o Continuous Deployment
o Continuous Integration
o Server monitoring & logging
● Configuration management
● Release management
● Security & data integrity
● Platform
o Dedicated
o Virtualized
o Abstracted
Competencies - Deployment
● HTTP
o Request
 Methods
 State
● Params
● Cookies
 Scheme
o Response
 Status codes
 Media types
● HTML
o The DOM
o Semantic markup
Competencies - WWW
● CSS
o Sass & Less
o CSS frameworks
o Browser quirks
o Selectors & specificity
● JavaScript
o Libraries
 jQuery
 Client-side MVCs
o Prototypes & objects
o Anonymous functions
o AJAX
o CoffeeScript
Competencies - WWW
● File management
● Admin permissions
● Package management
● Local web server
● Navigation
● Secure connections & keys
● File content control
Competencies - OS & CLI
What Does Help
● Reading Books* over Blogs
● Interactive Courses
● Blogs :)
● Not copying/pasting code
● Not getting tired of Google-ing
● Reading documentation &
source codes
What Doesn’t Help
● Blogs can confuse you
● Ruby and Rails versions
● Googling “for answers” instead
of learning
● Asking Question About
Everything on IRC
Weighing Options
Pros
● Be your own boss
● Enjoy your freedom
● Choose what to work on
● Set your rates
Cons
● Selling yourself
● Responsibility & discipline
● Time management
● Emotions
Successful Freelancing
Freelancing is not for the faint of heart, but it is worth your best shot!F
Tools of the Trade
● Text Editor (vim, Emacs, TextMate, IDE)
● *nix server management & working in the UNIX shell
● Ruby will become your best friend
● Ruby on Rails framework (and alternatives: MERB,
Sinatra, Ramaze, Rango)
● TDD & BDD
● HTML, CSS, HAML, SASS, LESS
● VCS
● Job boards
o http://jobs.37signals.com/jobs
o http://www.authenticjobs.com/
o http://jobs.rubynow.com/
o http://ruby.jobamatic.com/a/jbb/find-jobs
● Contributing to open source
● Learn how people hire
o http://blog.ritirisi.com/2008/06/17/15-questions-to-ask-during-a-ruby-
interview/
o http://www.rubyinside.com/11-tips-on-hiring-a-rails-developer-662.html
o http://www.aaronsw.com/weblog/hiring
o http://news.ycombinator.com/item?id=549291
o http://workawesome.com/your-job/how-to-get-hired-at-a-startup/
Finding Clients
● Focus on building your profile (personal brand)
o http://www.linkedin.com/
o http://workingwithrails.com/
o https://github.com/
● Create a website or blog
o http://www.useit.com/papers/webwriting/
o http://www.alistapart.com/articles/writeliving/
● Get involved in the community
o http://www.railsbridge.org/
● Write a lot of emails to employers
Get Your First Project
Working Process
● http://en.wikipedia.org/wiki/Getting_Things_Done
● http://www.pomodorotechnique.com/
● Get some rest
● Take a break
● Meditate
● Go for a walk
● Don’t overeat
● Take up a non-computer-related hobby
“You should be well-balanced. Computers are great and everything, but
you should definitely have hobbies that are completely unrelated to
computers. In the last two years I’ve taken up both wood carving and string
figuring, and they have helped me immensely in recovering from burn-out.”
- Jamis Buck
Getting Perspective
Success
● “Everything you write is crap, so always try to improve yourself.”
- Dirkjan Bussink
● Hard work is the secret to success
● Passion is critical; it makes or breaks any endeavor
● Love what you do
● “Never let anyone (including yourself) convince you not to do
something that will make you happy or fulfilled.”
- Yehuda Katz
Decide how good you want to be; be patient and relentless.

More Related Content

Similar to Becoming a Rails Developer: The Complete Guide

From Rails legacy to DDD - Pivorak, Lviv
From Rails legacy to DDD - Pivorak, LvivFrom Rails legacy to DDD - Pivorak, Lviv
From Rails legacy to DDD - Pivorak, LvivAndrzej Krzywda
 
CSA on Rails: a practical case-study
CSA on Rails: a practical case-studyCSA on Rails: a practical case-study
CSA on Rails: a practical case-studycalamitas
 
kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadKrivoy Rog IT Community
 
Scala Days Highlights | BoldRadius
Scala Days Highlights | BoldRadiusScala Days Highlights | BoldRadius
Scala Days Highlights | BoldRadiusBoldRadius Solutions
 
Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Fwdays
 
Best practices for JavaScript RIAs
Best practices for JavaScript RIAsBest practices for JavaScript RIAs
Best practices for JavaScript RIAsCarlos Ble
 
Data Science Salon: A Journey of Deploying a Data Science Engine to Production
Data Science Salon: A Journey of Deploying a Data Science Engine to ProductionData Science Salon: A Journey of Deploying a Data Science Engine to Production
Data Science Salon: A Journey of Deploying a Data Science Engine to ProductionFormulatedby
 
The Importance Things of Full Stack Development
The Importance Things of Full Stack DevelopmentThe Importance Things of Full Stack Development
The Importance Things of Full Stack DevelopmentMike Taylor
 
Introduction to Web Development with Ruby on Rails
Introduction to Web Development with Ruby on RailsIntroduction to Web Development with Ruby on Rails
Introduction to Web Development with Ruby on Railspmatsinopoulos
 
BDD for RIAs with JavaScript - Skills Matter
BDD for RIAs with JavaScript - Skills MatterBDD for RIAs with JavaScript - Skills Matter
BDD for RIAs with JavaScript - Skills MatterCarlos Ble
 
Rubyconf presentation
Rubyconf presentationRubyconf presentation
Rubyconf presentationkrevuri
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraLINAGORA
 
Whitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to ReactiveWhitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to ReactiveDragos Manolescu
 
"The working architecture of NodeJs applications" Viktor Turskyi
"The working architecture of NodeJs applications" Viktor Turskyi"The working architecture of NodeJs applications" Viktor Turskyi
"The working architecture of NodeJs applications" Viktor TurskyiJulia Cherniak
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?Balajihope
 
The Bleeding Edge
The Bleeding EdgeThe Bleeding Edge
The Bleeding EdgejClarity
 

Similar to Becoming a Rails Developer: The Complete Guide (20)

From Rails legacy to DDD - Pivorak, Lviv
From Rails legacy to DDD - Pivorak, LvivFrom Rails legacy to DDD - Pivorak, Lviv
From Rails legacy to DDD - Pivorak, Lviv
 
CSA on Rails: a practical case-study
CSA on Rails: a practical case-studyCSA on Rails: a practical case-study
CSA on Rails: a practical case-study
 
kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High load
 
rubyonrails
rubyonrailsrubyonrails
rubyonrails
 
rubyonrails
rubyonrailsrubyonrails
rubyonrails
 
Scala Days Highlights | BoldRadius
Scala Days Highlights | BoldRadiusScala Days Highlights | BoldRadius
Scala Days Highlights | BoldRadius
 
Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"
 
Best practices for JavaScript RIAs
Best practices for JavaScript RIAsBest practices for JavaScript RIAs
Best practices for JavaScript RIAs
 
Data Science Salon: A Journey of Deploying a Data Science Engine to Production
Data Science Salon: A Journey of Deploying a Data Science Engine to ProductionData Science Salon: A Journey of Deploying a Data Science Engine to Production
Data Science Salon: A Journey of Deploying a Data Science Engine to Production
 
Dust.js
Dust.jsDust.js
Dust.js
 
The Importance Things of Full Stack Development
The Importance Things of Full Stack DevelopmentThe Importance Things of Full Stack Development
The Importance Things of Full Stack Development
 
Introduction to Web Development with Ruby on Rails
Introduction to Web Development with Ruby on RailsIntroduction to Web Development with Ruby on Rails
Introduction to Web Development with Ruby on Rails
 
BDD for RIAs with JavaScript - Skills Matter
BDD for RIAs with JavaScript - Skills MatterBDD for RIAs with JavaScript - Skills Matter
BDD for RIAs with JavaScript - Skills Matter
 
Rubyconf presentation
Rubyconf presentationRubyconf presentation
Rubyconf presentation
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 
Whitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to ReactiveWhitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to Reactive
 
"The working architecture of NodeJs applications" Viktor Turskyi
"The working architecture of NodeJs applications" Viktor Turskyi"The working architecture of NodeJs applications" Viktor Turskyi
"The working architecture of NodeJs applications" Viktor Turskyi
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
 
The Bleeding Edge
The Bleeding EdgeThe Bleeding Edge
The Bleeding Edge
 
The Bleeding Edge
The Bleeding EdgeThe Bleeding Edge
The Bleeding Edge
 

Recently uploaded

UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 

Recently uploaded (20)

UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 

Becoming a Rails Developer: The Complete Guide

  • 1. Becoming a Rails Developer The Rest of the Story
  • 2. ● Chief Architect at Synaptian, Inc. Nathanial “Nate” L. McConnell ● Work o nate@synaptian.com o @SynaptianNate o +1 (866) 773-0016 ● Personal o fluxaugur@gmail.com o @FluxAugur o +1 (423) 631-4096
  • 3. Purpose There is more, much more, to becoming a Rails developer than “simply” learning Rails. Learning Rails is hard, and “learning Rails” encompasses a wide range of technologies. We need a process.
  • 4. ● Lots of technical details: o Understanding Ruby o Understanding the MVC pattern o Understanding the object-oriented model 3 Key Challenges
  • 5. ● Object-oriented programming o Classes & modules o Attributes & methods o Inheritance & mixins ● Functional programming o Blocks o Procs & lambdas ● Flow control o Conditionals o Enumerables ● REPLs & debugging ● Metaprogramming Competencies - Ruby
  • 6. Learning Ruby ● Ruby in the browser o Code Academy o Try Ruby ● Installing local dev environment o RubyInstaller o rbenv o RVM
  • 7. ● Books o Programming Ruby ● Screencasts o Ruby Tapas ● Courses o Ruby Koans (Test Driven Development) Learning Ruby - *Further Reading*
  • 8. ● MVC o Asset pipeline & preprocessors o UJS o Performance  Monitoring  Caching & pagination  Background tasks ● REST o Routing o APIs  JSON & XML  Hypermedia o Nested resources & namespaces Competencies - Rails Framework
  • 9. Competencies - Rails Framework ● ORM o Relational schemas  Migrations  Normalization  Foreign keys  Indexes o Document stores o Associations  Dependencies  Eager loading o Validations & callbacks ● User Management o Authorization
  • 10. ● Conventions & best practices o I18n & time zones o ActiveSupport o Security & defaults ● CLI o Rails console o Rails generators o Rake tasks ● ActionMailer Competencies - Rails Framework
  • 11. ● Guides o Ruby on Rails Site ● Books o Agile Web Development with Rails 4 ● Screencasts o RailsCasts ● Tools o Git & Github o Heroku ● Source Code & Documentation o Ruby on Rails Documentation Learning Rails
  • 12. ● Every man for himself isn’t an option for organized development teams ● Mentoring - mentors assigned to new devs. Mentor guides new dev on a starter project teaching all essential parts of the architecture. Next phase, dev starts working on real-life project. ● Code Review - knowledge sharing with community commentary. Use pull requests to share knowledge of experienced devs and ensure that production code remains high quality. Never approve your own pull request. Unfortunately, this can result in the new devs being “blocked” until someone finishes reviewing the code. ● Pair Programming - Even the best dev can benefit from another pair of eyes checking their code. When two people work together on a feature, this helps them both improve their skills. Downside is the expenditure of twice the manpower for the same amount of work. Standard Learning Process
  • 13. Process in Practice Practically, we use these methods based on the needs of a specific situation, when we feel they outweigh conventional systems. “Experience is what you get when you didn’t get what you wanted.” - Randy Pausch, The Last Lecture
  • 14. ● RVM & rbenv ● Gems o File structure o Open-source etiquette ● Bundler & dependency management Competencies - Rubygems
  • 15. ● Version control systems o Distributed VCS o Branch o Merge o Diff ● Github o Fork o Pull requests ● config o Remotes o Default behaviors Competencies - Git
  • 16. ● Syntax highlighting ● Discoverable shortcuts ● Scope awareness ● Extensibility ● Power editing o Multiline edits o Pasteboard history o Rapid file switching Competencies - IDE/Text Editor
  • 17. ● Application architecture o Modularization & SOA o Encapsulation of domain logic ● Agile process o Project ownership & user stories o Iterative cycles  Testing & pairing  CI & code review  QA & debugging o High-bandwidth communication ● Project management o Planning & estimating Competencies - Software Eng.
  • 18. ● Select o Group o Order o Limit ● Insert & update ● Transactions ● Joins ● Performance o Slow query logs o Query plans o N+1 avoidance Competencies - SQL & Data Mod.
  • 19. ● Types o Unit o Functional o Integration o Performance o Acceptance o Regression ● Tools o RSpec & MiniTest o Factories & fixtures o Mocks & stubs ● TATFT Competencies - Tests
  • 20. ● Automation o Continuous Deployment o Continuous Integration o Server monitoring & logging ● Configuration management ● Release management ● Security & data integrity ● Platform o Dedicated o Virtualized o Abstracted Competencies - Deployment
  • 21. ● HTTP o Request  Methods  State ● Params ● Cookies  Scheme o Response  Status codes  Media types ● HTML o The DOM o Semantic markup Competencies - WWW
  • 22. ● CSS o Sass & Less o CSS frameworks o Browser quirks o Selectors & specificity ● JavaScript o Libraries  jQuery  Client-side MVCs o Prototypes & objects o Anonymous functions o AJAX o CoffeeScript Competencies - WWW
  • 23. ● File management ● Admin permissions ● Package management ● Local web server ● Navigation ● Secure connections & keys ● File content control Competencies - OS & CLI
  • 24. What Does Help ● Reading Books* over Blogs ● Interactive Courses ● Blogs :) ● Not copying/pasting code ● Not getting tired of Google-ing ● Reading documentation & source codes What Doesn’t Help ● Blogs can confuse you ● Ruby and Rails versions ● Googling “for answers” instead of learning ● Asking Question About Everything on IRC Weighing Options
  • 25. Pros ● Be your own boss ● Enjoy your freedom ● Choose what to work on ● Set your rates Cons ● Selling yourself ● Responsibility & discipline ● Time management ● Emotions Successful Freelancing Freelancing is not for the faint of heart, but it is worth your best shot!F
  • 26. Tools of the Trade ● Text Editor (vim, Emacs, TextMate, IDE) ● *nix server management & working in the UNIX shell ● Ruby will become your best friend ● Ruby on Rails framework (and alternatives: MERB, Sinatra, Ramaze, Rango) ● TDD & BDD ● HTML, CSS, HAML, SASS, LESS ● VCS
  • 27. ● Job boards o http://jobs.37signals.com/jobs o http://www.authenticjobs.com/ o http://jobs.rubynow.com/ o http://ruby.jobamatic.com/a/jbb/find-jobs ● Contributing to open source ● Learn how people hire o http://blog.ritirisi.com/2008/06/17/15-questions-to-ask-during-a-ruby- interview/ o http://www.rubyinside.com/11-tips-on-hiring-a-rails-developer-662.html o http://www.aaronsw.com/weblog/hiring o http://news.ycombinator.com/item?id=549291 o http://workawesome.com/your-job/how-to-get-hired-at-a-startup/ Finding Clients
  • 28. ● Focus on building your profile (personal brand) o http://www.linkedin.com/ o http://workingwithrails.com/ o https://github.com/ ● Create a website or blog o http://www.useit.com/papers/webwriting/ o http://www.alistapart.com/articles/writeliving/ ● Get involved in the community o http://www.railsbridge.org/ ● Write a lot of emails to employers Get Your First Project
  • 30. ● Get some rest ● Take a break ● Meditate ● Go for a walk ● Don’t overeat ● Take up a non-computer-related hobby “You should be well-balanced. Computers are great and everything, but you should definitely have hobbies that are completely unrelated to computers. In the last two years I’ve taken up both wood carving and string figuring, and they have helped me immensely in recovering from burn-out.” - Jamis Buck Getting Perspective
  • 31. Success ● “Everything you write is crap, so always try to improve yourself.” - Dirkjan Bussink ● Hard work is the secret to success ● Passion is critical; it makes or breaks any endeavor ● Love what you do ● “Never let anyone (including yourself) convince you not to do something that will make you happy or fulfilled.” - Yehuda Katz Decide how good you want to be; be patient and relentless.

Editor's Notes

  1. To stay efficient, we need to coach people by channeling their learning with a specific goal in mind and specific technology.
  2. Can be tough for a beginner to separate Ruby the language from Rails the framework. Proper code placement may be obvious to an experienced developer, but a beginner could end up with fat (or obese) controllers or overly complex views. To use Ruby in a smart way with Rails, you really need to understand the OO model properly.
  3. this might be your section intro slide for the ‘oh, before you learn ruby, you need to ...’ section
  4. weworkremotely.com careers.stackexchange.com