Each programming language and API has a certain way that it wants you to write code. There are many different ways to approach problems and implement systems, and it’s much easier when you are working with the language/API rather than against it.
Learning a new language/API may sound very technical, but it feels very human to me. Another person (or people) designed the system and learning about it means learning about them. Every detail of the system communicates aspects of their motivations, experiences, and personalities.
Sometimes it’s clear that the system was designed to solve a specific problem. You can usually date when the system was developed, because it reflects what was feasable (on computer hardware) or fashionable (in programming circles) at the time. It’s also pretty easy to see when one developer left and another took over.
Many systems are effectively clear summaries of accumulated knowledge from decades of prior research and development, or years of consistent implementation. If you’re very lucky, you witness an intellectual epiphany embedded right there in the system design. It’s a great thing to share in.
I’m just recently started to form a good understanding of haXe and Flash (9+) and I greatly respect the many authors, designers, and contributors of both.