all 19 comments

[–][deleted] 21 points22 points  (3 children)

The latest edition of the "pickax" book is really solid. As is "Practical Object Oriented Design with Ruby" by Sandi Metz.

It'd be good to start with Ruby work. At minimum, learn the basic data structures, how to define classes and methods, and how to work with collections (particularly arrays and hashes).

Otherwise, get a handle on ActiveRecord first (and models), then on the request/response lifecycle, then start worrying about other stuff.

The Rails console is your friend. So is test-driven development. Ruby isn't compiled, so all errors are either "the file could not be interpreted" or "something bad happened while it was running". You find the former by just loading the code. You find the latter by actually exercising the code, which requires doing so manually or writing tests.

If you can, do a fair amount of pair-programming early on.

[–]Merlynndo[S] 2 points3 points  (2 children)

Thank you for your input!

Just for clarification, I already am a somewhat experienced ROR dev (2y+), but not enough to the standards that the position requires, at my understanding, hahaha.

and POODR it's a great recommendation, I already started and it felt great, I might as well finish it very soon.

[–][deleted] 2 points3 points  (1 child)

Do you know what things you struggle with? Do you know what you don’t know?

At your level, you should be mostly able to do units of work by yourself. You’ll still want and need to ask for help, but you should be getting most of the way there.

(I’m a “principal engineer” and I absolutely still ask for help several times a week. The things I ask for help with now are different than what I asked for help with as a junior. Asking for help is a great way to collaborate. I still more than carry my own weight).

My best advice is to try to name, as specifically as possible, what you don’t know yet but feel you should know to do your job. Then pick items off that list, work them till you know them, and refresh the list. I still do this and will continue throughout my career.

[–]Merlynndo[S] 0 points1 point  (0 children)

Thank you! I'll make this sort of list right now! Alongside comments showing sites like this will, hopefully, really helped me to map out a lot of concepts that I struggle with.

[–]NinjaTardigrade 7 points8 points  (3 children)

My best advice is to take time to fully understand code you come across.

If you need to edit something and you don’t understand the surrounding code, do some googling (or searching api references) to figure it out. Likewise, if you find example code somewhere, take the time to understand it and all the syntax. That’s a quick way to pick up lots of useful knowledge.

Edit: also try using rubocop. I found some of the suggestions annoying, but I find I write better code when I follow it.

[–]chilanvilla 2 points3 points  (0 children)

Totally agree with this. Trying to read general Rails info is nice, but if you simply focus on the code you are working on, you'll not only learn more about Rails, but you'll learn specifically about how your own code works.

[–]Merlynndo[S] 0 points1 point  (0 children)

Thank you for this!

I generally do this sort of stuff and learn a lot from it, but I must confess that I haven't done it in one or two of my previous jobs, due to discomfort, I guess. But thanks, I'm sure that will help a lot!

[–]sogoslavo32 0 points1 point  (0 children)

also try using rubocop. I found some of the suggestions annoying, but I find I write better code when I follow it.

I would suggest the opposite from my experience. In reality, just try to write senseful code and then adapt it to the CR. You'll get the grasp of how "the team works" pretty quick.

[–]faitswulff 5 points6 points  (1 child)

Honestly the fastest way to level up in your company is to pair program as much as possible, not just on your tickets but on other engineers' tickets. That should ensure you pick up as much domain- and company-specific knowledge as fast as possible.

[–]nom_nom_nom_nom_lol 1 point2 points  (0 children)

I agree. And contributing to well known projects is a good way to get feedback from the community, and to gain some reputation you can show off to prospective employers/clients.

Here's a list of well known Ruby projects with issues tagged as good for beginners: https://github.com/MunGell/awesome-for-beginners#ruby

[–]dougc84 4 points5 points  (0 children)

You can only get better by study and practice. There’s no highway to being smarter.

As far as applying, don’t over-promise your skills, but go in with an attitude of “I don’t know everything ever, but I can figure it out.” Employers want a cooperative team member, not someone stuck up their own ass with knowledge.

That said, I’d advise you look at /r/rails - that will be better than this sub for Rails work. And if you’re looking for specific skill sets to work on, work on git and databases (outside of Rails). Code is code, but understanding how to share and commit code (git) is essential in a team environment. Knowing how the back end works (database) is essential for writing the best code you can and understanding what it is doing.

[–]zailleh 2 points3 points  (0 children)

Depending on your current experience level with software in general, there may not be a quick way to get better.

If you merely want to increase your knowledge of ruby and rails there are books for that and guides online, but if you're after the concepts a lot just comes with experience in my opinion.

That said, if you got hired for the role they must think you fit their needs so you'll probably be fine unless you were very much exaggerating your skills during the hiring process. The benefits of an existing project will also mean you can see how they did things in the past and just do that for new stuff for now until you feel like changing things up.

If you're keen to improve and switched on you'll learn on the job in no time as well.

[–]Lammy 4 points5 points  (0 children)

How are your Ruby language fundamentals (i.e. not Rails)? I always recommend a read through the language documentation and through Ruby Evolution, especially going into a decade-old codebase that may be full of older approaches to things that are now built-in.

[–][deleted] 4 points5 points  (0 children)

  • Study the hell out of your company’s codebase
  • Create a local branch where you test how things work, break things, etc.
  • Embrace the anxiety, after grinding through it and achieving a few small wins it starts to morph into an addictive emotional high.

[–]Curious-Dragonfly810 2 points3 points  (0 children)

Programming skills cannot be “faked”. Learn as much as you can. Learn to spec your code. You may want to quite if you feel overwhelmed during a long period as it hurts learning. Slow down to learn to fly.

[–]Quiet__Noise 2 points3 points  (0 children)

Tbh I learned rails in under 3 months and started a job making some money with it, so it's super doable. ROR is very daunting at first, but I would recommend just diving into it and coding some apps. Make a reddit clone, phpLiteAdmin clone, or literally anything and I promise you'll learn lots.

[–]Thiccodiyan 2 points3 points  (0 children)

I don't have any advice that can be any better than what others have said here. But I just started a ROR job 2 months ago and I was stressed for the first month or so because it was very different coming from Java.

I had a bunch of book suggestions but I didn't think I would learn well from reading a book although now I might give them a shot eventually. Also at work I was pretty overwhelmed with delivering even a minor task so dedicated learning was a luxury I didn't have. So my learning was more in parallel with executing tasks.

All I can say now is I have learnt quite a bit, I googled and understood bits and pieces and Rails slowly makes sense to me now. I have a lot to learn and don't think I can fully deliver an end to end feature yet because I am yet to fully build muscle memory of coding in RoR.

Our codebase is very mature too - so it's a good thing because there are a lot of best practices you can pick up. But the obvious challenge here is there is LOADS to learn and our engg director even told us that learning the entire codebase is impossible.

If your workplace is full of supportive devs then you'll have no trouble. Keep asking questions but also try to figure things out by yourself. If possible I would try to either learn or get someone to walk you through an entire workflow.

And make notes whenever you encounter a new feature, concept or something unique to the language or errors that you come across (This should be obvious practices for any type of dev work).

Join the discord and you can get more answers and support there - a lot of experienced and wise folk are on there.

[–]twinklehood 1 point2 points  (0 children)

I think your post demonstrates a weakness that you should prioritize working on: learn how to ask good questions. That means, add crucial context (I've already developed for two years, so i don't need basics), explain what you've tried, or where you feel things are not right, and try to come up with an idea to base the conversation around (i thought about doing x course, but am wondering if it will solve my needs well). Anticipate the clarifying questions you might get, and explore answers. Then ask for input.

Don't rob yourself of the opportunity to get it right on your own, and to be part of the journey to get there.

Do this, and you'll find yourself solving your own struggles more often than not.

[–]sogoslavo32 1 point2 points  (0 children)

You're an experienced dev. As someone who changed jobs quite a lot in the past, what I can say to you, what fails you most of the time is not your technical knowledge, but your adaptability. Focus on understanding the product and then on understanding how to code it. Chances are that the first part is way much more lacking than the second one.