1 min read

Reviews and Ratings: A true story

So, I’d recently picked up web development, and had picked Ruby on Rails as my language of choice. I’d been working on an app and was…

So, I’d recently picked up web development, and had picked Ruby on Rails as my language of choice. I’d been working on an app and was supposed to add a new star — ratings feature to it. Sounds simple, right? Nah, I learnt the hard way that it wasn’t.

I’d spent most of my development time trying out and using rubygems with reckless abandon. I mean, why solve a problem from scratch, when there’s a gem already built around it. So, when the time came to add the ratings feature, I went the usual way of looking for a suitable ratings gem to solve that problem. I found a bunch of them actually. But they were outdated, and not currently being maintained. To cap it off, the documentation for most were, uhm, not exactly friendly. That said, I spent a week or so, looking for a suitable gem, and came up short. I got tired, and considered dropping the feature on hold, or putting the project on hold entirely. It was exasperating, knowing that I hadn’t been able to solve the problem, after putting a lot of effort into it.

Me then

After a while, I gave up on looking for a gem to work with, and decided to build the ratings feature from scratch. I jumped from site to site, looking for a tutorial that would explain the concepts easily. Lost hope after a while. I was like, don’t these guys know that newbies read their work.

How I got through it

Eventually decided to check out some videos on YouTube and stumbled across one. The guy who uploaded understood me. Ended up following the tutorial, and built a complete star — ratings feature for the app.

What did it teach me?

To avoid being over — dependent on gems. Gems are cool and all, and help you avoid re — inventing the wheel, but it helps to actually make an effort to build from scratch once in a while, even if there’s a gem that does what you are trying to accomplish. It helps you get more experience with problem solving.