As developers, we often talk about the importance of learning. Learning is so important to us, that it's worth persuing ways to improve the way we learn.
One way to become a better learner is to master the reverse: unlearning. Not the ability to completely forget, but the ability to set something aside for a brief moment.
When we learn a new language, framework, or tool, it's hard not to dismiss new ideas based on our existing opinions. It's the mental baggage we carry along all day.
What we've established as antipatterns in tool X's, might be shiny tool Y's bread & butter. That doesn't mean we should dismiss tool Y. Ideas on their own are rarely good or bad, they need to be evaluated in a certain context.
One of my favorite articles about Elixir, Functional Programming is not weird: you just need some new patterns, talks about this.
If you don’t know Elixir, or if you struggle with FP patterns, then this probably looks like exactly the sort of magical incantation that annoys you. You’re thinking “Look at that: it’d take me an hour to solve the puzzle, and when I finished it, I’d have code that would never make sense to me again.” And you’d be wrong. To someone who is experienced with Elixir (or another functional language), this code is quite readable because it uses a few really common patterns that any Elixir dev will have in their back pocket after awhile.
Just because it looks weird or complicated to us, doesn't make it weird or complicated by definition. It looks icky because we're trying to place it in a context we've already established, but the trick is to place in a fresh context.
It's empathy of some sort, the capacity to understand or feel what another person is experiencing from within their frame of reference, but towards ideas instead of people.
Learn to let go of your experience, just for a brief moment, and you'll become a better learner.