Phase 3: The True Depth of Rails Metaprogramming

Hunter Kolasa
2 min readFeb 8, 2021

Let me be honest. I left Phase 2 feeling fairly confident in my knowledge of Ruby and Sinatra but not without some residual confusion. Moving on to Rails in Phase 3 was a welcome transition that abstracted a large portion of previously hardcoded processes. With that being said, Rails is by no means easy. The level of abstraction and metaprogramming that can be accessed through Rails is astounding. Currently at the end of Phase 3, I am still left feeling as if I’ve only scratched the surface of what can be accomplished. Throughout this phase and portfolio project, simple google searches would launch me into a rabbit hole full of unfamiliar methods, abstractions and namespaced routes enough to make my head spin. I would find myself hours into research on a topic that started as a simple sessions login form, but ended with complex Devise/Omniauth integration requiring a full rework of code that I had only just become familiar with. As of this moment, I am rewriting significant portions of my Rails application while having to google roughly every other word I type. At the end of the day, I definitely enjoy learning these new streamlined ways to replace outdated/clunky methods but have to frequently remind myself to breathe as each new line of research opens up 15 other potential additions to my code.

Truthfully, the sheer quantity of information available on Rails and its myriad of compatible gems is overwhelming. It is exceedingly easy to bite of well more than you can chew, which inevitably results in a feeling of defeat and “imposter’s syndrome”. Fortunately, I am not so easy to back down from a challenge. When it comes down to a breaking point, which it already has three times this week, I just fall back onto a brute force tactic where I simply stare, research, pace around my room and aggressively pet my cat until I feel that I understand the psyche-breaking topic with decent clarity.

Despite all of the direct coding knowledge I have gained during this phase, I feel the biggest lesson I have learned is perseverance in the face of seemingly insurmountable challenges. I have a much clearer perspective on my own willpower and feel all the more confident that:

1) I must really, really enjoy software development, and

2) I am capable of approaching large sums of data and knowledge in a way that ultimately grants a crystal clear understanding on multiple levels.

I look forward to continuing to conquer all forms of development. In a bizarre, almost emotionally masochistic way, I can’t wait to encounter another brain-breaking problem. In the past, regular schooling and learning never really gave me any satisfaction. With coding and development, I can feel my knowledge base and problem-solving abilities growing with every passing day. For arguably the first time in my life, I enjoy the hunt just as much as the spoils and feel capable, collected and driven to improve all aspects of my life. People always talk about finding a constructive passion. Is this what its like?

--

--

Hunter Kolasa

⁍ Full-Stack Software Developer ⁍ Biology/Environmental Conservationist ⁍ Avid Computer Nerd⁍