A Teacher’s Two Cents When Learning Ruby on Rails
When you are getting started in the industry, there are so many new topics, so much noise…it’s really challenging to filter out what is important.
After spending the last couple years of my life learning how to code, and looking back at all that I have learned around Ruby on Rails, I have noticed a recurring set of themes.
We tend to see things through the lens of our experiences. In my former life I was an educator. I see the world through the eyes of a teacher and learner. Through these optics, I believe that all things Ruby on Rails smartly fit into learning stacks. What is a learning stack?
A learning stack will trigger you to think about what you are learning in Ruby on Rails, couched in a long-term view. This will benefit both your current and future self, and thusly will remain relevant to you regardless of your level of seasoning or expertise.
Think of what you are learning in terms of these 16 stacks. These are the important areas to focus on. This will bring some structure to the chaos, and hopefully give deeper and more tightly bound meaning to what you are learning.
Stack 1 – Rails Errors
Rails error pages are FANTASTIC… when you understand what the heck that gibberish is all about.
This stack is for interpreting Rails error pages. We learn from our mistakes. This will likely not be the last time you see this particular flavor of error. When you get an error page, and something clicks in your mind, capture it. Translate what the error is really telling you. When looking at a Rails error with a mentor or senior developer, ask them to explain what they see in the error. What are the cues, the key terms and phrases, and how do they leverage this information to resolve the issue.
Stack 2 — Command Line
The command line opens the door to a whole new world. I just hope I don’t screw up my computer.
This stack is for interacting with this new interface called the command line. How do you navigate? What are the valuable commands you are learning? What do you want to remember about bash profiles? What about IRB and simple prompt? Accessing and using the consoles and editors? What about the terminal, and iTerm2, and Vagrant? How can you customize the experience to fit your tastes?
Stack 3 — Shortcuts
Don’t. Touch. That. Mouse. Wait, what?
Great developers can type at the speed of thought. As you learn the craft, you’ll want to begin practicing keyboard shortcuts for the programs that you use. Any text editor. Any program. Any interface. What keyboard shortcuts do you want to remember to help you increase your productivity?
Stack 4 — Databases
Isn’t a database just a spreadsheet? No?! Oh man!
A database makes a website a web application…don’t take this power lightly. How do I interact with the data? How do I get this data to interact with that other data? Why is it so hard to access the frickin’ data?! Wait, WHAT HAPPENED TO ALL MY DATA!?! There is much to learn, to remember, and to respect about working with databases.
Stack 5 — Online Resources
You found the needle in the haystack?! Don’t drop it… D’op!
There are 1.1 billion websites on the Internet. As you progress through your journey of becoming a Ruby on Rails developer, you will come across some great tutorials, blogs, solutions, articles, podcasts, sources of inspiration, answers to questions, etc. Once you’ve found these gems, you’ll want to remember them, and keep them handy.
Stack 6 — Tricks
You deleted 15 lines of my code, added two words and an exclamation point, and now it works…Dang it! How did you do that?!
Enough said. You will encounter many of these moments when working with other developers. You’ll hear people say things like, “Oh it’s just something I picked up along the way.” When you see a trick, write it down. You will want to remember them.
Stack 7 — Rails General
This is why you’re here, ain’t it? Then don’t forget this, that and the other thing.
You’ve probably been told that Ruby is a language and Rails is a framework, but truly appreciating that distinction takes time. As you progress you will sharpen your interpretation of what makes Rails, Rails. And as you become more aware of how you can leverage Rails to accomplish a given task, you will want to remember how to do it again in the future. This stack is dedicated to capturing these types of Rails framework revelations. Things that might be found in a Rails guide, if you were the author.
Stack 8 — Testing/TDD
Don’t we have some people for that? I’m “the people”? Dang it!
Testing is where the rubber meets the road. If your app works today, but not tomorrow, what’s the point? We all test in our own ways, but the industry has standards and expectations for this. And most employers have their own set of expectations around testing, which may pragmatically exceed standards. Testing can involve learning an entire body of new languages and methods. Testing should be learned early, and practiced often. Testing can be tricky, and the syntax is in flux, as this area is currently like the wild west of development. As you begin to figure out what is and is not currently working for you, you will want to document and remember it. This stack is dedicated to anything and everything around testing.
Stack 9 — Workflows
Workflows? Why you gettin’ all “corporate” on me?
Google defines it as “the sequence of industrial, administrative, or other processes through which a piece of work passes from initiation to completion.” Blah blah blah. Workflows are one of those things that you slowly start to define, for yourself, over time. They are relevant because, when developing with Ruby on Rails, you will begin to notice a number of repeatable patterns in your coding activities. Sequences that you have learned, maybe the hard way, that if a step is missed, or done out of order, it can cause unnecessary headaches, frustration, and wasted time. This stack is dedicated to capturing these small, medium and large collections of ‘ways you accomplish task xyz’.
Stack 10 — Cheat Sheets
Does this thing contain all the answers?
No! But a good cheat sheet can be extremely helpful at the right time. This stack is dedicated to compiled lists of niche information, related to Ruby on Rails. Cheat sheets that you have discovered around syntax, or testing, or rake commands, or truth tables, or whatever helps you to learn the content and to be productive.
Stack 11 — Troubleshooting
When something breaks, can I just raise my hand? Please?
Troubleshooting is a skill unto itself. The ways to troubleshoot problems are not blatantly obvious, especially for a beginner. And they are not taught alongside a curriculum. Like many things, you learn them through experience. As you work alongside other developers, you will gain exposure to the many tactics, methods, and approaches that people use to troubleshoot problems. You will definitely want to remember these!
Stack 12 — Git
What’s get? Oh…GIT. I don’t git it. Who’s on first?
As you will find, Git is no joke. Version control is paramount when professionally writing code, and Git is the go-to version control system for Ruby on Rails. The Git basics can be grasped quickly, but should not be taken for granted. Git also offers a much deeper and broader set of functionality that is extremely powerful, and can have a steep learning curve. This stack is dedicated to all things Git. Git commands, concepts, processes, Github, Git tools, resources, best practices, tutorials, etc.
Stack 13 — Ruby General
Learning Rails without learning Ruby is a bit like knowing how to fly a plane…on the ground.
Without Ruby, there is no Rails. Ruby is the backbone. It would be wise to have a reasonably solid Ruby foundation before adding on Rails. After that you will hit a certain point where you’ll realize that, in order to enact a desired feature for your web app, you’ll need to apply more advanced Ruby tactics. This will also come into play when trying to understand other developer’s code. As you move further down your Ruby learning path, your eyes will open wider to how much you can do with Ruby, and all the elegant and clever ways people apply Ruby to accomplish a given task. You will want to remember these. This stack is dedicated to capturing these moments of Ruby enlightenment.
Stack 14 — Gems
They already solved it AND wrote it? Well how much is that going to cost me? It’s free!?! Well heck yeah, sign me up!
There are times to use gems, and there times not to use gems. In either case, you will want to be educated when making these decisions. What have you learned when using a particular gem? What are those little steps that were not spelled out, or that were unique to your app, that you needed to do in order to get the gem to work properly for you? You will want to remember these little additions and subtractions for your next project.
Stack 15 — Other Languages
Stack 16 — Needs Answering
Why is my list of questions longer than your…
The one guarantee about learning anything, especially coding, is that you will have lots of questions. Questions are good. Questions are proof of progress. Likewise, unanswered questions can impede progress. If you have a question, and cannot get it answered right now, write it down! Now! And when you’re with your mentor or other developers, grab your list. Capturing all of your questions in one place makes it significantly more likely that all of your questions will get answered.
While you are learning Ruby on Rails, there is no way you are going to remember everything. And you shouldn’t expect yourself to. What you need to be able to do is quickly find and access the information when you need it.
I became so passionate about this idea that I created a web application to help store these important nuggets of information, in the context of these learning stacks. The web app is called Mind on Rails.
Mind on Rails is a knowledge exchange, note-taking tool, specifically for Ruby on Rails learners. It is a way to capture what you learn through your journey with Ruby on Rails.
To be sure, this profession can be a challenging one, and quite frustrating at times. That said, it can also be very satisfying and rewarding.
Be patient. Appreciate that it takes time. Seek out new ways to find answers. Save inspiration when you find it, and pull it out on rainy days. Share knowledge with others, pay it forward, and never stop learning.