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 SELF - Becoming a Rails Developer - The Rest of the Story

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 SELF - Becoming a Rails Developer - The Rest of the Story (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

WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benonimasabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...masabamasaba
 

Recently uploaded (20)

WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 

SELF - Becoming a Rails Developer - The Rest of the Story

  • 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