I get asked this question a lot from developers I coach. Or I get the question in it’s other form, “So how do you learn to write clean, uncoupled ruby?” Or the other question, the one I tend to hear from people who disagree with me… “Why do you have such strong opinions? How did you choose your opinions?”
The 3rd form of the question I will answer like this. I did not choose my opinions… They chose me. Every single one of them was either me losing an evidence and reason based contest of opinion, and the other was experiencing developer pain but not having the solution. The solution was this list below for the most part.
A path to becoming a great Ruby programmer
1.) Get an ongoing mentor, someone smarter and further along in your craft then yourself.
2.) Watch EVERY talk, screencast, recorded pair coding session, and presentation you can find on Ruby, Idiomatic Ruby, Functional Ruby, and Test driven development.
3.) Buy every episode of Destroy All Software, and non-dated PeepCode (which can now be found @ PluralSight), and subscribe to RubyTapas and Thoughtbot Learn.
4.) Listen to Ruby5 and The Ruby Rogues. Buy the books and ebooks from authors like Corey Haines, Avdi Grimm and other people starring in this post.
5.) Search for articles, books, videos, and debates that feature Uncle Bob, Martin Fowler, Kent Black, Ward Cunningham, LISP, Homoiconicity, and the Core/Thread problem.
6.) Pair constantly with different people. Make a “pair trading network” where you will trade pairing hours with other developers. Ask lots of questions.
7.) Don’t copy/paste EVER (until you are doing it in VIM)
8.) Learn VIM, watch every ThoughtBot Art of Vim screencast series. You will notice that the best developers tend to use Vim or Emacs. This is not an accident!
9.) Write CODE THAT INTERESTS YOU! Code all the time. Write small things, write big things, write refactors, tests and patches for OSS.
10.) DONT PLAY VIDEO GAMES!
11.) Spend that time you would have been grinding for some fake shit, by grinding your ruby skills.
These are the things I did since 2007 when I stopped being someone who dabbled in Ruby while being a Microsft Sr. Engineer (C++/C#/COM+/HELL)and became a full time Rubyist, and in my opinion, it has MASSIVELY paid off in my life and my career and my code.
These videos have done more to change the way I code and think than anything else in 5 years. Seriously.
- Bernhardt: Boundaries
- Bernhardt: Deconstructing the Framework
- Bernhardt: The UNIX Chainsaw
- Orenstein: Live Coding w/ Ben
- Orenstein: Refactoring Good to Great
- Orenstein: Expert Level Vim
- Weirich: Ynot - Adventures in Functional Programming
- Weirich: Decoupling from Rails
- Weirich: Writing Solid Ruby Code
- Weirich: SOLID Ruby
- Weirich: The Building Blocks of Modularity
- Weirich: The Grand Unified Theory
- Haines: Fast Rails Tests
- Haines: Yay! Mocks!
- Haines: RailsConf2013AU Keynote
- Jessitron: Functional Principles for OO Development
- Shaughnessy: Functional programming and Ruby
- Wampler: Better Ruby through Functional Programming
- Ford: Functional Thinking with Neal Ford
- Wynne: Hexagonal Rails
I will post a similar list of books soon!