I share the same feelings as marcamillion regarding having the "veil" lifted on world affairs. I have a BEng in Aerospace Avionics (Electrical Engineering for air and space craft) but have always worked as a Software Engineer / Developer. After a few years of working full time (big multinational then small ~20 person company) I was wondering "there has to be more to life than this."
While reading online I came across recommendations to read this weekly magazine called "The Economist". It was super hard to get through at first: I didn't know the people, some of the countries, or the financial jargon. But I persisted and each week I'd go and buy it at the newsagent. I'd systematically read each issue from cover to cover. Those first ~15 issues looked like a rainbow; multicoloured post-it notes fanning out from three sides. Whenever I came across a person, word, country, concept I didn't recognize I'd write it on a post-it and affix it to the page. Later, I'd systematically revisit the notes and resolve my ignorance using Google + Wikipedia.
A lot of the time I didn't want to read the whole thing, only the Business, Finance, and Technology sections. However, I forced myself to read about issues in Sudan, or Kyrgyzstan, or politics in South America. I am now so much more aware of the way the world works, what's happening in world politics, financial markets, business, literature. As marcamillion mentions, acquiring this knowledge was liberating.
Programming: Persisting with Haskell until it "clicked".
Over the past 5 years I've revisited Haskell a number of times. Reading tutorials and books; watching videos. I "got" Monads as a mathematical concept, but didn't have a strong grasp of how and why they should be used.
On about 6th crack at it I just sat down and read code. Thousands and thousands of lines of code. Once I'd "groked" a concept from seeing how it was used in real world code I'd go and implement it from scratch. I'd recreate Maybe, then build the Monad typeclass, and finally implement the Monad typeclass for Maybe. I'd do this for Monad transformers, Monoids, Applicative, etc. This was really hard for me. Looking back I realise I was optimizing my learning by always pushing the edge of what I could do.
Over time I gradually became competent at writing Haskell as well as reading and understanding other people code. This additional understanding of functional programming has dramatically change my programming style. I now create a lot more immutable data types. In C++ I'll liberally use const, in Python namedtuples. I get frustrated when a language prevents me from easily mapping and composing functions. I really really value algebraic data types and use them wherever I can.
tl;dr Read The Economist and went to grad school. Learned Haskell and now use immutability and pure functions much more often.