As someone with a bit more of a decade of Ruby experience: meta programming can be very confusing for native rubyists, too. There is a place for it (my personal take would be that this place is usually libraries/gems, e.g. if they need to be flexible to adapt to the consumer’s project), but it’s usually not code that needs to „convey a story“ (usually business logic) or needs to be debugged/observed.