Getting into Ruby on Rails
I had a friend message me today, fairly out of the blue, saying this:
“Right, I think I'm sick of mechanical engineering. How do I get into programming and software engineering?
Can I learn Ruby on Rails myself and get started or should I do a part time course?”
That’s not a small question, and it doesn’t have one answer. There are many, many resources available for learning programming, but which ones are good, and where do you start? This is just my opinion on a starting direction for someone who has the aim of becoming a Full Stack Ruby Programmer.
Understand a bit of the landscape
What is Ruby? What is Rails? What even is this?
Fireship.io is a great resource generally and this video is fantastic. It covers a great selection of the basic concepts.
Some other shortish video suggestions
How to Learn to Code (5 Minutes)
Fireship: HTML in 100 Seconds (3 Minutes)
Fireship: CSS in 100 Seconds (3 Minutes)
Fireship: Ruby in 100 seconds (3 Minutes)
Rails 7 introduction by DHH (35 Minutes) You won’t understand it all at the moment but its cool to see I think
Fireship: Git in 100 seconds (2 Minutes)
Fireship: On Git and GitHub (15 Minutes) Good to know about and one that you’ll revisit later
Fundamentally, don’t be afraid to google. Asking questions is good, there is a lot of knowledge out there and no one knows even close to all of it. There are also a LOT of acronyms and domain specific language (DSLs are even a programming thing!). If you don’t know something, google it. Googling well is key to success!
Some things that might be useful to know / google.
These are not things that you must remember, more things that you’re likely to come across on your journey.
SRP, DRY, KISS, MVC, SOLID, ERD, SQL, IDE, API.
Find Some Resources
I’ve just discovered rubyandrails.info which covers the vast majority of what I talk about here, and a lot more, and is all in one handy succinct place! If you do nothing else, bookmark this!
My speciality is Ruby, so there is definitely going to be a Ruby twist here. There has also been a lot of talk in the Ruby community recently which is great, so if you like the idea of getting into Ruby, now is a great time to do it.
There are loads of options out there for getting into programming; you can do degrees, you can do boot camps, there are online and in person courses, there are a lot of youtube videos and everyone has a different opinion on what’s best. The answer, as with almost everything in the software world, is “it depends”. There are lots of different
First Ruby Friend is a new mentorship programme and you should definitely sign up.
Join r/learn programming and ignore almost everything on there but read their getting started guide
Ruby Learning Resources / Blogs
- Remote Ruby
- Ruby for All (focused for juniors)
- Code with Jason (currently, sadly, on an indefinite hiatus but the back catalog is great
- Ruby on Rails Podcast
More from Ruby and Rails Info
Just check out this list on rubyandrails.info
I've put together a list of pretty great Ruby and Rails accounts that I think are good follows. Ruby and Rails
While there are a lot of opinions out there for how to get started with coding, programming and software development they all agree on one thing. Learning is much easier when you’re trying to build something to solve a problem. Every time I’ve followed a tutorial I’ve tried to do my own thing with it, never following it verbatim. While this has caused me a load of headaches it has always helped me gain a better understanding of that new piece of technology that I’m trying to implement.
Gain experience by building something. My suggestion would be to start with a personal website. It’s a good way to start, you can do it with just HTML and CSS. It’s also a great platform to log your experiences and iterate on.
Build it to run locally first, then get it live on the web (Netlify or Cloudflare Pages), then get a custom domain (Cloudflare), then get it on a remote code repository (GitHub), then configure automatic deploys when you use Git to push your code changes to the remote origin. Don’t worry if all those words don’t make sense to you just yet, they will in time.
Once you have your own website, the next challenge is to find something more meaty to build, a bigger problem to solve. The first thing I built was a static HTML website (which if you look really hard for you can still find), after that I built a Ruby on Rails app to help find and share wild van camping spots. https://VanSpots.uk is still alive today and was a great first project. It was a fairly simple CRUD, MVC web app.
Find a problem you want to solve, and start small. Build something simple that works as quickly as possible and iteratively, progressively expand and improve it. Remember, you are not alone. There are plenty of people willing and able to help. #buildinpublic on twitter has a load of other people building things in public (and quite a lot of BS, but it is twitter after all)
Everyone is different, and the approaches I’ve discussed above might not work for you. Importantly, that’s not just okay, that’s great. Programming as an industry needs more diversity. For some people building something isn’t the way to go, you might get more consistent satisfaction from debugging and fixing problems, that’s amazing if that is the case. You might have a preference for tinkering with embedded systems - Building an air Quality Sensor with Ruby on a Raspberry PI is on my list to try at some point!
If you have the time and ability to be able to commit to a coding bootcamp, they are an excellent way to jump start your career. The hours that you put into coding during an intensive bootcamp are roughly equivalent to the number of hours you’re likely to need to commit to learning on your own, just compacted into a timeframe measurable in weeks. There are lots of bootcamps available, and as with all of these things, it's important that you work out which one is going to work best for you but Le Wagon and Makers both come highly recommended.
There are a LOT of online courses. In my experience they’re all very mixed in terms of their quality. Coursera, Pluralsight, Free Code Camp and others all offer a vast variety of different courses. GoRails, The Odin Project, and The Pragmatic Studio all offer ruby on rails learning resources which, from my experience, are really good. As with all of these, YMMV and I would recommend exploring a few of the trials and seeing what gels with your learning preferences the best.
Your journey into tech will not be a short one. As with any new skill learning it will take time, patience and persistence. Personally, I think it's absolutely worth it. If you’re at the start of your journey, 100 Days of Code is worth investigating. 100 days of code is a challenge to what it says on the tin, write code every day for 100 days. It’s great for habit forming, and there is a great community of others who are doing the same thing. They’re website has everything you might need.
Finally, get involved with the community. There are strong communities around every aspect of software development. Share what you’re doing with your friends or followers. Engage with people who are building things that look interesting. Help where you can with open source projects. Ask questions and make suggestions.
Most people will be willing to help and excited to engage. I know I will be!
This is just my thoughts on your starting point. It’s not a short journey, but I really feel as though it will be a worthwhile one. If this was helpful or if there is anything that you think I’ve missed please let me know!
How we got into tech
After dropping out from an engineering degree and spending several years working in retail customer service, and a couple as an estate agent, I was lucky enough to have the opportunity to go back to university to study computer science. The degree course was really interesting, it taught a lot over extremely valuable approaches to learning, as well as some foundational concepts. I don’t use much of the other course content in my day to day job, and I think that there is a lot of room for modernisation and teaching more valuable tools for careers in the industry over novel languages such as Haskell and Prolog. The degree did provide an opportunity to learn a little HTML, CSS, Python, databases and core Web App concepts. My first job was a developer advocate, doing a little bit of coding and a lot of engagement. Since then I’ve spent time doing DevOps and a lot of web application development.