How did you become good at back end development / Ruby on Rails?
My introduction to Ruby on Rails was a "complete course" on Udemy and reading Michael Hartl's book. A year's worth of dedicated practice later, I'm still struggling with my skills and understanding of back end development with Ruby on Rails, specifically being able to write unique code (not just cookie cutter cookbook stuff)
Can anyone suggest learning resources, books, videos, self-challenges, to become a more competent back end developer? How did you get better at it? I feel like I'm conceptually missing a lot.
If you can share your own journey too, that would be great!
You'll hear this a lot, but it really is what works - I honestly just stopped looking for how-to books / videos / tutorials and just started doing. I started with simple proof of concepts like building a simple application that lets me enter some numbers in, manipulate them in the backend, then redisplay it on the front end. Then just grew the complexity from there. Google is my best friend - if I don't know how to do something, I google it - and google it - and google it until I have read over enough "stuff" to start cobbling it together and finally make it work. If I still can't answer it, I shut down and come back to it tomorrow - and 9/10 times I answer the problem within the first hour of getting back to it.
I think for me the biggest thing has been understanding just how deliberate everything is in programming. There are very few things that "just happen" and instead took quite a bit of thought and some degree of foresight to implement a particular feature. So if you look here on this page, just the reaction feature alone can be a pretty complex beast relative to how simple it's functionality is for the user. All we have to do is click the little smiley face and we're presented with a few choices to select how we want to react, click it - and boom - your reaction is recorded. However, on the backend, all the gears that get turning just to make that sequence of events possible is a pretty impressive weaving of objects. There's helper methods, controller actions, model methods, associations between models, routing, etc... just for that one simple thing!
The thing to realize is that you'll never reach a point of understanding to where you're able to say "eureka! I now know how to program!" and ride off into the sunset in your rolling office chair programming away. That's just not the way it works. There is WAY too much information to ever fit inside any one brain. Instead, what you have to learn is general concepts and from there, how to ask the right questions. So while I use arrays all the time, I hardly have the ability to learn all the methods that go along with enumerables - but I know where to lookup enumerable class methods and I have a general idea of what I'm trying to accomplish with my array - so now it's just a matter of me reading over the docs to find the method that will let me manipulate my array the way I want to for my specific use case.
As for resources, GoRails, of course, should be #1 on your list! All of Chris' series are phenomenal and will really help you gain that general understanding you need to know before you're able to start a new project. I recently found CronDose - https://www.crondose.com/ which has some pretty neat mini tutorials for specific functionality that is really great. Outside of that - Google! If you can master the question then you can master just about any problem you're going to face.
Good luck! :)
Jacob, thanks for replying!
Yes yes, I totally agree. Time spent just doing it has helped me get to a place where I'm able to build things I didn't think I could build, even just 6 months ago.
I've had many moments just grinding away, and then finally I'll see it spit out some html on the other side and I'm like "halleluyah!", and then I can put that particular problem in my tool chest of knowing how to solve that.
I think what you said about never arriving at the eureka! moment of complete confidence was good to hear. Because that's kind of what I've been striving for. My thought has been "If I'm a really great developer, I should be able to go from an idea to implementation without all these aggravations along the way." But maybe that'll never happen, which I should just get used to.
Recently, I've thought of maybe taking a dive into the fundamentals of object-oriented ruby programming and really starting to be a better rubyist in general(without RoR), which is something all the rails books kinda glossed over.
"If I'm a really great developer, I should be able to go from an idea to implementation without all these aggravations along the way."
Jacob hit the nail on the had but I had to chime in here. The aggravation never truly goes away. Imagine all the frustration you felt 6 months ago that you no longer feel because you've made great progress. Now you have leveled up and face a whole different set of frustrations.
As time goes on and you become more comfortable and confident as a developer you will still have frustrations and be potentially aggravated, but you'll have the tools and knowledge to help you mitigate "hitting the wall" much less.
Speaking for myself I've only been doing this for a little under 5 years and there's days where I just can't figure things out. 99% of the time it's me overanalyzing the problem and trying to break conventions instead of following them. Sometimes it helps to take a step back from the problem as Jacob suggested and come back to it another day/hour/etc. Taking a break is good for you and will help you recharge your batteries to come back and attack whatever it is that you were stuck on.
One thing that I cannot stress enough is learning Ruby. Rails is Ruby afterall so having a good handle on the language makes understanding and consuming the framework that much easier. When I first started I was writing so much Rails and almost zero Ruby so it got to the point where I was good at Rails but had no clue how to do simple things in Ruby.
I was fortunate enough to have Chris to give me a wakeup call and he told me I really needed to work on my Ruby to progress. So that's what I did. I still wrote Rails stuff but I started doing pure Ruby exercises to gain competency. After about 6-9 months a strange thing happened. I had competency in Ruby but Rails became so much easier to wrap my head around. So I would highly advise you diving into Ruby and gaining a better comprehension of the language.
Besides crondose.com which is excellent, I'd suggest picking up the Pickaxe Ruby book (you can probably find it cheap online used). Also once you are comfortable with Ruby I'd definitely recommend a subscription to Ruby Tapas. Avdi Grimm is really an excellent Rubyist and definitely one to learn from. Once your chops are up to par then I'd implore you to explore other things like Rubykoans, katas, and hackerrank challenges.
One particular exercise that Chris and I went through was a game called Ruby Warrior (google search for the URL). It's a game which forces you to write enough Ruby to advance your character to the next level in the game. Not only is it challenging but it's a lot of fun.
Anyways, sorry for writing a book but I figured I'd chime in and validate what Jacob said plus give my perspective on things.
If you ever have any questions please feel free to ask on the slack channel or hit one of us up via DM. GoRails is a friendly place full of brilliant, hungry folks who want to help!
Shakycode, thanks for the response!
I'm definitely going to concentrate on getting better at ruby. Ruby warrior looks awesome! Right up my alley. I've written down the resources you mentioned, I'll start with ruby warrior and reading a ruby book.
I guess it's a good thing that struggling should be considered the norm. It at least validates that the challenges I've faced so far are just part of the role of being a developer, I'm still doing it right.
Sometimes it helps to take a step back
Absolutely. There's something about a good nap or a night of sleep to just let your brain process it, and get some fresh perspective on it the next day. Been there for sure. I'll definitely reach out! Beginners could always use a buddy :)
wow great talk will love to see more dev. talk like this. thank you all.
This is a great question and one that probably could use an in-depth reply from me other than this, but i'll try and keep it short because it's late and I should be in bed..
If you're struggling with writing code not from a tutorial for instance, I found the best thing for me to do was to build more projects. One project I did when I was somewhat new, but wanted to break away from the tutorials was sending group text messages from my app, and then give myself the ability to schedule messages to send in the future.
You can build simple apps that build on the knowledge you have from the tutorials and just every time you do a new project you try and expand the knowledge and you'll pick up more than you think.
So really my biggest piece of advice I can give is find a mentor of sorts, for me it was @shakycode and Chris and a few others. Also many in the slack channels as well that have helped me a lot the past 2+ years I've been learning/programming. Don't expect a mentor to just give in and give you an answer right away though. Many times I solved my own question by having to write out the problem I was trying to solve and the steps I've taken before I found a workaround.
I recently got my first development job in September after 2 years of not feeling ready but finally jumping in was totally worth it. The end result of learning to program is worth all of the fustration you will encounter on a day-to-day basis of feeling the struggle.
Just today I spent a long time working through a problem I had at work, but once you break it into smaller steps it is a lot more managable.
Protip: I know others have mentioned it, but pick up on more Ruby instead of some Rails stuff. Rails is just ruby, so if you pick up on trying to do more with ruby it will go a lonnnnnnnng way.
It's not about having all of the answers but being able to find them IMO.
-- Also LOL @ myself for "i'm try and keep it short"
I would agree with others here, Google is a massive help. But Chris has built a fantastic comminuty here at GoRails along with a wealth of amazing resources. With that I would say never be affraid to ask questions, there is always someone out there who can provide you with the help and advise you are after.
Don't give up, keep going!! Remember you have a whole community here to help and get you through the times where you keep hitting your head against a wall! haha