Learning Ruby-On-Rails at General Assembly: One Year Later

By

r_SaIvTYoQTzmbgz5NFMP1-tGIaLzHX9ANu0Z_XHXRI

It was mid-November last year that I graduated from General Assembly’s Ruby-on-Rails backend course.  Since then, I’ve built and launched my first startup, a marketplace for conference videos, called Xavy.

Before joining the course, I had massive reservations about whether I would actually be able to code.  I’d tried and failed to learn independently at least three times before.  I have always studied humanities subjects and avoided logic or maths wherever possible. My family and friends thought I was joking when I told them what I planned on doing, the response generally being “but you’re not remotely technical!”

Well, I took the course and succeeded in learning to code, so thank you GA for helping me learn the technical skills I needed to start executing on the vision I had for Xavy.

However, you can’t learn everything in 8 weeks, so here are some of the technical lessons I’ve learned since graduating, which could prove useful to anyone else taking the course:

There’s no substitute for hard work.

If you expect to turn up to class, do the 2 x 2 hour lessons each week and be a decent programmer 8 weeks later, you will probably not get the results you want.  I put in a lot of additional hours between classes, and particularly in the early days, it’s important to build your ‘muscle memory’ for the key concepts until they become second nature.

Don’t rush.

Take the time to think through how relationships should be built between your models; don’t just add in a gem because it seems like the fastest solution to your problem without thinking through all the alternatives; don’t try to start and complete a task 10 minutes before bed or leaving for work.  It will end in tears.

Learn by doing, and focus on a specific outcome.

For me, not having a natural grasp of logic or math, it’s almost impossible to just ‘get’ programming concepts or read about it and understand how it can be applied.  The only way for me to learn is to think of an outcome I want to achieve, read about how to achieve it, and apply it as I go.

Try to avoid gems where you can.

One of the main reasons I learned RoR was because I thought it was amazing that I could drop in huge bits of functionality developed by someone else with just a few lines of code.  I added gems for everything in the beginning.

Over time though, I’ve realised there can be major drawbacks to this approach.  They open up your code to a lot of dependencies that can crash your app; they can conflict with one another and your existing code; they’re a pain to remove or alter if you want to evolve the behaviour of your app a few months down the line.

Learn JavaScript (and CSS and HTML) if you can.

Knowing a backend language is incredibly powerful, but it’s still only one-half of the story.  I increasingly find I need a better understanding of javascript/coffeescript to achieve some of the functionality I want Xavy to have.

If you have the time and money, I’d strongly urge you take the frontend course at GA as well, as it compliments the backend knowledge you’ll develop and make you 10x the coder.

Git is a powerful tool.

Try to get into a good habit of creating new branches for each new feature you want to develop, and committing your work frequently.  Read up on how git control works and use it to protect and preserve your working code base.

Get into the habit of TDD as soon as you can.

If you get used to coding without first writing tests, it’s really hard to force yourself into the habit.  There’s rarely a day goes by that I don’t wish I had a full test suite for my app, as it would now be saving me hours of time and a lot of anguish over whether a change I make in one part of my app is going to break another part of it.

As the code base has gotten larger, my need for tests has grown, but the pain of writing them all has also increased! That’s why it is best to start from the very beginning. 

Ruby is your friend, so get better acquainted.

Rails is an incredible framework, and provides the newbie developer a huge amount of magic to achieve things with only a little ruby, but the underlying language you’ll be using is ruby, and the better you understand it, the more you’ll be able to achieve with rails.

Logs are a treasure trove of information.

I never develop without having a tail of my developer logs open at the same time, as it tells you what’s going on in the app, and will help you quickly understand why something isn’t working or a particular error is being thrown.

Combined with a (recommended) gem called better_errors, and the logger.debug method, and you shouldn’t have to sit there for hours scratching your head trying to figure out why things aren’t working.

Ask for help.

Finally, don’t be shy about asking for help! It’s amazing how much help others are willing and able to provide a new developer.  Most of the time, it’s not that you need them to tell you the answers, but they will be able to point you in the right direction, or talk things through with you logically so you can better frame what you’re trying to achieve.

Last but not least – enjoy your newfound skills!

The course I took at GA gave me all the core concepts I needed to become a competent programmer and build a fully functional video marketplace.

However it is only the beginning.  If you really want to become a developer, you need to keep pushing yourself, keep learning, keep practicing, and most importantly, keep enjoying the challenge by building new things and revelling in the fact you can now build an entire website, when a few weeks ago blocks, arrays, hashes and variables were like a foreign language!

Interested in our Backend Web Development Course?

Get More Info Here


unnamed

Mark Walker is the co-founder and CEO of Xavy, the destination for business videos, on demand, from the worlds best events. He is responsible for the product roadmap and content strategy. He was previously a Portfolio Director at Clarion Events where he led sales, marketing, content and operations with overall P&L responsibility for their Gaming Conference division.